【问题标题】:Circuit Breaker in a Microservices Architecture微服务架构中的断路器
【发布时间】:2017-04-10 11:43:15
【问题描述】:

在微服务架构中添加断路器模式的最佳方法是什么。它应该在微服务端(每个微服务内部)、ELB 内部还是 Api 网关内部?什么是最好的设计模式?

【问题讨论】:

    标签: microservices hystrix netflix circuit-breaker


    【解决方案1】:

    我认为不是在每个微服务中使用,而是在您使用微服务的 BFF(后端为前端)中使用。您可以在本书https://pragprog.com/book/mnee/release-it 中找到一个很好的实现和示例。使用 API 网关的解决方案很好,请参阅 Kong https://getkong.org/

    【讨论】:

    • 感谢您的回答和参考文章:)
    【解决方案2】:

    我建议您将断路问题委托给像 Hystrix 这样的外部库,而不是自己实现。 Hystrix 公开了许多属性,让您可以完全控制调整断路功能。

    【讨论】:

      【解决方案3】:

      至少有 3 个选项(如下图所示)。在一般情况下,断路器“保护”对 http 服务的调用。如果我们认为这个服务微服务,那么熔断器从不在微服务本身中。

      API 网关

      在这种情况下,您使用具有断路支持的 API 网关产品。大使和 Axway 就是例子。另一种方法是在 BFF 服务中提供熔断机制,以获取对后端服务的调用。

      服务网格

      在这种情况下,您使用支持断路的服务网格产品。带有 Envoy 的 Istio 就是一个例子。在此示例中,insurance quote 服务调用customer history 服务。代理 sidecar 容器进行熔断。

      断路器库

      在这里,您使用了一个提供断路器支持的库。 Resilience4J 是我们在工作中使用的(在一些调用 http 服务的 Spring Boot 应用程序中)。

      您的设计

      哪个最好?这取决于您的应用程序要求和基础架构限制。要记住的事情:

      • 并非所有服务交互都需要断路。
      • 查看是否可以在电路打开时使用回退机制(例如,默认响应)。
      • 记录/监控电路变化以检测有问题的连接和服务。

      【讨论】:

        猜你喜欢
        • 2021-08-19
        • 2015-12-26
        • 2021-11-02
        • 2020-05-29
        • 2017-03-19
        • 2018-05-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多