使用微服务架构的应用程序中的优雅降级

Graceful degradation in an application that uses Microservices Architeture

我知道这是关于 混沌工程 的一个相对较新的主题,并且有一些内容说明了该策略的工作原理,但我还没有找到有关如何应用的资源它在现实世界中的问题。

  1. 任何使用微服务架构的应用程序都需要这种策略吗?
  2. 是否已经有一些 library/frameworks 可以简化其实施?
  3. 这个应用的监控和没有使用这个策略的有区别吗?

Is this kind of strategy a requirement for any application which uses Microservices Architecture?

我不会说这是一项要求。毕竟,在进入混沌工程之前,您可能会遇到不同的挑战,或者如果您有其他机制来应对 CE 试图发现的问题,则可以完全避免 CE。

Are there already some library/frameworks which ease its implementation?

根据您使用的堆栈,有:Chaos Monkey for Spring Boot、gremlin、chaosmesh 等(参见:https://github.com/dastergon/awesome-chaos-engineering)更简单的工具包括 tcstress

Is the monitoring of this application different than the one which does not use this strategy?

根据我的经验,这并没有什么不同,但是,监控领域在过去几年发生了很大变化。我会推荐任何可以(几乎)实时为您提供大量可观察性的系统。在进行混沌工程时,任何可以帮助您获得更好的应用程序性能监控的东西都会大有帮助。

一旦开始,将其应用于现实世界的示例就会变得更加容易。一个好的入门实验(以我的经验)是重新启动数据库或进行滚动更新。您使用 CE 所做的一切都应该处于性能负载之下。如果您的环境(通常是暂存环境)中没有任何请求,您将看不到生产中真正发生的事情。此外,从尽可能小的地方开始,然后在您获得更多经验和对系统的信任后尽快解决更大的问题。