目录

一、kafka的消费方式

 二、消费者总体工作流程

三、消费者组

  消费者组工作原理

  消费者组初始化

 消费者组详细消费流程

 消费一个主题

 消费一个分区


消费者组案例

 四、分区分配以及再平衡

分区分配策略Range

 分区分配策略Roundrobin


分区分配策略Sticky以及再平衡

五、offest位移

offest默认维护位置

自动offset

手动offset

指定offset

六、按照指定时间消费


 七、消费者事务

八、数据积压


一、kafka的消费方式


由 broker 决定消息推送的速率,对于不同消费速率的 consumer 就不太好处理 了。消息系统都致力于让 consumer 以最大的速率最快速的消费消息,但不幸的是, push 模式下, 当broker 推送的速率远大于 consumer 消费的速率时,consumer 恐怕就要崩溃了 。最终 Kafka 还是选取了传统的 pull 模式。


Pull 模式的另外一个好处是 consumer 可以自主决定是否批量的从 broker 拉取数据 。 Push 模式必须在不知道下游 consumer 消费能力和消费策略的情况下决定是立即推送每条消息还是缓存之后批量推 送。如果为了避免 consumer 崩溃而采用较低的推送速率,将可能导致一次只推送较少的消息而造成浪 费。 Pull 模式下, consumer 就可以根据自己的消费能力去决定这些策略。



Pull 有个缺点 是, 如果 broker 没有可供消费的消息,将导致 consumer 不断在循环中轮询,直到新消息到达 。为了避免这点, Kafka 有个参数可以让 consumer 阻塞知道新消息到达 ( 当然也可以阻塞知道 消息的数量达到某个特定的量这样就可以批量发送 )



kafka消费情况 kafka的消费_数据

 二、消费者总体工作流程

每个分区的数据只能由消费者组中的一个消费者消费

kafka消费情况 kafka的消费_数据_02

三、消费者组

  消费者组工作原理

kafka消费情况 kafka的消费_分布式_03

kafka消费情况 kafka的消费_kafka消费情况_04

 

  消费者组初始化

kafka消费情况 kafka的消费_分布式_05

 

 消费者组详细消费流程

kafka消费情况 kafka的消费_kafka消费情况_06

 

 消费一个主题

kafka消费情况 kafka的消费_kafka_07

 

kafka消费情况 kafka的消费_数据_08

kafka消费情况 kafka的消费_kafka_09

 

 

 消费一个分区

 

kafka消费情况 kafka的消费_kafka_10

kafka消费情况 kafka的消费_kafka_11

 

kafka消费情况 kafka的消费_数据_12

消费者组案例

kafka消费情况 kafka的消费_java_13

 消费者组id相同,那么都在同一个消费者组!

一个分区的数据只会由一个消费者消费!

kafka消费情况 kafka的消费_java_14

 

 四、分区分配以及再平衡

分区分配策略Range

kafka消费情况 kafka的消费_分布式_15

 

kafka消费情况 kafka的消费_kafka消费情况_16

 如果有多个Topic,可能会导致多出来的分区都由C0消费,导致C0消费过多,即数据倾斜!

kafka消费情况 kafka的消费_kafka消费情况_17

 

 分区分配策略Roundrobin

kafka消费情况 kafka的消费_kafka消费情况_18

 

kafka消费情况 kafka的消费_kafka_19

 

kafka消费情况 kafka的消费_kafka_20

分区分配策略Sticky以及再平衡

kafka消费情况 kafka的消费_kafka消费情况_21

 

kafka消费情况 kafka的消费_分布式_22

 

五、offest位移

offest默认维护位置

kafka消费情况 kafka的消费_分布式_23

 

kafka消费情况 kafka的消费_java_24

kafka消费情况 kafka的消费_java_25

 

自动offset

kafka消费情况 kafka的消费_数据_26

kafka消费情况 kafka的消费_分布式_27

 

手动offset

kafka消费情况 kafka的消费_分布式_28

 

kafka消费情况 kafka的消费_分布式_29

 

指定offset

kafka消费情况 kafka的消费_kafka消费情况_30

 

kafka消费情况 kafka的消费_kafka消费情况_31

kafka消费情况 kafka的消费_java_32

还需要保证分区分配完成!

kafka消费情况 kafka的消费_kafka_33

 

六、按照指定时间消费

kafka消费情况 kafka的消费_java_34

 

kafka消费情况 kafka的消费_分布式_35

 七、消费者事务

kafka消费情况 kafka的消费_java_36

kafka消费情况 kafka的消费_kafka_37

 

kafka消费情况 kafka的消费_kafka消费情况_38

 

 

八、数据积压

kafka消费情况 kafka的消费_分布式_39