互联网架构“高并发”解决思路

2020年没写过啥内容,做一下知识回顾吧,标题可能有点“标题党”,见谅。

 

高并发的简易理解:保证系统能够同时并行处理的很多的请求。

高并发,高可用,高效率三个名词是个有侧重。简称“三高”,是系统架构设计的高级要求。今天侧重讲一下《高并发》。

 

高并发四大要素:

1-》响应时间:系统对进来的请求反应的时间,比如你打开一个页面需要1秒,那么这1秒就是响应时间。

2-》吞吐量:单位时间内处理的请求数量。好比你吃饭,每秒能吃下多少颗米饭。

3-》秒查询率:秒查询率是指每秒响应请求数,和吞吐量差不多(互联网领域)。

4-》并发用户数:同时承载正常使用系统功能的用户数量。最明显的应用案例是 即时通讯系统、多人联机游戏系统。

 

常见的互联网系统架构分层图:

提高并发能力的两种主要方法:垂直扩展(单兵升级SOLO),水平扩展(组团群殴)。

垂直扩展:

(1)硬件升级:CPU不够加CPU,内存不够加内存,磁盘空间不足加磁盘,机械磁盘换固态等。

(2)网络升级:网络带宽拉满,域名、静态资源使用CDN加速。

(3)软件升级:优化代码算法,减少逻辑处理循环,使用Cache代替实时查询,使用异步增加吞吐量,少用锁减少响应时间等。

(4)数据库升级:本地数据库换云数据库,增加数据库连接数,优化索引,优化sql,提升配置等。

在互联网领域由于时间重要性,在预算够的话,优先采用此类方法。业务快速发展重要性远超服务器升级费用。

 

无论怎么垂直扩展,终究会有极限的。(人是有极限的,所以我不做人了JOJO!不要问为什么会有这句话。)单兵升级在后期总会有瓶颈,同时费用与性能开始不具备线性增长了。所以水平扩展是高并发的终极方案。

有个实际案例:阿里云扩容以应对钉钉业务暴增。

实践证明,阿里云作为国内技术大佬。方法就是水平扩容。下面介绍一下我们在常见的互联网结构设计中,如何提高系统的并发数。本文会在多个层级提供水平扩展思路。

 

域名层:

这个属于我自己理解的,名字可能有些不妥。大家理解下。拿国民级应用APP《微信》的域名:mp.weixin.qq.com举例。依据业界公开数据,微信日活超10亿用户,这个并发能力世界顶尖。先看下域名这一块的处理(个人理解,远达不到专家水平。)

首先微信域名的解析到了多个IP地址上。其中还包含IPV6地址 。从源头将流量进行了初步拆分,同时访问网络也有优化,请求发起者会转交至最近的应用服务器处理,提高处理效率,减少网络请求时长。

 

2.web服务容器:

由于DNS解析已做了分流。这里不难看出,如果对应的IP地址是负载均衡地址或者是集群地址,负载均衡内部可无限水平扩容,使用一样的软件代码,系统配置,(可能涉及到session或者支付、授权等IP白名单问题,根据业务处理)就可线性增加并发量。同时还可根据设置优化nginx的线程配置,增加处理线程。也可设置代理服务器的端口配置,增加处理服务端口。

 

3.web应用及业务层:

使用微服务思路进行业务拆分,或者将业务板块集群化,通过统一的服务调度将业务分散到不同集群处理。本质上是在多个服务器上配置相同的业务模块然后,流量拆分到不同的服务器上。同时还可搭配使用消息队列和使用缓存进一步扩大接受容量(但不是同实时处理)。

 

4.数据库层:

这里就老生常淡的主从处理,读写分离。通过水平的添加只读实例快速提高大量的读请求。还可通过分库分表,将按地域或者按用户拆分不同的水平库,然后增对日益上涨的数据量采用水平分库。这里就十分考验数据库的设计和查询逻辑。这里会是重点,相比于用户访问是短平快,但是数据库的增长是不断累积的。后续将会专门在这个环节细讲。

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值