Kafka 官方文檔學習筆記 -- introduction篇

Introduction

Kafka 是一個分佈式流平臺:
  1. 發佈和訂閱記錄流,像消息隊列/系統
  2. 容錯持久地存儲記錄流
  3. 有記錄流出現時處理
kafka概念:
  1. kafka是在多個服務器上以集羣方式運行,並有多個數據中心
  2. 記錄流存儲在叫topics的類別裏
  3. 每個記錄包含了一個key,一個value和一個時間戳
4個APIs:
  1. Producer API : 允許程序發佈1個數據流給一個或多個topics
  2. Consumer API : 允許程序訂閱一個或多個topics並處理這些數據流
  3. Streams API : 允許程序扮演流處理器,從一個或多個topics中得到輸入流併產生輸出流給一個或多個topics
  4. Connector API : 建立和運行可重用的生產者和消費者來連接kafka topics到已有的程序或數據系統

api

Topics & Logs:

Topics是multi-subscriber, 可以有0/1/多個消費者訂閱數據

topics

每個topic是一個Partitioned log

partition 是有序的,不可改變的,被持續append的,結構化的commit log

kafka cluster持久地保存所有records(無論是否被消費過),根據一個可配置的保留時常

topics

每個消費者保留的唯一metadata是offset,這個offset是被消費者控制的,它可隨意調整消費數據的順序

kafka 消費者可以隨意來或走,而不會影響集羣或其他消費者:可以用命令行來tail任何topic的內容而不用改變其他消費者正在消費的東西

分佈:

每個partition分佈在多個servers上,一個server上有多個partitions,以達到容錯性

一個server扮演leader,其他扮演followers:

– leader 處理所有讀寫請求

– followers 被動複製leader

– 如果leader fail,從followers中選舉leader

– 每個server扮演自己partition的leader 和 別人的follower

Geo-Replication:

主動/被動地鏡像,來備份和恢復

生產者:

負責決定某個記錄分配在這個topic的哪個partition – 負載均衡

消費者:

消費者分成組,每個發佈到一個topic上的記錄被放在每個組的一個消費者實例中,消費者實例可以在不同的進程或機器中

如果所有消費者都在一個組,則records會平均分配

如果所有消費者都不在一個組,則每個record分配在每個消費者上

topics

通常一個logical subscriber對應一個消費者組。

消費的方式:

– partitions被平均分給每個consumer實例,所以在任何時刻每個實例都是一部分partitions的唯一消費者

– 如果一個實例新來,就從現有實例分配一點過來

– 如果一個實例掉線,就將它的任務拆分給其他實例

kafka只支持對一個partition內的records的總調度,而不管partition之間的(partition內部調度和按key的切分已經足夠)

Kafka as a Storage System:

寫入kafka的數據被存在disk中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章