--- title: Apache Kafka introduction tags: Apache, Kafka description: Apache Kafka introduction --- # Apache Kafka 學習筆記 ## Apache Kafka introduction  Kafka 介紹影片 https://www.youtube.com/watch?v=BuE6JvQE_CY Kafka 是一個分散式訊息引擎與流處理平臺 (大數據管理 tool),經常用做企業的訊息匯流排、實時資料管道,可以將其當做儲存系統來使用,其系統架構具有許多優點。 * 高吞吐、低延時:這是 Kafka 顯著的特點,Kafka 能夠達到百萬級的訊息吞吐量,延遲可達毫秒級。 * 持久化儲存:Kafka 的訊息最終持久化儲存在磁碟之上,提供了順序讀寫以保證效能,並且通過 Kafka 的副本機制 (replicaset) 提高了資料可靠性。 * 分散式可擴充套件:Kafka 的資料是分散式儲存在不同 broker 節點的,以 topic 組織資料並且按 partition 進行分散式儲存,整體的擴充套件性都非常好。 * 高容錯性:叢集中任意一個 broker 節點當機,Kafka 仍能對外提供服務。 --- ## Kafka架構 kafka 組件 broker 由數個 Topic 組成,一個 Topic 由數個 partition 組成 **Kafka 主要架構如下**  * Producer(生產者): 為向 broker 中寫入訊息的腳色,回選擇要從哪一個 Topic 中寫入訊息 * Consumer(消費者): 為向 broker 中訂閱者的服務,向消費者釋出訊息,消費者可以組成 Consumer Group ,此時 Broker 只會向 Consumer Group 釋放一次訊息 * Broker: Kafka 通常以 cluster 的方式建置,多個 broker 組成一個 kafka cluster,每一個 broker 就是一個伺服器。 * Topic: broker 由數個 partition 組成,以 database 的觀念來看,其類似 table 的概念。 * message: kafka 儲存資料的地方,每一條訊息由一個 key, value, timestamp 所組成。 * offset: message 儲存位置類似 dict 中 index 的概念,如儲存資料時沒有指定 key value,則假設本次訊息的 offset 為 N,下一次訊息儲存 offset 為 n+1。 --- ## Kafka API  * Producer API: 釋出一個訊息到一個或多個 Topic。 * Consumer API: 訂閱一個或多個 Topic 並處理其中訊息。 * Streams API: 為流處理器,從一個或多個 topic 消費輸入流,並生產一個輸出流到1個或多個輸出 topic,有效地將輸入流轉換到輸出流。 * Connector API: 可構建或執行可重用的生產者或消費者,將 topic 連線到現有的應用程式或資料系統。例如,連線到關聯式資料庫的聯結器可以捕獲表的每個變更。 ### Streams API 補充 #### Stream Processing streams API 使用流計算,在流計算中,輸入是持續的,在系統上來看輸入和輸出都是持續發生的,因此在流計算中要求即時性高  #### Batch Processing 批量處理模型中,將輸入先定義計算邏輯,而後將數據統一輸入,統一計算後輸出。  --- ## Thank you! :dash: You can find me on - GitHub: https://github.com/shaung08 - Email: a2369875@gmail.com
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up