IPC 微服务 AMQP 和弹性

IPC microservices AMQP and resilience

我正在通过 Kubernetes 为我的微服务平台创建架构 运行。 我当前的架构如下所示:

描述:

我想知道,如果我的 RabbitMQ 崩溃了怎么办:

所以我的问题如下:
将消费者进程分离到一个独立的容器中是一种好的做法吗?

-> 容器将 运行 与同一 pod 中的主应用程序一起。
-> Sidecar consumer 会有一个 liveness 端点,所以如果 RabbitMQ 再次崩溃,Kubernetes 将只启动这个容器。
-> Sidecar 消费者将有权访问数据库以写入事件。
-> 生产者可以留在主应用程序(烧瓶)中,对我来说更有弹性。

这样做是正确的吗?

是的,我认为这是一个很好的方法,因为您依靠 Kubernetes 来检查该容器是否已启动(使用活性探测器),而不是从应用程序中执行此操作。

您还可以使用集群的可观察性堆栈 monitor/alert 类似的事件(已关闭的容器)。