【问题标题】:Should one service take care of both processing Kafka messages and API calls simultaneously?一项服务是否应该同时处理 Kafka 消息和 API 调用?
【发布时间】:2022-02-02 21:25:36
【问题描述】:

我们想通过微服务订阅 Kafka 主题。为了使服务不必同时接受来自周围系统的 API 调用和 Kafka 消息,我们想插入一个“导入器服务”。但是,最终我们会再次遇到同样的问题,因为导入器服务现在必须同时处理 Kafka 消息和来自上述微服务的 API 调用。作为这个问题的解决方案,我们考虑让两个服务访问同一个数据库。然后,导入器服务可以接收 Kafka 消息,对其进行处理并将其写入数据库。原来的微服务不会转到导入服务,而是直接从数据库中获取数据。但是,这种方法似乎有点脏,因为您不应该在服务之间共享数据库。你有什么想法如何更优雅地解决这个问题吗?如果没有更好的方法,真的应该由一个服务同时处理 Kafka 消息和 API 调用吗?

【问题讨论】:

  • 如果数据库分离是您的问题,请查看 CQRS 模式。另外Kafka Connect通常用于写入数据库,而不是自己编写数据库客户端服务

标签: rest apache-kafka architecture microservices publish-subscribe


【解决方案1】:

一个服务不应该同时处理 kafka 和 api 消息。 您可以创建一个包装数据库的服务,两个服务都将与之通信。

【讨论】:

  • 听起来您没有使用过 Kafka Connect、Kafka REST 代理、KSQL 或 Schema Registry,甚至 Kafka Streams 交互式查询。所有这些都是带有暴露 API 的 Kafka 客户端的一项服务。
  • 他们都没有使用来自 kafka 的相同数据。
  • 你能澄清一下吗? Kafka Streams 消费和生产数据
猜你喜欢
  • 2019-11-26
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
相关资源
最近更新 更多