我想用成千上万的Kafka。例如,我需要 100_000
一些架构模式的消费者。我在想,可以吗?或者我应该重构我的系统,为整个系统使用很少的使用者(例如, 10
消费者而不是 100_000
).
所以,我的问题是:
有 connection pool
在Kafka消费,还是每个消费者创建自己的连接Kafka经纪人?
有 thread pool
在kafkaconsumer中,或者每个消费者创建自己的线程(我希望不是这样)。
每个Kafka消费者的平均内存消耗是多少?
你觉得这样的建筑模式怎么样?
1条答案
按热度按时间mspsb9vt1#
1,2)使用者从作为分区领导者的一个代理请求元数据。每个使用者都能够处理来自单个线程的所有io,因为java客户机是围绕由用户驱动的事件循环设计的
poll()
. 您还可以构建多线程使用者,但需要注意偏移管理。有关java客户机实现的更多详细信息,请参阅confluent的文档。3) 根据ApacheKafka和ConfluentEnterpriseReferenceArchitecture,
消费者每个消费者至少使用2mb,如果来自代理的响应较大,则最多使用64mb(典型的突发流量)
4) 你提到的消费者数量是巨大的,所以你需要一个很好的理由去争取10万消费者。不过,这要视情况而定,但即便是netflix也应该少用很多。