kafka官网译文
項目中對kafka有所使用,但一直都是根據公司內部wiki提供的demo來寫的,對kafka有一定了解,但是可能不夠系統,全面;于是最近找時間瀏覽了一下官網對kafka的介紹,翻譯如下:
一句話概括kafka
kafka是一個具備很強容錯能力和實時處理能力的分布式流數據平臺。
kafka的應用場景
kafka可在以下場景中應用:基于流數據的發布訂閱消息系統、基于流數據的高效異步通信中間件、基于流數據的高可用分布式存儲;可以替代傳統的消息隊列和企業級消息系統;
核心API
核心API有四類:
生產者API
一般生產者發布數據到topic(后面會介紹topic),
消費者API
消費(處理)發布到topic的數據
流API
(暫時沒研究明白,這里先跳過,后面的文章繼續寫)
連接API
用于kafka和其他系統如mysql、mogodb、hbase等進行數據交互;
通信協議
客戶端與服務器的通信使用的是基于TCP的簡單,高效的并且與語言無關的TCP協議!
主題和日志
一個主題(topic)就是一類數據或者記錄的名字;主題支持多個訂閱者訂閱,即一個主題可以被零個,一個或者多個消費者消費,處理;
一個主題會被分成好多個partition,每一個partition維護著一個log;主題中每一個partition的記錄都有一個順序的ID 記作:offset 偏移量;
kafka集群記錄了所有發布的消息(記錄),無論是否被消費(有一種配置保留時長的機制);實際上唯一的元數據保留在消費者那里,元數據僅僅記錄了消費者在partition的便宜量,或者消費記錄的ID;這樣以來,消費就可以由消費者自己控制。消費者可以設置這個偏移量。
主題被分為patition的意義在于兩方面:一個是數據橫向擴展行,另一個是消費的并發性能的提升;
每一個partition的數據在kafka集群中都是有備份的。每一個partition都有一個server作為leader,其他的作為follower;leader負責讀寫請求,follower負責同步leader的數據; 每一個服務器都扮演一個或多個partition的leader角色,和一些個partition的follower角色,有利于負載均衡。
總結
- 上一篇: 十进制转n进制
- 下一篇: 解决tomcat中temp文件夹出现项目