5.Kafka消费者

分类栏目:Kafka

资讯

消费方式:

consumer采用pull(拉)模式从broker中读取数据.
push(推)模式很难适应消费速率不同的消费者,因此消息发送速率是由broker决定的.它的目标是尽可能以最快速传递消息,但是这样很容易造成consumer来不及处理消息,典型的表现就是拒绝服务以及网络阻塞.而pull模式则可以根据consumer的消费能力以适当速率消费消息.
pull模式不足之处是,如果kafka如果没有数据,消费者可能会陷入循环中,一直返回空数据.针对这一点,kafka的消费者在消费 数据时会传入一个时长参数timeout,如果当前没有数据可供消费,consumer会等待一段时间之后在返回,这段时长即为timeout.
 

分区分配策略:

一个consumer group中有多个consumer,一个topic有多个partition 所以必然涉及到partition的分配问题,即确定哪个partition由哪个consumer来消费.
kafka有三种分配策略:RoundRobin,Range,Sticky

RoundRobin:

 

Range:

 

Kafka高效读写数据:

Kafka的producer生产数据,要写入到log文件中,写的过程是一直追加到文件末端为顺序写,官网有数据表明,同样的磁盘顺序写能到600M/s,而随机写只有100k/s.这与磁盘的机械结构有关,顺序写之所以快,是因为其省区了大量磁头寻址的时间.