前言
… …
核心原理
1.分布式架构
由多个broker服务组成,这些broker协同工作,共同存储和管理数据,每个broker都可以独立扩展,使得kafka能够水平扩展以处理大量数据
2.分区(partitioning)
kafka将主题(topic)划分为多个分区,每个分区是一个有序的、不可变的记录序列,可以单独进行读写操作
分区允许kafka并行处理数据,提高吞吐量和容错性
3.复制(replication)
kafka支持主题的分区复制,每个分区由多个副本(replicas)
默认情况下,副本分布在不同的broker上,以提高数据的可用性和容错能力
其中一个副本是领导者(leader),负责处理读写请求;其它副本是跟随者(follower),从领导者复制复制
4.生产者(producer)
生产者是向kafka主题发送消息的应用程序
生产者可以将消息发送到特定的分区或使用键的哈希来自动分配分区
生产者可以使用确认机制来确保消息已成功写入kafka
5.消费者(comsumer)
消费者从kafka主题读取消息
kafka支持多个消费者实例从一个主题读取数据,每个实例可以独立的消费数据
消费者可以以不同的偏移量(offset)开始读取数据,支持从最新记录或历史记录开始消费
6.zookeeper集成
kafka使用zookeeper来存储集群元数据、配置信息等
zookeeper帮助管理broker之间的协调,如分区的领导者选举、集群成员管理等
7.日志结构存储索引
使用LSM树作为其存储机制,达到高效的读写操作
数据首先写入到内存的一个日志结构中,然后定期刷新到磁盘上的SSTable文件中
8.零拷贝
kafka利用操作系统的零拷贝技术来减少数据传输时的cpu负担和内存复制次数,提高数据传输效率
结语
… …