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

Apache kafka 如何最好地将ApacheKafka定位为许多独立客户端的消息代理,apache-kafka,architecture,publish-subscribe,Apache Kafka,Architecture,Publish Subscribe,我的组织有一个AWS托管的Spring Boot应用程序,ApacheKafka目前促进了约50个主题的消息交换(“云应用程序”)。在客户端设施(物理位置)中,我们有一台处理来自云的逻辑和命令的处理机器。所有客户端都有自己的本地计算机。其目的是允许客户端/云使用相同的卡夫卡主题,但不允许一个客户端表单接收其他客户端表单 许多卡夫卡实例无法扩展。让卡夫卡做到这一点的合适方式是什么 许多卡夫卡实例无法扩展 这取决于你如何管理它。您可以使用Ansible/Puppet/Chef和Terraform在任

我的组织有一个AWS托管的Spring Boot应用程序,ApacheKafka目前促进了约50个主题的消息交换(“云应用程序”)。在客户端设施(物理位置)中,我们有一台处理来自云的逻辑和命令的处理机器。所有客户端都有自己的本地计算机。其目的是允许客户端/云使用相同的卡夫卡主题,但不允许一个客户端表单接收其他客户端表单

许多卡夫卡实例无法扩展。让卡夫卡做到这一点的合适方式是什么

许多卡夫卡实例无法扩展

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

您可以使用MirrorMaker或Kafka Connect将主题从云数据中心拉入“物理”私有中心

但是,最终的结果是一些消费者从远程集群中提取数据并对其进行处理

不允许一个客户端接收其他客户端

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

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

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


我看不出一个理想的解决方案,但是如果您的负载需要Kafka,并且您需要通过授权进行客户端隔离,那么方法就是为每个客户端创建一个目标主题,并对主题读/写强制执行ACL,如前所述

这种方法的可能缺点可能是性能受到影响,或者可能需要扩展足够大的集群来支持负载并根据需要保留SLA。

规划和计算估算 如中所述,保持Kafka群集安全的一般经验法则是,我们的第一步是:

NumPartitionsPerBroker = 100 x NumOfBrokers x ReplicationFactor
其中:

  • NumPartitionsPerBroker=集群中单个Kafka代理上的最大分区负载
  • NumOfBrokers=当前群集设置中的Kafka代理数
  • ReplicationFactor=默认/平均复制系数,本质上是多少对等代理可以共享分区领导的负载
下一步是计算在未来数月/数年内您可能选择的分区数量:

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

  • NumTopics=主题数量
  • AvgNumParts=每个主题的平均分区数(每个主题的生产者/消费者)
  • GrowthTopics=主题的预期增长
  • GrowthPrts=分区的预期增长
  • 时间间隔=估计您未来计划的月数/年数/等
最后,这两个数字应按以下方式相加:

NumPartitionsPerBroker x NumOfBrokers = TotalExpectedPartitions


希望这有帮助:)

我不确定我是否理解。隔离客户端仍然可以使用一个集群。您可以使用ACL来控制访问