选举机制
Follower通过队列和zxid等顺序标识保证请求的顺序处理,一言不合就会重新同步Leader
zxid是由epoch和计数器组成。
leader节点向follower发送心跳信息
如果zxid,epoch大于自身,就可以投票给leader
分布式
partitions的目的有多个.最根本原因是kafka基于文件存储.通过分区,可以将日志内容分散到多个上,来避免文件尺寸达到单机磁盘的上限,每个partiton都会被当前server(kafka实例)保存;可以将一个topic切分多任意多个partitions,来消息保存/消费的效率.此外越多的partitions意味着可以容纳更多的consumer,有效提升并发消费的能力
offset保证顺序,partitions提高并发数,group提供广播能力,数据存在日志保留2天。
主从同步
可异步和同步返回主从结果
partition
如果你指定了partition,那就是所有消息发往同1个partition,就是有序的。并且在消费端,Kafka保证,1个partition只能被1个consumer消费。
为什么高吞吐
kafka的消息是不断追加到文件中的,这个特性使kafka可以充分利用磁盘的顺序读写性能
顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写