
弹性设计
|
109
2.
限流
限流(参见《
SRE
:
Google
运维解密》中的第
21
章)通过延迟当前操作来间接修改客户
端的行为,以便推迟将来的操作。服务器收到请求后,可能会在处理请求之前等待,或
者一旦处理完请求,就在将响应发送到客户端之前等待。此方法降低了服务器从客户端
接收请求的速率(如果客户端按顺序发送请求),这意味着你可以重定向在等待期间节省
的资源。
与降低负载相似,你可以定制策略,将限流措施应用于特定的违规客户端,或者更普遍地
应用于所有的客户端。请求优先级和成本在选择限制哪些请求时起了作用。
3.
自动响应
服务器利用率的统计有助于确定何时应用降低负载和限流等控制措施。服务器的负载越
重,它可以处理的流量或负载就越少。如果激活控制机制的时间过长,则可能丢弃或限制
优先级较高的请求。
要有效地大规模管理这些降级控制,需要一个内部中央服务。你可以将有关功能和故障成
本的业务考虑因素转化为此服务的策略和信号。该内部服务还可以聚合客户端和服务的启
发式信息,以便近乎实时地将更新的策略分发到所有服务器。然后服务器可以根据服务器
利用率的规则应用这些策略。
自动响应的一些可能做法包括以下几种:
•
实施可响应式的限流信号,并尝试将流量转移到负载较低的服务器的负载均衡系统;
•
提供
DoS
保护,可在限流无效或流量具有破坏性时,帮忙向恶意客户端发出响应;
•
使用关键服务的重负载报告,触发将故障转移到备用组件的准备(本章后面的部分将讨
论这一策略)。
你还可以将自动化用于自发的故障检测:如果服务器确定它不能服务于某些类别甚至所有 ...