consumer多线程实例设计 消费者组消费进度监控

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/yujianping_123/article/details/97657931

kafkaconsumer线程分 用户主线程 和 心跳线程

用户主线程,采用的是单线程设计,如果要设计consumer多线程实例,要注意:

kafkaConsumer不是线程安全的,需要为每个线程维护一个KafkaConsumer或者采用线程池技术。代码示例

KafkaProducer是线程安全的,允许在多个线程中共享一个KafkaProducer实例

kafkaConsumer会创建3类tcp连接

1. 确定协调者,获取集群元数据

2. 连接协调者

3. 获取消息

消费者当前落后于生产者的程度:

Consumer Lag :kafka监控lag的层级是在分区上的,如果要计算topic粒度的滞后,则要把分区上的累加起来。

如果落后太多,会失去Zero Copy的优势,从而从磁盘上读取。另外,极端情况,落后超过了消息的保存时间(比如1周),则被删除了。

解决方法:

使用 Kafka 自带的命令行工具 kafka-consumer-groups 脚本。
使用 Kafka Java Consumer API 编程。
使用 Kafka 自带的 JMX 监控指标。

猜你喜欢

转载自blog.csdn.net/yujianping_123/article/details/97657931