深入理解分布式系統kafka知識點

2021-08-21 06:07:14 字數 1134 閱讀 9167

降低程式設計複雜度,各個子系統不在是相互協商介面,各個子系統類似插口插在插座上,kafka承擔高速資料匯流排的作用。

可進行持久化操作。將訊息持久化到磁碟,因此可用於批量消費,例如etl,以及實時應用程式。通過將資料持久化到硬碟以及replication防止資料丟失。

分布式系統,易於向外擴充套件。所有的producer、broker和consumer都會有多個,均為分布式的。無需停機即可擴充套件機器。

訊息被處理的狀態是在consumer端維護,而不是由server端維護。當失敗時能自動平衡。

支援online和offline的場景。 

kafka的架構: 

partition:topic物理上的分組,乙個topic可以分為多個partition,每個partition是乙個有序的佇列。partition中的每條訊息都會被分配乙個有序的id(offset)。

message:訊息,是通訊的基本單位,每個producer可以向乙個topic(主題)發布一些訊息。

producers:訊息和資料生產者,向kafka的乙個topic發布訊息的過程叫做producers。

consumers:訊息和資料消費者,訂閱topics並處理其發布的訊息的過程叫做consumers。

broker:快取**,kafka集群中的一台或多台伺服器統稱為broker。

kafka集群接收到producer發過來的訊息後,將其持久化到硬碟,並保留訊息指定時長(可配置),而不關注訊息是否被消費。

consumer從kafka集**ull資料,並控制獲取訊息的offset

zero-copy:減少io操作步驟

資料批量傳送

資料壓縮

topic劃分為多個partition,提高parallelism

存在多個partiiton,每個partition有自己的replica,每個replica分布在不同的broker節點上

多個partition需要選取出lead partition,lead partition負責讀寫,並由zookeeper負責fail over

通過zookeeper管理broker與consumer的動態加入與離開

consumer根據消費能力自主控制訊息拉取速度

consumer根據自身情況自主選擇消費模式,例如批量,重複消費,從尾端開始消費等

深入理解分布式事務

碼農網 吳極心 當資料庫單錶一年產生的資料超過1000w,那麼就要考慮分庫分表,具體分庫分表的原理在此不做解釋,以後有空詳細說,簡單的說就是原來的乙個資料庫變成了多個資料庫。這時候,如果乙個操作既訪問01庫,又訪問02庫,而且要保證資料的一致性,那麼就要用到分布式事務。所謂的soa化,就是業務的服務...

深入理解分布式事務

當資料庫單錶一年產生的資料超過1000w,那麼就要考慮分庫分表,具體分庫分表的原理在此不做解釋,以後有空詳細說,簡單的說就是原來的乙個資料庫變成了多個資料庫。這時候,如果乙個操作既訪問01庫,又訪問02庫,而且要保證資料的一致性,那麼就要用到分布式事務。所謂的soa化,就是業務的服務化。比如原來單機...

深入理解分布式事務

我在上一期介紹了spring的事務原理 詳情見 深入理解spring事務原理 spring事務 本質是單機下的事務,是由資料庫本身保證的。今天,我將介紹一種比較複雜的事務 分布式事務 當資料庫單錶一年產生的資料超過1000w,那麼就要考慮分庫分表,具體分庫分表的原理在此不做解釋,以後有空詳細說,簡單...