我有一个 Kafka 集群(在 AWS 上使用 Aivan):
卡夫卡硬件
Startup-2 (2 CPU, 2 GB RAM, 90 GB storage, no backups) 3-node high availability set
- 我的消费者和 Kafka Broker 之间的 Ping 是 0.7 毫秒。
后群
我有一个这样的话题:
- 它包含大约 3000 个实体的数据。
- 实体生命周期为一周。
- 每周将有不同的 3000 个实体(平均)。
- 每个实体总共可能有 15k 到 50k 条消息。
- 每秒最多可以有 500 条消息。
建筑学
我的团队构建了一个架构,这样会有一组消费者。他们将解析这些数据,执行一些转换(没有任何过滤!!),然后将最终消息发送回 kafka 到topic=<entity-id>
.
这意味着我将数据上传回 kafka 到仅包含特定实体数据的主题。
问题
在任何给定时间,kafka 中最多可以有 3-4k 个主题(每个唯一实体 1 个主题)。
- 我的卡夫卡能处理好吗?如果不是,我需要改变什么?
- 我是否需要删除一个主题,或者随着时间的推移有(很多!!)未使用的主题是可以的?
- 每个消费最终消息的消费者将同时消费 100 个主题。我知道 kafka 客户可以同时使用多个主题,但我不确定最佳实践是什么。
- 请分享您的担忧。
要求
- 请关注这个架构的潜在问题,尽量不要谈论替代架构(更少的话题,更多的消费者等)。