Reference
- 深度解读微博 Service Mesh 大规模实践 - 可以借鉴 "双发" 机制!
Abstract
Weibo Mesh 中推荐采用的高可用策略是 Backup Request,又叫双发。 双发继承自 Motan 框架,是我们探索出来的比较高效可靠的机制。 它可以有效解决长尾问题,同时能提升系统吞吐量。
传统解决接口超时问题可能通过重试,在一次请求发送之后等待指定的超时时间, 如果没有返回则再请求一次,最差情况下要消耗2倍的超时时间。
而双发机制则不然, 在发送一次请求后等待P90(在T1时间内有90%的请求都能返回则称P90=T1, 通常系统的P90和程序设置的超时时间相比小很多)时间, 如果请求没有返回则在此刻再次发送一次请求, 在超时时间内,这两个请求中取最快返回的那个。
当然,这里有个防雪崩机制, 假如超过一定数量的请求(比如15%)都在进行双发, 则认为服务整体有问题,会自动停止双发。
实践证明,双发机制的去长尾效果非常明显。