1秒1亿!程序员如何抗住双11高并发流量?
Tina 2019-11-20 来源 : 阅读 1243 评论 0

摘要:今年双 11 全民购物狂欢节进入第十一个年头,1 分 36 秒,交易额冲到 100 亿 !看看如何抵挡这波高并发流量!

在双11过后的小职,从断臂维纳斯化身为八臂哪吒,快递拆到手软,痛并快乐着,相信不少小伙伴的战斗力不比我弱,看看这份双11的数据,11月成交  100 亿/1分36秒,比2018快了30秒,同比2017快了90秒。


1秒1亿!程序员如何抗住双11高并发流量?


在双11狂欢抢购的背后,也有一个许多程序员关心的问题,就是如何抗住双 11 高并发流量?接下来小职带大家一起看看限流降级技术。


服务等级协议

我们常说的 N 个 9,就是对 SLA 的一个描述。SLA 全称是 Service Level Agreement,翻译为服务水平协议,也称服务等级协议,它表明了公有云提供服务的等级以及质量。

例如阿里云对外承诺的就是一个服务周期内集群服务可用性不低于 99.99%,如果低于这个标准,云服务公司就需要赔偿客户的损失。


做到 4 个 9 够好了吗

对互联网公司来说,SLA 就是网站或者 API 服务可用性的一个保证,9 越多代表全年服务可用时间越长服务更可靠,4 个 9 的服务可用性,听起来已经很高了,但对于实际的业务场景,这个值可能并不够。

我们来做一个简单的计算,假设一个核心链路依赖 20 个服务,强依赖同时没有配置任何降级,并且这 20 个服务的可用性达到 4 个 9,也就是 99.99%。

那这个核心链路的可用性只有 99.99 的 20 次方=99.8%,如果有 10 亿次请求则有 3,000,000 次的失败请求,理想状况下,每年还是有 17 小时服务不可用。


微服务的雪崩效应

除了对服务可用性的追求,微服务架构一个绕不过去的问题就是服务雪崩。

在一个调用链路上,微服务架构各个服务之间组成了一个松散的整体,牵一发而动全身,服务雪崩是一个多级传导的过程。

首先是某个服务提供者不可用,由于大量超时等待,继而导致服务调用者不可用,并且在整个链路上传导,继而导致系统瘫痪。


限流

限流目的是通过对并发访问/请求进行限速或者一个事件窗口内的请求进行限速,来保护系统。
一般高并发系统常见限流有:

1、限制总并发数(如数据库连接池、线程池)  

2、瞬时并发数(如Nginx的limit_conn模块)  

3、限制远程接口调用速率,MQ消费

    

限流算法

主要有令牌桶、漏桶


令牌桶算法

是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌

1、假设限制为2r/s,则按照500ms的固定速率网桶中添加令牌  

2、桶中最多存放b个令牌,当桶满时,新添加令牌被丢弃或拒绝,当一个n个字节大小数据包到达,将从桶中删除n个令牌,接着数据包被发送到网络上   

3、如果桶中令牌不足n个,则不会删除令牌,且该数据包将被限流

    

漏桶算法

漏桶作为计量工具,可以用于流量整形(Traffic Shaping)和流量控制(Traffic Policing)。

1、一个固定容量的漏桶,按照常量固定速率流出水滴   

2、如果桶是空的,则不需要流出水滴

可以以任意速率流入水滴到桶里

3、如果流入水超出了桶的容量,则流入的水滴溢出了(被丢弃),而漏桶容量是不变的

    

两者比较

令牌桶是展昭固定速率王桶中添加令牌,请求是否被处理需要看桶中令牌是否足够,当令牌数减为0时,则拒绝新的请求。

漏桶则是按照固定速率流出请求,流入请求速率任意,当流入请求数累计到漏桶容量时,则新流入请求被拒绝。


限流降级怎么做

如同上面我们分析的,在大规模微服务架构的场景下,避免服务出现雪崩,要减少停机时间,要尽可能的提高服务可用性。

提高服务可用性,可以从很多方向入手,比如缓存、池化、异步化、负载均衡、队列和降级熔断等手段。

缓存以及队列等手段,增加系统的容量。限流和降级则是关心在到达系统瓶颈时系统的响应,更看重稳定性。

缓存和异步等提高系统的战力,限流降级关注的是防御。限流和降级,具体实施方法可以归纳为八字箴言,分别是限流,降级,熔断和隔离。


使用 RateLimiter 实现限流

Google 开源工具包 Guava 提供了限流工具类 RateLimiter,该类基于令牌桶算法实现流量限制,使用方便。

RateLimiter 使用的是令牌桶的流控算法,RateLimiter 会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行。

本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

拧成一股绳,搏尽一份力,狠下一条心,共圆一个梦。

  • 1
    推荐岗位
  • 2862
    人气
  • 100%
    受欢迎度

已有3人表明态度,100%喜欢该职业规划老师!

进入TA的空间
资讯动态 直通车
  • 索取资料 索取资料 索取资料
  • 答疑解惑 答疑解惑 答疑解惑
  • 技术交流 技术交流 技术交流
  • 职业测评 职业测评 职业测评
  • 面试技巧 面试技巧 面试技巧
  • 高薪秘笈 高薪秘笈 高薪秘笈
TA的其他文章 更多>>
测试 | 你究竟适不适合成为一名程序员?
面试技巧 100% 的用户喜欢
IT行业面试技巧,90%的人都不知道
面试技巧 100% 的用户喜欢
JAVA不知道如何面试?两年经验者告诉你!
面试技巧 50% 的用户喜欢
说说那些程序员必须掌握的核心算法!
就业趋势 0% 的用户喜欢
未来AI将在这些领域发光发热!
就业趋势 0% 的用户喜欢

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程