1. 程式人生 > >Kafka的介紹之一

Kafka的介紹之一

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 資訊。