在阅读了写得非常好的网站可靠性工程(https://landing.google.com/sre/book.html)后,我开始对为RPC客户端实施通用重试预算感兴趣。
案例是,给定服务的客户端我想自动执行重试以处理超时,慢速io等。 与此同时,我不想参与一个雷鸣般的群体,导致已经很慢的系统变得更加反应迟钝。
本书描述了重试预算的概念,其中我的客户端对系统只允许全局重试,即对服务器的正常负载的10%。这个概念需要窗口化,线程上的全局状态等。这与我们已经依赖于RxJava来处理并发的客户端一起使我考虑使用Rx来保持允许重试的状态。
在我超越自我并实现该功能之前,听听其他人是否做过类似的事情或者知道任何相同的框架/库是否会很有趣?
到目前为止,我见过的唯一框架是Finagle,但由于我们是一个Java / JS商店(没有Scala,但是......),对我们来说这是不行的。