【问题标题】:Event driven Kubernetes service事件驱动的 Kubernetes 服务
【发布时间】:2020-04-30 04:02:39
【问题描述】:

我正在寻找一种服务间通信解决方案。

我有 1 个服务和多个带有传入 gRPC 流的 pod。初始请求调用外部资源,最终触发返回此服务的请求并带有状态消息。这是在一个单独的线程上,对于此示例,最终会转到 Pod B。我希望 PodA 使用此状态消息进行响应。我试图用下面的工作流程来证明这一点。

这里明显的解决方案是添加某种消息传递模式,但我会寻求帮助以确定哪种方法是最佳方法。下面的示例介绍了一个服务网格边车,它将外部请求路由到 Pod A 将订阅的队列。如果使用 AMQP,我可能会考虑使用 direct exchange

需要任何进一步的信息,请告诉我。

【问题讨论】:

  • 你的 Pod 和外部服务之间的通信是异步的吗?
  • 是的,但响应不会返回状态。由于外部资源触发的事件,状态被推送到服务 A。

标签: design-patterns kubernetes message-queue grpc messaging


【解决方案1】:

两个微服务之间的 Pub-Sub 通信是一种很好的通信模式。 《Cloud Native Patterns》一书准确地描述了这一点,以及在某些情况下使用这种模式相对于请求-响应模式的优势。见第 12 章。

12.2 从请求/响应转向事件驱动

12.3 事件日志

12.4 事件溯源

这可以通过多种技术实现,但使用Kafka with microservices 是一个不错的选择。 Kafka 也是一个分布式系统,专为云而设计,类似于 Kubernetes 中使用的原理。

你的例子

要将其应用于您的示例,queue 是 Kafka 代理(或 RabbitMQ?),您需要一种将数据从 外部资源 发布到代理的方法.如果 External Resource 总是回复请求来自的 pod,则 sidecar 可能是一个解决方案。如果可以配置“回复地址”,则可以是独立的“适配器服务”,例如Kafka REST proxy 如果使用 Kafka 作为代理。可能有相应的代理,例如RabbitMQ。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2023-03-29
    • 2018-02-15
    • 2021-04-17
    • 2021-02-03
    • 2019-11-06
    相关资源
    最近更新 更多