在开发环境中,一个人有一个Java应用程序,并且他们看到成千上万的连接打开。但是他们正在聆听来自单个消费者的大约200个主题。这分布在3个经纪人中。
在本地,我将Docker和一个简单的Kafka Consumer与Java应用程序配合使用,并在1个主题上创建了300个分区。最多打开了2个连接。
我也在本地测试的是订阅多个主题(10),每个主题中约有3-300个分区,并且注意到与在数百个分区中订阅1个主题的TCP连接数量相同。我的想法是因为它们都在localhost上共享同一个代理,这就是为什么连接计数很低的原因。
我的问题是,如果我们有一个应用程序监听单个消费者的数百个主题,那么与消费者之间与Kafka的连接数会增加吗?
我知道Kafka的最佳做法是使用许多分区而不是许多主题。我建议我们有一个包含数千个分区的主题,因为这是Kafka的最佳做法,并且官方的Kafka FAQ建议使用更多的分区而不是更多的主题。也有一个建议使用StackOverflow的答案:Can I have 100s of thousands of topics in a Kafka Cluser?
我要证明的是为什么创建许多分区而不是创建许多主题是有益的。因此,如果有人有投入或现实生活中的生产经验,那也将是很好的。