38 限流的目标与模式
你好,我是周志明。
在前面两讲中,我们了解了分布式服务中的容错机制,这是分布式服务调用中必须考虑的因素。今天这节课,我们接着来学习分布式服务中另一个常见的机制:限流。
任何一个系统的运算、存储、网络资源都不是无限的,当系统资源不足以支撑外部超过预期的突发流量时,就应该要有取舍,建立面对超额流量自我保护的机制,而这个机制就是微服务中常说的“限流”。
限流的目标
在介绍限流具体的实现细节之前,我们先来做一道小学三年级难度的四则运算场景应用题:
已知条件:
系统中一个业务操作需要调用10个服务协作来完成,该业务操作的总超时时间是10秒,每个服务的处理时间平均是0.5秒,集群中每个服务均部署了20个实例副本。求解以下问题:
(1)单个用户访问,完成一次业务操作,需要耗费系统多少处理器时间?
答:0.5 × 10 = 5 Sec CPU Time
(2)集群中每个服务每秒最大能处理多少个请求?
答:(1 ÷ 0.5) × 20 = 40 QPS
(3)假设不考虑顺序且请求分发是均衡的,在保证不超时的前提下,整个集群能持续承受最多每秒多少笔业务操作?
答:40 × 10 ÷ 5 = 80 TPS
(4)如果集群在一段时间内持续收到100 TPS的业务请求,会出现什么情况?
答:这就超纲了小学水平,得看你们家架构师的本事了。