Kafka的介紹之一
阿新 • • 發佈:2019-01-13
kafka官網:http://kafka.apache.org
kafka之前及叫分散式消費系統,現在叫分散式流式平臺
1.釋出與訂閱
像訊息系統一樣讀寫資料流。
2.過程
編寫實時響應事件的可伸縮流處理應用程式。
3.商店
將資料流安全地儲存在分散式、複製的、容錯的叢集中。
Kafka通常用於兩大類應用程式:
構建實時流資料管道,可靠地獲取系統或應用程式之間的資料
構建轉換或響應資料流的實時流應用程式
首先是幾個概念:
Kafka作為叢集執行在一個或多個伺服器上,這些伺服器可以跨多個數據中心。
Kafka叢集將記錄流儲存在稱為主題的類別中。
每個記錄由一個鍵、一個值和一個時間戳組成。
Kafka 訊息系統
app -----> Flum(收集)—> kafka ----->計算(Spark,Flink) 夯住或者作業失敗
Kafka: 3個程序 producer broker consumer
生產者 boker (訊息緩衝作用) 消費者
列舉專案:
flume --> HDFS --> Hive 再用Spark 離線計算
Flum(收集)—> kafka ----->計算(Spark,Flink) 線上實時
詳解:當Flum接受資料要傳輸給Spark進行計算,例如遇到節假日,雙十一等,資料量猛增的時候就必須用到kafka進行快取,Spark如果只能計算2G的容量,一旦資料增加到100G,如果直接從Flume到Sprak,Spark會夯住,有kafka的存在大大的減少了Spark的壓力,做實時就kafka+Sprak,做離線用hive+Spark。
Kafka的原始碼是Scala寫的,一般企業用到的是2.10.4版,
相關概念
1.producer: 訊息生產者,釋出訊息到 kafka 叢集的終端或服務。 2.broker: kafka 叢集中包含的伺服器。 3.topic: 每條釋出到 kafka 叢集的訊息屬於的類別,即 kafka 是面向 topic 的。 4.partition: partition 是物理上的概念,每個 topic 包含一個或多個 partition。kafka 分配的單位是 partition。 5.consumer: 從 kafka 叢集中消費訊息的終端或服務。 6.Consumer group: high-level consumer API 中,每個 consumer 都屬於一個 consumer group,每條訊息只能被 consumer group 中的一個 Consumer 消費,但可以被多個 consumer group 消費。 7.replica: partition 的副本,保障 partition 的高可用。 8.leader: replica 中的一個角色, producer 和 consumer 只跟 leader 互動。 9.follower: replica 中的一個角色,從 leader 中複製資料。 10.controller: kafka 叢集中的其中一個伺服器,用來進行 leader election 以及 各種 failover。 12.zookeeper: kafka 通過 zookeeper 來儲存叢集的 meta 資訊。