iT邦幫忙

DAY 14
1

分散式資料處理,以Stream Computing為例系列 第 14

Day 14: Apache Kafka (2)

先來介紹一下Kafka的基本架構吧 (以下圖片都取自Kafka documentation)。

基本上Kafka是一個broker的角色,仲介producer與consumer。Kafka一般是由多個節點所構成的cluster。

Kafka有自己的producer API和consumer API,produce/consumer client 必須要使用或依照API spec自行實作存取的方式。

一組資料流稱為一個Topic,為避免一個Topic的資料量過大,所以一個Topic可以分成好幾個Partition,每個Partition會在不同的節點上(如果可以的話)。

Producer必須要自己決定要將資料送到哪個partition,在producer API裡有一個參數可以讓使用者指定partition key,然後producer API用hash方式決定partition。

Kafka可以彈性的支援point-to-point和pub/sub兩種Queue mode。主要是透過一個Consumer Group的抽象,每個Consumer Group當做是一個虛擬consumer,但可以由多個實體的consumer組成。一組Point-to-point就是將所有consumer都劃成同一個Consumer Group;而Pub/Sub是將不同Pub的Sub分成不同的Consumer Group

一個重點是,每一個Consumer只會同時bind一個partition,也就是說,一個Consumer只會找一個partition來拉資料。

這帶來一些很重要的暗示,也是Kafka的限制所在,這些限制就下次再講吧。


上一篇
Day 13: Apache Kafka
下一篇
Day 15: Apache Kafka (3)
系列文
分散式資料處理,以Stream Computing為例30

尚未有邦友留言

立即登入留言