如何最佳地将Apache Kafka定位为许多独立客户端的消息代理

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

我的组织有一个AWS托管的Spring Boot应用程序,其中Apache Kafka当前正在促进约50个主题的消息交换(“云应用程序”)。在客户设施(物理位置)内,我们有一台处理机,可以处理来自云的逻辑和命令。所有客户都有自己的本地计算机。希望允许客户端/云使用相同的Kafka主题,但不允许一种客户端形式接收其他主题。

[许多Kafka实例无法缩放。使Kafka能够执行此操作的适当方法是什么?

apache-kafka architecture publish-subscribe
2个回答
0
投票

许多Kafka实例无法缩放

取决于您的管理方式。您可以使用Ansible / Puppet / Chef和Terraform在任何环境中快速设置Kafka集群。

您可以使用MirrorMaker或Kafka Connect将主题从云数据中心拉到“ physical”私有主题中。

但是,最终结果是您[从远程群集中提取数据并进行处理。

禁止一个客户接收其他客户

“其他”是什么?其他数据中心?那将是一个网络规则,而不是IMO的卡夫卡问题。

[其他Kafka主题?您可以将SASL + JAAS设置为具有基本身份验证层。

更多信息-Kafka Security 101(旧帖子,信息可能有些过时)

Docs on Kafka Security


0
投票
我在这里没有找到理想的解决方案,但是如果您的负载需要Kafka,并且您需要通过授权隔离客户端,那么可以通过为每个客户端创建一个目标Topic并在Topic READ / WRITE上执行ACls来解决[ C0]。

此方法的可能缺点可能会降低性能,或者可能需要扩展足够大的群集以支持负载并根据需要保留SLA。

计划和计算估算

in the post above中所述,为确保您的Kafka群集安全,一般的经验法则,我们的第一步是:

blog post about partition number optimization

位置:

    NumPartitionsPerBroker =群集中单个Kafka代理上分区的最大负载。
  • NumOfBrokers =当前集群设置中的Kafka经纪人数量。
  • ReplicationFactor =默认/平均复制因子,实质上是多少对等代理可以共享分区领导的负载。
  • 下一步将是找出您在接下来的几个月/几年中可能要使用的分区数量:

    NumPartitionsPerBroker = 100 x NumOfBrokers x ReplicationFactor

    位置:

      NumTopics =主题数
  • [AvgNumParts =每个主题的平均分区数(每个主题的生产者/消费者)] >>
  • GrowthTopics =主题的预期增长
  • GrowthPrts =分区的预期增长
  • TimeInterval =预计要计划多少个月/年/等等
  • 最后,两个数字应按以下方式累加:

    TotalExpectedPartitions = (NumTopics x AvgNumParts) x [(1 + % GrowthTopics) x (1 + % GrowthParts)] ^ TimeInterval

    希望这会有所帮助:)
  • © www.soinside.com 2019 - 2024. All rights reserved.