Kafka消费者是pull(拉)还是push(推)模式,这种模式有什么好处?
一、概述回答
Kafka中的Producer和consumer采用的是push-and-pull模式,即Producer只管向broker push消息,consumer只管从broker pull消息,两者对消息的生产和消费是异步的。
二、这种模式的好处是什么
1、控制权
使用pull(拉)模式主动权在消费者,消费者可以自由控制拉取数据的频率和数量,进而更好的控制消费的进度,更好的适应不同的使用场景。
2、异步处理
使用pull模式的消费者可以异步处理消息,即在拉取到消息之后不需要立即进行处理,可以选择在适当的时候进行处理,从而提高了系统的吞吐量和并发性能。
3、消费者本地缓存
使用pull模式的消费者,可以在本地缓存拉取到消息,从而降低频繁地I/O操作对系统性能的影响。同时,缓存一定量的消息,消费者还可以避免在消费方出现问题时丢失未被处理的消息。
三、这种模式有什么缺点,如何规避
1、Kafka消费者在拉取时会在一段时间内频繁的向Kafka服务器发送请求,这个过程中会大量的使用网络带宽,如果每个消费者都这么做就会浪费当了的带宽。
规避方法:
使用Kafka集群提供的Consumer Group能力,多个消费者共同消费一个主题,每个消费者只消费被分配到的分区的数据,而不是整个主题的数据,这样就能避每个消费者都向Kafka服务器频繁的请求数据。