1):Apache kafka介紹及架構詳解
假設一個場景:
資料來源:
應用系統A 產生的使用者訪問資料和訂單資料
10000 條一秒鐘
push:推送資料
訊息系統:佇列 產生的資料量>資料量
pusll:拉取資料
訊息系統kafka:
分散式系統佇列系統
分佈/訂閱功能
不恰當比喻:
釋出者來發布文章 -> 推送文章
微信公眾號: 類似於 -Topic主題/類別
訂閱者1
訂閱則2
訂閱則3
訂閱則4
...訂閱者 就能接受到這篇文章訊息
kafka的功能:
-1:分散式訊息Message系統(釋出/訂閱功能)
0.8.x功能
-2:Connector API
將Kafka Topics中的資料儲存到RDBMS資料庫中
0.9.x
-3:Stream Compute
可以對Kafka中的資料進行流實計算功能
0.10.x
SparkStreaming與kafka整合,使用的版本為0.8.2.x
kafka系統能夠通過分散式提交日誌處理資料,kafka中topics使用者
定於的一個類別
Kafka Cluster:
- 訊息系統,儲存資料
提交日誌格式檔案
- 分散式:
有多臺資料,進行儲存資料
- Topic
儲存某一類的資料(訊息),類比於微信公眾號
儲存資料類似於HDFS
-i,按照分割槽partition儲存
相當於資料夾下面有很多檔案
-ii,分割槽資料有多個副本
replications(每個資料有3個副本)
- 分佈/訂閱
消費者(使用者)可以訂閱Topic(類比於關注某個微信公眾號)
只要生產者向Topic傳送資料,訂閱者就可以自動接受到資料
進行處理
一個典型的Kafka叢集中包含若干個Producer,(Kafka支援水平擴充套件,一般Broker
數量越多,叢集吞吐率越高),若干個Consumer Group,以及一個Zookeeper叢集
Kafka通過Zookeeper管理叢集配置,選舉leader,以及在Consumer Group發生變化
時進行reablance。
Producer使用push模式將訊息釋出到broker,Consumer使用pull模式從broker訂閱
並消費訊息
TOPIC & PARTITION
一個Topic分為多個Partition來進行資料管理
一個Partition中的資料是有序,不可變的
使用偏移量(offset)唯一標識一條資料,是
一個long型別的資料;
Partiton接受到producer傳送過來資料後,會
產生一個遞增的offset偏移量資料,同是將數
據儲存到本地的磁碟檔案中(檔案內容追加
的方式寫入資料)
基本懂得Kafka流程,搭建起來很簡單