1 / 7
文档名称:

黑马程序员高并发解决方案.docx

格式:docx   大小:144KB   页数:7页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

黑马程序员高并发解决方案.docx

上传人:泰山小桥流水 2023/4/1 文件大小:144 KB

下载得到文件列表

黑马程序员高并发解决方案.docx

相关文档

文档介绍

文档介绍:该【黑马程序员高并发解决方案 】是由【泰山小桥流水】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【黑马程序员高并发解决方案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。.
黑马程序员:高并发解决方案
一、什么是高并发
高并发(HighConcurrency)是互联网散布式系统架构设计中一定考虑的要素之一,它往常是指,经过设计保证系统能够同时并行办理好多恳求。高并发有关常用的一些指标有响应时间(ResponseTime),吞吐量(Throughput),每秒查问率QPS(QueryPerSecond),并发用户数等。
响应时间:系统对恳求做出响应的时间。比如系统办理一个HTTP恳求需要200ms,这个200ms就是系统的响应时间。
吞吐量:单位时间内办理的恳求数目。
QPS:每秒响应恳求数。在互联网领域,这个指标和吞吐量划分的没有这么显然。
并发用户数:同时承载正常使用系统功能的用户数目。比如一个即时通信系统,同时在线量必定程度上代表了系统的并发用户数。
二、什么是秒杀
秒杀场景一般会在电商网站举行一些活动或许节假日在12306网站上抢票时碰到。关于电商网站中一些稀缺或许特价商品,电商网站一般会在约准时间点对其进行限量销售,因为这些商品的特别性,会吸引大批用户前来抢购,而且会在商定的时间点同时在秒杀页面进行抢购。
此种场景就是特别有特色的高并发场景,假如不对流量进行合理管控,任意放
任大流量冲击系统,那么将致使一系列的问题出现,比方一些可用的连结资源被
耗尽、散布式缓存的容量被撑爆、数据库吞吐量降低,最后必定会致使系统产生
雪崩效应。
一般来说,大型互联网站往常采纳的做法是经过扩容、动静分别、缓存、服务降级及限流五种惯例手段来保护系统的稳固运转。
三、扩容
因为单台服务器的办理能力有限,所以当一台服务器的办理能力靠近或已高出
其容量上限时,采纳集群技术对服务器进行扩容,能够很好地提高系统整体的并
行办理能力,在集群环境中,节点的数目越多,系统的并行能力和容错性就越强。
word资料
.
在无状态服务下,扩容可能是迄今为止成效最显然的增添并发量的技巧之一。
从扩容方式角度讲,分为垂直扩容(scaleup)和水平扩容(scaleout)。垂直扩容就是增添单机办理能力,怼硬件,但硬件能力毕竟仍是有限;水平扩容说白了就是增添机器数目,怼机器,但跟着机器数目的增添,单应用并发能力其实不必定与其体现线性关系,此时便可能需要进行应用服务化拆分了。
从数据角度讲,扩容能够分为无状态扩容和有状态扩容。无状态扩容一般就是
指我们的应用服务器扩容;有状态扩容一般是指数据储存扩容,要么将一份数据拆分红不一样的多份,即sharding,要么就整体复制n份,即副本。sharding碰到的问题就是分片的靠谱性,一般做转移、rehash、分片副本;副本碰到的问题是一致性性,一般做一致性算法,如paxos,raft等。
四、动静分别
动静分别,静态资源恳求与动向恳求分别,项目中需要接见的图片、声音、js/css等静态资源需要有独立的寄存地点,便于未来实现静态恳求分别时直接剥离出
来,比方nginx能够直接配置图片文件直接接见目录,而不需要经过tomcat。这样tomcat就能够专注办理动向恳求,操作数据库数据办理之类的。静态恳求***性能比tomcat高好多。
动静分别是指,静态页面与动向页面分开不一样系统接见的架构设计方法。
一般来说:
静态页面接见路径短,接见速度快,几毫秒
动向页面接见路径长,接见速度相对较慢(数据库的接见,网络传输,业务逻辑计算),几十毫秒甚至几百毫秒,对架构扩展性的要求更高
静态页面与动向页面以不一样域名划分
word资料
.
系统需要将动向数据和静态数据分而治之,用户对静态数据的接见,应当防止
恳求直接落到公司的数据中心,而是应当在CDN中获得,以加快系统的响应速度。
五、缓存
缓存之所以能够提高办理速度,是因为不一样设施的接见速度存在差别。缓存的话题能够扯几本书不带重样的。从CPU能够向来扯到客户端缓存,即从最基层向来到扯到最特近用户的一层,每一层都可能或能够有缓存的存在。我们这里不扯这么多,只说简单服务端缓存。此刻从几个不一样角度来看一下缓存:
①从成效角度。命中率越高越好吗?10万个商铺数据,缓存了1000个,命中率稳固100%,那是否是说,有99000个商铺都是长尾商铺?缓存成效评估不可以单看命中率。
②从回收策略。假如把缓存当成数据库同样的储存设施去用,那就没有回收的说法了(除非重启或许宕机,不然数据依旧有效);假如只储存热数据,那就有回收和替代的问题。回收有两种方式,一种是空间配额,另一种是时间配额。替代也有几种方式,LRU,FIFO,LFU。
③从缓存使用模式角度:用户直接操作缓存和db;用户直接操作缓存,缓存帮助我们读写DbB;
word资料
.
④从缓存分级角度。java堆内缓存、java堆外缓存、磁盘缓存、散布式缓存,多级缓存。
⑤从缓存使用角度。null穿透问题、惊群问题、缓存热门问题、缓存一致性问题、读写扩散问题。。。。。。
⑥更新方式。读更新、写更新、异步更新。
假如缓存集群波及到异地多集群部署,再联合大数据量高并发业务场景,还会碰到好多更为复杂的问题,这里就不一一列举了。
六、服务降级
业务顶峰期,为了保证核心服务,需要停掉一些不太重要的业务,eg商点议论、论坛或许粉丝积分等
此外一些场景就是某些服务不行用时,又不可以直接让整个流程失败就当地Mcok(模拟)实现,做流程放通
eg用户登录余额鉴权服务不可以正常工作,需要做业务放通,记录花费话单同意用户持续接见,而不是返回失败
为了保证以上两种场景的正常服务,服务需要有降级。
服务降级主要包含容错降级和障蔽降级
障蔽降级:
1)thrownull不倡始远程调用,直接返回空
2)throwexception不倡始远程调用,直接抛出指定异样
3)executebean不倡始远程调用,直接履行当地模拟接口实现
服务降级是可逆操作,当系统压力恢复到必定值不需要降级服务时,要从头倡始远程调用,服务状态改为正常
容错降级:
非核心服务不行调用时,能够对故障服务做业务放通,保证主流程不受影响
)RPC异样:往常指超时、信息解码异样、流控异样、系统拥堵保护异样等
)Service异样eg登录校验异样、数据库操作失败异样等
七、限流
经过对并发接见和恳求进行限速或许一个时间窗口内的恳求进行限速来保护系统的可用性,一旦达到限制速率就能够拒绝服务(友善定向到错误页或见告资源没有了),排队或许等候(比方秒杀,议论,下单),降级(返回默认数据)。
word资料
.
经过压测的手段找到每个系统的办理峰值,而后经过设定峰值阈值,来防备当
系统过载时,经过拒绝办理过载的恳求来保障系统可用性,同时也应当依据系统的吞吐量,响应时间,可用率来动向调整限流阈值。
分类:
限制总并发数---数据库连结池,线程池
限制刹时并发数---nginx的limit_conn模块,用来限制刹时并发连结数限制时间窗口内的均匀速率---guava的RateLimiter,nginx的limit_req模块,限制每秒均匀速率
其余---限制远程接口调用速率,限制MQ花费速率,此外,还能够依据网络连结数,网络流量,CPU或内存负载等来限流。
算法:
滑动窗口协议---改良吞吐量的技术
漏桶---强迫限制数据的传输速率,限制的流出速率
令牌桶---(控制(流入)速率种类的限流算法)系统以恒定的速度往桶中放入令牌,假如恳求需要被办理,则需要先从桶中获得一个令牌,当桶中没有令牌可取,则拒绝服务。当平常办理速率小于桶中令牌的速率,那么在突发流量时桶内有聚积能够有效预防。

word资料
.

word资料
.
八、总结
任何一个散布式系统的容量都会存在上限,哪怕天猫这类级其余网站也不例外。一旦用户流量过载,系统的吞吐量便会开始降落,RT线上涨,最后致使系统容量被撑爆而出现雪崩效应。所以,架构师在对系统架构进行设计时,必定要考虑到系统整个链路的各个环节。上述介绍的五种手段,看似平庸无奇,可是组合在一同却能迸发出惊人的力量。依据自己所处的场景,试试各个方式进行解决,找到最合适的。
word资料