面试官:说一下限流、熔断、高可用?好多人一脸懵!.docxVIP

面试官:说一下限流、熔断、高可用?好多人一脸懵!.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面试官:说一下限流、熔断、高可用?好多人一脸懵! 对系统服务进行限流,一般有如下几个模式: 熔断 系统在设计之初就把熔断措施考虑进去。当系统消灭问题时,假如短时间内无法修复,系统要自动做出推断,开启熔断开关,拒绝流量访问,避开大流量对后端的过载恳求。 系统也应当能够动态监测后端程序的修复情况,当程序已恢复稳定时,可以关闭熔断开关,恢复正常服务。常见的熔断组件有Hystrix以及阿里的Sentinel,两种互有优缺点,可以依据业务的实际情况进行选择。 服务降级 将系统的全部功能服务进行一个分级,当系统消灭问题需要紧急限流时,可将不是那么重要的功能进行降级处理,停止服务,这样可以释放出更多的资源供应核心功能的去用。 例如在电商平台中,假如突发流量激增,可临时将商品评论、积分等非核心功能进行降级,停止这些服务,释放出机器和CPU等资源来保障用户正常下单,而这些降级的功能服务可以等整个系统恢复正常后,再来启动,进行补单/补偿处理。除了功能降级以外,还可以接受不直接操作数据库,而全部读缓存、写缓存的方式作为临时降级方案。学习材料:Java进阶视频资源 延迟处理 这个模式需要在系统的前端设置一个流量缓冲池,将全部的恳求全部缓冲进这个池子,不马上处理。然后后端真正的业务处理程序从这个池子中取出恳求依次处理,常见的可以用队列模式来实现。这就相当于用异步的方式去削减了后端的处理压力,但是当流量较大时,后端的处理力量有限,缓冲池里的恳求可能处理不准时,会有肯定程度延迟。后面具体的漏桶算法以及令牌桶算法就是这个思路。 特权处理 这个模式需要将用户进行分类,通过预设的分类,让系统优先处理需要高保障的用户群体,其它用户群的恳求就会延迟处理或者直接不处理。 缓存、降级、限流区分 缓存,是用来添加系统吞吐量,提升访问速度供应高并发。 降级,是在系统某些服务组件不行用的时候、流量暴增、资源耗尽等情况下,临时屏蔽掉出问题的服务,连续供应降级服务,给用户尽可能的友好提示,前往兜底数据,不会影响全体业务流程,待问题处理再重新上线服务 限流,是指在使用缓存和降级无效的场景。比如当达到阈值后限制接口调用频率,访问次数,库存个数等,在消灭服务不行用之前,提前把服务降级。只服务好一部分用户。 限流的算法 限流算法很多,常见的有三类,分别是计数器算法、漏桶算法、令牌桶算法,下面逐一讲解。 计数器算法 简约粗暴,比如指定线程池大小,指定数据库连接池大小、nginx连接数等,这都属于计数器算法。 计数器算法是限流算法里最简约也是最简约实现的一种算法。举个例子,比如我们规定对于A接口,我们1分钟的访问次数不能超过100个。那么我们可以这么做:在一开 始的时候,我们可以设置一个计数器counter,每当一个恳求过来的时候,counter就加1,假如counter的值大于100并且该恳求与第一个恳求的间隔时间还在1分钟之内,那么说明恳求数过多,拒绝访问;假如该恳求与第一个恳求的间隔时间大于1分钟,且counter的值还在限流范围内,那么就重置 counter,就是这么简约粗暴。 漏桶算法 漏桶算法思路很简约,水(恳求)先进入到漏桶里,漏桶以肯定的速度出水,当水流入速度过大会超过桶可接纳的容量时直接溢出,可以看出漏桶算法能强行限制数据的传输速率。 削峰:有大量流量进入时,会发生溢出,从而限流爱护服务可用 缓冲:不至于直接恳求到服务器,缓冲压力 消费速度固定 由于计算功能固定 令牌桶算法 令牌桶与漏桶相像,不同的是令牌桶桶中放了一些令牌,服务恳求到达后,要猎取令牌之后才会得到服务,举个例子,我们平常去食堂吃饭,都是在食堂内窗口前排队的,这就好比是漏桶算法,大量的人员聚集在食堂内窗口外,以肯定的速度享受服务,假如涌进来的人太多,食堂装不下了,可能就有一部分人站到食堂外了,这就没有享遭到食堂的服务,称之为溢出,溢出可以连续恳求,也就是连续排队,那么这样有什么问题呢? 假如这时候有特殊情况,比如有些赶时间的意愿者啦、或者高三要高考啦,这种情况就是突发情况,假如也用漏桶算法那也得渐渐排队,这也就没有处理我们的需求,对于很多应用场景来说,除了要求能够限制数据的平均传输速率外,还要求允许某种程度的突发传输。这时候漏桶算法可能就不合适了,令牌桶算法更为适合。如图所示,令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而假如恳求需要被处理,则需要先从桶里猎取一个令牌,当桶里没有令牌可取时,则拒绝服务。 并发限流 简约来说就是设置系统阈值总的QPS个数,这些也挺常见的,就拿Tomcat来说,很多参数就是出于这个考虑,例如 配置的acceptCount?设置响应连接数,?maxConnections设置瞬时最大连接数,?maxThreads?设置最大线程数,在各个框架或者组件中,并发限流体现在下面几个

文档评论(0)

136****7795 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档