Kafka是一個分佈式、可分區、可複製的消息系統,Kafka系統設計的術語整理以下:
Topic: Kafka消息以Topic爲單位進行管理,Topic爲業務邏輯單元。
Producer: 消息發送者,是向Topic發生消息的程序主體。
Consumer: 消息消費者:是從Topic中獲取消息進行消費的主體。
Broker: Kafka以集羣方式運行,每一個服務進程叫Broker。
Partition: 每一個Topic中可包含一個或多個分區(Partition),每一個分區都有一系列有序的、不可變的消息隊列組成,Partition是確保消息有序消費的最小單元。
Consumer Group: 多個Consumer能夠組成一個Group,經過Group實現消費者的集羣和負責均衡;對於同一條消息,只會被Group中的一個Consumer消費。
Offset:每一個消息隊列有一個連續的序號叫Offset,做爲隊列中消息的標識分佈式
Kafka系統消息隊列數據生成和消費模型以下。spa
每一個Producer和Consumer分別表示一個線程。線程
和通常的消息隊列組件不一樣,Kafka可在配置的時間段內,保留消息隊列中的全部消息,無論消息是否已經被消費。好比配置的消息保留時間爲24小時,則在24小時內,消息能夠被重複消費。因爲這個特性,Consumer在每消費一條消息時,須要記錄當前消息的Offset並持久化,以便在Consumer重啓後,知道從什麼地方開始消費。固然Consumer啓動後,能夠從頭、從任意位置、從最新消息等任意方式開始消費消息。設計
未完待續...blog