Istio / Envoy 的 circuit breaker 真的能够代替客户端库形式的 circuit breaker 吗?

2021-11-22 16:46:53 +08:00
 Samuelcc

最近在调研从 Spring Cloud 转型到 Service Mesh 。 看各种资料以及博客中的说法,几乎都是说 Istio / Envoy 的 circuit breaker 以及 outlier detection 能够代替 Hystrix / recilience4j 等客户端库,客户端能够从 thick client 改为 thin client (不带服务发现、lb 、bulkhead 、circuit breaking 功能)。 但是在看了 Istio 和 Envoy 的相关文档之后,按我的理解它们大致上只能起到一个 bulkhead 的作用 (connection pool, 还有所谓的 circuit breaking),还有个被动的健康检查 (outlier detection),缺少接口粒度的断路,感觉并不能代替 Hystrix 等客户端弹性库。

举例来说,一个服务能够提供一系列接口,在某些情况下部分接口出错,其他接口正常,在使用 Hystrix 的情况下能够单独对这些故障接口断路或者 fallback 等,而使用 sidecar 的话,对于非超时类的错误只能通过 outlier detection 将实例踢出 load balance pool ,造成正常的接口也无法使用。如果出错的接口占调用百分比较小,甚至不会做任何操作。

真的非常疑惑,是我理解错了吗?还是接口粒度的断路不被需要呢?希望有了解 service mesh 或者实际落地代替 Hystrix 转为 thin client 的大佬能解答一二。感谢!

609 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/817169

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX