1.簡介
kafka是apache公司開發的一款分布式釋出-訂閱消息系統。其主要有兩個特點,一是快速,每秒可以生産25萬條消息(50MB),處理55萬條資料(110MB)。二是持久化存儲資料,并可以在叢集中複制,防止資料丢失。
2.術語
(1).主題(Topic)
一組消息的歸納。一個kafka叢集中可以建立多個主題,以主題為機關來管理消息,主題之間互相隔離,互不影響。
(2).分區(Partition)
主題中還可以劃分出多個分區,以分區為機關對主題中的資料進行存儲和備份,消息的實際存儲機關。
(3).分段(Segment)
分區内會被劃分為多個大小相等的segment,segment中log檔案用來存放資料分段,index用來存放索引資訊。
(4).消息(Message)
由一個key,一個value和時間戳構成。
(5).序号(Offset)
分區中每個消息都有的一個連續的序列号,用來唯一辨別消息。
(6).生産者(Producer)
釋出消息的對象。
(7).消費者(Consumer)
訂閱消息并處理消息的對象。
(8).叢集(Cluster)
已釋出的消息儲存在一組伺服器中,稱之為kafka叢集。叢集中的每一個伺服器都是一個代理(broker)。消費者可以訂閱一個或多個主題(topic),并從broker拉資料,進而消費這些已釋出的消息。
(9).副本(Replication)
每個分區都可以有多個副本,存儲在不同伺服器中,共同處理請求提升性能,保證了kafka的容錯能力。多個副本中會有一個leader和多個follower,follower隻對外提供讀能力。
3.核心API
(1).Admin API
允許管理和檢測topic、broker以及其他kafka對象。
(2).Producer API
釋出消息到一個或者多個topic。