如何设计用于从Kafka获取客户端事件的API?

问题描述 投票:0回答:1

我考虑架构模式,当我的服务的每个客户都有自己的kafka消费者。

例如,有events主题,其中包含一些复制因子和一些分区,我将其用于可伸缩性。给定客户端的所有事件都属于一个分区(我使用clientId作为分区键)。

每个客户都有自己的offset。所以我的API允许使用offset来获取客户端事件。

系统设计好吗?或者什么是正确的API设计来获取事件?

java architecture apache-kafka consumer
1个回答
0
投票

问题有点模糊,所以让我在提出建议之前说出我的猜测。

  1. 发布事件的单个主题。
  2. 必须将这些事件通知给某些客户(他们是移动应用程序还是什么?)
  3. 当前设计每个客户端有一个消费者,意味着为客户端分配了至少一个线程。

对当前设计的担忧

  1. 随着用户数量的增加,线程数也必须增加,意味着该方法不会线性扩展。成本随用户数量的增加而增加。
  2. 如果消费者线程失败怎么办?这可能会导致客户端通知失败。

提案

  1. 使用Kstreams消费。考虑kstreams比消费者api更高级别的消费API。
  2. 使用numthreads属性可以配置线程数。因此,单个KStream将充当消费者群体。
  3. 有一个路由逻辑来查找客户端并通知。
  4. 权衡:这种路由逻辑增加了延迟。
© www.soinside.com 2019 - 2024. All rights reserved.