- 1、Kafka的组成分为生产者、broker、消费者
- 2、kafka解决的问题:解耦、削峰
- 3、一个topic下有多个partition,一个partition下有主从副本,副本位于不同的机器当中,partition中有多个message,massage由多个offset组成
-
4、数据运行流程:
-
生产者:
- 1、生产者生产数据,然后从ZK中获取leader信息,发送到leader中(写到log、logindex、timeindex),leader同步数据到follower,kafka采用所有副本同步成功算成功机制
- 2、kafka采用Isr机制保证实时检测状态健康的follower(解决有的副本机器长时间等待,导致不能给生产者响应ack)
- 3、kafka采用高水位线机制保证数据安全(通过水位线记录数据同步最找的机器的位置,如果服务产生故障,将会删除所有机器中高于水位线的数据,从最低水位线位置开始同步数据)
- 5、所有数据同步完成后,会发送ack给leader。leader再响应给producer
- 6、ack的状态:0:不进行确认 1:leader确认成功 -1:所有副本同步
- 7、使用ack为-1状态时,会造成数据重复写入,采用幂等性策略解决问题(producer会将pid+sequence的组合信息发送给broker,然后保存到partition,如果发送的数据sequence小于保存的值,就不再写入数据)
-
消费者:
- 1、消费者消费数据时,首先从zookeeper获取数据所在的位置和偏移量
- 2、消费者根据ZK返回的数据信息,找到数据所在的节点文件,从上次消费的位置继续消费
- 3、消费策略:顺序消费、范围消费(规定消费者消费数据位置)
- 3、数据积压问题:增大kafka的分区、增加spark、flink的并行度
-
版权声明:本文为qq_42160456原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。