选举机制

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可以充分利用磁盘的顺序读写性能

顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写