Kafka是一個由Scala和java編寫的高吞吐量的分佈式發佈訂閱消息java
官網地址:http://kafka.apache.org/introapache
kafka是一個消息隊列.生產者經過網絡把消息發到kafka集羣,集羣向消費者提供消息 。每一個消息 以topic爲單位。消費者以組爲單位。與zookeeper保持心跳鏈接 。只有在leader不工做時才與follower進行交互 。消費者經過偏移量offset 從指定位置讀取消息 ,生產者推送消息 ,消費者拉取消息服務器
持久化消息 存在硬盤上。比較穩定網絡
高吞吐量,每秒數百萬架構
支持經過Kafka服務器和消費機集羣來分區消息。分佈式
支持Hadoop並行數據加載oop
Brokerblog
Kafka集羣包含一個或多個服務器,這種服務器被稱爲broker [5]隊列
Topicget
每條發佈到Kafka集羣的消息都有一個類別,這個類別被稱爲Topic。(物理上不一樣Topic的消息分開存儲,邏輯上一個Topic的消息雖然保存於一個或多個broker上但用戶只需指定消息的Topic便可生產或消費數據而沒必要關心數據存於何處)
Partition
Partition是物理上的概念,每一個Topic包含一個或多個Partition.
Producer
負責發佈消息到Kafka broker
Consumer
消息消費者,向Kafka broker讀取消息的客戶端。
Consumer Group
每一個Consumer屬於一個特定的Consumer Group(可爲每一個Consumer指定group name,若不指定group name則屬於默認的group)
寫和讀只能從leader中讀,Flllower不讀。
若是leader掛了。Follower爲成leader
偏移量Offset
消費者和集羣都和Zookeeper有關係