问题背景
我们在用kafka的时候,偶尔会遇到这样这样一个问题。
我们写的kafka的客户端程序,在启动的时候,会无缘无故的 卡住(阻塞)
如下图所示:
在 kafka 中,分区分配是一个很重要的概念,它会影响Kafka整体的性能均衡。kafka 中一共有三处地方涉及此概念,分别是:生产者发送消息、消费者消费消息和创建主题。虽然这三处的对应操作都可以被称之为“分区分配”,但是其实质上所包含的内容却并不相同。
HW
、 LEO
等概念和上一篇文章所说的 ISR
有着紧密的关系,如果不了解 ISR 可以先看下ISR相关的介绍。
HW
(High Watermark)俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个offset之前的消息。
下图表示一个日志文件,这个日志文件中只有9条消息,第一条消息的offset(LogStartOffset)为0,最有一条消息的offset为8,offset为9的消息使用虚线表示的,代表下一条待写入的消息。日志文件的 HW 为6,表示消费者只能拉取offset在 0 到 5 之间的消息,offset为6的消息对消费者而言是不可见的。
相信大家已经对 kafka
的基本概念已经有一定的了解了,下面直接来分析一下 ISR 和 AR 的概念。
对于 kafka 主题(topic)的管理(增删改查),使用最多的便是kafka自带的脚本。