首页 > 科技 >

腾讯官方写论文:微信的技术架构有多复杂(3)

2018-11-26 20:15:15 网络整理 阅读:78 评论:0

这里考虑一个简单的场景,其中服务A对服务B进行了两次调用。如果B开始对全部传入请求中的半数加以拒绝,则服务A的调用成功率将下降至0.25。DAGOR概述

微信采用的过载控制系统被称为DAGOR,其旨在为所有服务提供过载控制功能,因此必须具有服务中立性。由于集中式全局协调将带来高昂的实现成本,因此过载控制需要以单一机器的细粒度方式运行。然而,其中还包含有处理后续过载情况所必需的轻量级机器间协调协议。最后,当由于严重过载而导致的减载变得不可避免时,DASGOR应尽可能维持服务的请求成功率。换言之,其应尽量减少浪费在失败服务任务上的计算资源(例如CPU与I/O等等)。

这里,我们有两项基本任务需要解决:检测过载情况,并在检测到过载之后决定如何加以处理。过载检测

对于过载检测,DAGOR着眼于待处理队列中各请求的平均等待时间(或者说排队时间)。排队时间的最大优势,在于能够抵消呼叫图中较低延迟的平均化影响(相较于请求处理时间等指标)。即使本地服务器本身没有发生过载,请求处理时间也有可能增加。DAGOR可采用基于窗口的监控机制,其中的容器为1秒或者2000次请求,以先到者为准。微信显然一直处在高效紧张地的运行状态之中:“For overload detection, given the default timeout of each service task being 500ms in WeChat, the threshold of the average request queuing time to indicate server overload is set to 20ms. Such empirical configurations have been applied in the WeChat business system for more than five years with its effectiveness proven by the system robustness with respect to WeChat business activities.”(对于过载检测,假设微信中每个服务任务的默认超时为500毫秒,则表示服务器过载的平均请求排队时间阈值将设置为20毫秒。这种基于经验的配置方式已经在微信业务系统中应用了超过五年之久,其有效性通过系统对微信业务活动支持的稳健性表现得到了证实。)接纳控制

相关文章