kafka 三高架構設計剖析
來源:碼哥位元組Kafka 核心問題
簡單講下 Kafka 的架構? Kafka 是推模式還是拉模式,推拉的區別是什麼? Kafka 如何廣播訊息? Kafka 的訊息是否是有序的? Kafka 是否支援讀寫分離? Kafka 如何保證資料高可用? Kafka 中 zookeeper 的作用? 是否支援事務? 分割槽數是否可以減少?
Kafka 架構中的一般概念:
Producer:生產者,也就是傳送訊息的一方。生產者負責建立訊息,然後將其傳送到 Kafka。 Consumer:消費者,也就是接受訊息的一方。消費者連線到 Kafka 上並接收訊息,進而進行相應的業務邏輯處理。 Consumer Group:一個消費者組可以包含一個或多個消費者。使用多分割槽 + 多消費者方式可以極大提高資料下游的處理速度,同一消費組中的消費者不會重複消費訊息,同樣的,不同消費組中的消費者訊息訊息時互不影響。Kafka 就是透過消費組的方式來實現訊息 P2P 模式和廣播模式。 Broker:服務代理節點。Broker 是 Kafka 的服務節點,即 Kafka 的伺服器。 Topic:Kafka 中的訊息以 Topic 為單位進行劃分,生產者將訊息傳送到特定的 Topic,而消費者負責訂閱 Topic 的訊息並進行消費。 Partition:Topic 是一個邏輯的概念,它可以細分為多個分割槽,每個分割槽只屬於單個主題。同一個主題下不同分割槽包含的訊息是不同的,分割槽在儲存層面可以看作一個可追加的日誌(Log)檔案,訊息在被追加到分割槽日誌檔案的時候都會分配一個特定的偏移量(offset)。 Offset:offset 是訊息在分割槽中的唯一標識,Kafka 透過它來保證訊息在分割槽內的順序性,不過 offset 並不跨越分割槽,也就是說,Kafka 保證的是分割槽有序性而不是主題有序性。 Replication:副本,是 Kafka 保證資料高可用的方式,Kafka 同一 Partition 的資料可以在多 Broker 上存在多個副本,通常只有主副本對外提供讀寫服務,當主副本所在 broker 崩潰或發生網路一場,Kafka 會在 Controller 的管理下會重新選擇新的 Leader 副本對外提供讀寫服務。 Record:實際寫入 Kafka 中並可以被讀取的訊息記錄。每個 record 包含了 key、value 和 timestamp。
Kafka Topic Partitions Layout
Kafka 將 Topic 進行分割槽,分割槽可以併發讀寫。
Kafka Consumer Offset
zookeeper
Broker 註冊:Broker 是分散式部署並且之間相互獨立,Zookeeper 用來管理註冊到叢集的所有 Broker 節點。 Topic 註冊:在 Kafka 中,同一個 Topic 的訊息會被分成多個分割槽並將其分佈在多個 Broker 上,這些分割槽資訊及與 Broker 的對應關係也都是由 Zookeeper 在維護 生產者負載均衡:由於同一個 Topic 訊息會被分割槽並將其分佈在多個 Broker 上,因此,生產者需要將訊息合理地傳送到這些分散式的 Broker 上。 消費者負載均衡:與生產者類似,Kafka 中的消費者同樣需要進行負載均衡來實現多個消費者合理地從對應的 Broker 伺服器上接收訊息,每個消費者分組包含若干消費者,每條訊息都只會傳送給分組中的一個消費者,不同的消費者分組消費自己特定的 Topic 下面的訊息,互不干擾。
答案
簡單講下 Kafka 的架構?
Producer、Consumer、Consumer Group、Topic、Partition
Kafka 是推模式還是拉模式,推拉的區別是什麼?
Kafka Producer 向 Broker 傳送訊息使用 Push 模式,Consumer 消費採用的 Pull 模式。拉取模式,讓 consumer 自己管理 offset,可以提供讀取效能
Kafka 如何廣播訊息?
Consumer group
Kafka 的訊息是否是有序的?
Topic 級別無序,Partition 有序
Kafka 是否支援讀寫分離?
不支援,只有 Leader 對外提供讀寫服務
Kafka 如何保證資料高可用?
副本,ack,HW
Kafka 中 zookeeper 的作用?
叢集管理,後設資料管理
是否支援事務?
0.11 後支援事務,可以實現”exactly once“
分割槽數是否可以減少?
不可以,會丟失資料
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70024420/viewspace-3009055/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 優秀程式設計師,如何提高架構能力?程式設計師架構
- 2020年登高架設找答案及登高架設考試軟體
- kafka原始碼剖析(三)之日誌管理-LogManagerKafka原始碼
- 深入剖析KafkaKafka
- 2020年登高架設免費試題及登高架設考試申請表
- Kafka Fetch Session剖析KafkaSession
- Kafka ACL實現架構以及實操案例剖析Kafka架構
- Kafka監控系統Kafka Eagle剖析Kafka
- kafka ISR設計及水印與leader epoch副本同步機制深入剖析-kafka 商業環境實戰Kafka
- Kafka事務原理剖析Kafka
- Kafka 原始碼剖析(一)Kafka原始碼
- Kafka的生產者優秀架構設計Kafka架構
- 《Kafka實戰》之架構和設計邏輯Kafka架構
- Kafka原理剖析之「Topic建立」Kafka
- Apache Kafka設計思考ApacheKafka
- Kafka 的設計思想Kafka
- 深入理解Kafka核心設計及原理(三):消費者Kafka
- 剖析JS和Redis的資料結構設計:陣列JSRedis資料結構陣列
- 大曝光!從RabbitMQ平滑遷移至Kafka架構設計方案!MQKafka架構
- 架構設計(三):引入快取架構快取
- 剖析 HTTPS 的設計思路HTTP
- Kafka原理剖析之「位點提交」Kafka
- Flink Kafka Connector與Exactly Once剖析Kafka
- 聊一聊設計模式(三)-- 結構型設計模式設計模式
- 網上商城架構設計之表設計思路(三)架構
- kafka原始碼剖析(二)之kafka-server的啟動Kafka原始碼Server
- 資料庫設計三大正規化應用例項剖析資料庫
- 《java學習三》併發程式設計 -------執行緒池原理剖析Java程式設計執行緒
- kafka叢集Producer基本資料結構及工作流程深入剖析-kafka 商業環境實戰Kafka資料結構
- Nebula 架構剖析系列(一)圖資料庫的儲存設計架構資料庫
- Kafka面試知識點深度剖析Kafka面試
- Kafka控制器選舉流程剖析Kafka
- Apache Kafka 程式設計實戰ApacheKafka程式設計
- KafKa Java程式設計例項KafkaJava程式設計
- 元件 popup 設計和原始碼剖析元件原始碼
- 【架構設計的藝術】Kafka如何通過精妙的架構設計優化JVM GC問題?【石杉的架構筆記】架構Kafka優化JVMGC筆記
- 圖解 Kafka 原始碼之 NetworkClient 網路通訊元件架構設計圖解Kafka原始碼client元件架構
- 深入剖析OkHttp系列(三) 來自官方的攔截器設計(中英互譯)HTTP