【问题标题】:Kafka for API gateway to store messagesKafka 用于 API 网关来存储消息
【发布时间】:2022-01-14 07:54:03
【问题描述】:

我需要为不同的服务构建一个安全的 REST API,其中客户端服务可以发布和接收来自其他客户端的消息(如邮箱。但消息将采用 JSON 格式。并且应该是持久的。我预计大约 5000客户服务。每天每项服务大约有 50 条消息)。 我的问题是:

  1. 我可以为此使用 Kafka(我想我需要一些包装 Kafka 来管理其他任务)?
  2. 如果是,则发件箱和收件箱将成为单独的主题 每个服务?(每个服务2个主题。5000 * 2个主题。我的计划是 在新客户加入时动态创建它们)
  3. 编写这种网关的替代技术有哪些。

任何帮助将不胜感激。

【问题讨论】:

  • 为什么不能使用常规的 RDBMS?

标签: rest apache-kafka api-gateway


【解决方案1】:

您不能使用 Kafka 来实现 REST API,因为 REST API 意味着请求/响应,而 Kafka 只是一个消息队列(Kafka 不提供响应消息的机制)。您可以使用 Kafka 生成消息以供其他服务使用。消息队列的思想是将生产者与消费者解耦,反之亦然。当消费者收到一条消息时,它会对其进行操作,就是这样。但是,当您说收件箱/发件箱时,您暗示有对消息的响应,这意味着生产者和消费者的节奏应该相似,这将它们耦合起来,这与消息队列的性质相悖。

在您的情况下,使用 http 请求/响应甚至 websocket 似乎更有意义。如果您想保存请求/响应数据(使其持久化),您可以将其保存在数据库、对象存储(如S3)、log it 中,或者将每条消息发送到 Kafka,以便 Kafka 存储您的所有消息,写入 Kafka 实际上会非常快,因为 Kafka 粗略地说是一个仅附加日志。然后,您可以使用 ksqldb 搜索消息值。

【讨论】:

    猜你喜欢
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 2020-12-28
    • 1970-01-01
    • 2012-09-30
    • 2019-06-08
    相关资源
    最近更新 更多