本文主要内容
一、kafka架构
kafka主要由producter,consumer,broker,zookeeper组成。使用topic对消息进行分类,每个topic由多个不同broker机器上的partition构成,paritition分为leader和follower分区,follower用于数据的同步备份,当leader分区的机器出现异常后,从follower中选取新的leader。consumer按group进行分组,同一个group的consumer不能消费同一个paritition。
producter:数据的生产方,通过push的方式将数据发送到broker
consumer:数据的消费方,通过pull的方式从broker今行获取数据
broker:一个kafka独立的服务器,进行消息偏移量的保存及消息存储。多个broker构成一个kafka集群。
zookeeper:进行kafka集群的管理,配置,容错处理等。
二、kafka 特性简介
2.1、kafka 高可靠性
通过主从分区及数据持久化落盘,保证数据不丢失。并从通过ack机制保证数据处理过程中的可靠性。
2.2、kafka 高吞吐
a、分批发送:消息由producter进行分批发送,提高吞吐率。
b、消息压缩:将发送的批消息进行压缩,减少带宽及IO使用
c、顺序读写:消息顺序读写,减少磁盘寻址及IO操作
d、零拷贝:采用零拷贝方式移动数据,避免内核之间切换
2.3、kafka 水平扩展
kakfa通过扩充broker数量进行集群水平的扩展,提高吞吐及负载均衡,通过扩充partition数量和consumer数量进行扩充数据并发处理能力。
2.4、kafka 数据持久化
kafka通过数据落盘进行数据的持久化处理,数据按paritition以log文件方式进行存储,通过索引文件及offset进行获取消息。
三、kafka数据处理原理
3.1、消息生产者
3.1.1、消息生产流程:
a、producter将消息处理成ProducterRecord