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線程數目