kafka是什么
kafka是一个高吞吐量的分布式的发布订阅消息系统。
kafka数据结构
我们以关系型数据库为例子,toppic好比数据表,partition好比数据库分区,每个分区下面是每条消息(数据)。
kafka集群结构
controller选取方法:谁先在zookeeper创建元数据,谁就是controller;
controller与follower区别:
controller和follower都会监听zookeeper,controller出问题,follower会竞争controller;
controller用于同步元数据,比如,创建topic时,主题元数据会存储在zookeeper和controller中,follower会从controller同步元数据,所以整个系统都存储了元数据;
数据安全性实现:每个partition都有主和从,从用于同步数据保证数据安全,主用于读写,供消费者生产者使用;
数据位置记录:生产offset、消费offset,生产者和消费者会对其offset进行操作
kafka能力分析:
kafka是高并发,高性能,高可用的消息系统;
高可用:我们从上面的broker的controller、follower以及partition的replica可以看出他的高可用性;
高并发:网络模块处理,达到高并发效果;
高性能:在高并发的前提下,我们需要高性能才能维护高并发,通过高效利用CPU,内存,硬盘达到效果;
kafka模块分析:
网络模块:NIO模型配合reactor模式
num.io.threads handler线程数目
num.network.threads processor线程数目