【问题标题】:Can I use Kafka for chat message pub-sub?我可以使用 Kafka 进行聊天消息发布 - 订阅吗?
【发布时间】:2020-10-07 03:59:24
【问题描述】:

我正在为提供聊天服务的移动客户端实现一个后端,包括向用户提供多个聊天室。(使用 Spring 启动)

我决定使用 Kafka 进行聊天消息订阅和发布,因为我不能将 STOMP 与 Spring Webflux(我选择它而不是 Servlet)一起使用。

根据我的计划,聊天消息的交换通过以下过程进行。 (假设Clients A and B在同一个聊天室。)

  1. client A 通过 WebSocket 连接到 chat server 1
  2. client B 通过 WebSocket 连接到 chat server 2
  3. chat server1 and 2订阅Kafka topic 'chat'
  4. client A 发送聊天消息到chat server 1
  5. chat server1首先将聊天消息存储到DB,然后将消息发布到Kafka topic 'chat'。消息包含聊天室 ID、聊天内容、发件人 ID。
  6. chat server2 接收来自 Kafka 主题“聊天”的消息。
  7. chat server2 过滤聊天室 ID 为 client B的消息已加入。
  8. chat server2 将过滤后的消息发送至client B

我的问题是

我担心这不是通常的方式。普通人是做什么的?

【问题讨论】:

    标签: apache-kafka chat publish-subscribe


    【解决方案1】:

    我认为如果你有大型群聊,即使理论上你可以做到,Kafka 也不会很好地扩展。如果您对 kafka 的理解正确,则每个消费者都需要一个副本分区以供消费者独占,这意味着您需要大量分区(冗余)用于聊天消息。我不认为这是理想的。此外,您还需要集成 IM 应用程序的系统其他部分。但是,肯定有解决方法。例如,单个消费者消费整个群聊。

    【讨论】:

      猜你喜欢
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 1970-01-01
      相关资源
      最近更新 更多