Kafka基礎架構

- Producer:訊息生產者,就是向Kafka broker發訊息的客戶端
- Consumer:訊息消費者,向Kafka broker取訊息的客戶端
- Cluster:集群
- Broker(裝載了kafka節點的服務器):一臺Kafka服務器就是一個broker,一個集群又多個broker組成,一個broker可以容納多個topic
- Partition: 為了實作拓展性,一個非常強大的topic可以分布到多個broker(服務器)上,一個topic可以分為多個partition,每個partition都是一個有序的佇列
- Topic(主題):用與訊息的分類,可以理解為一個佇列,生產者和消費者面向的都是一個topic
- Replica:副本,為保證集群中的某個節點發生故障時,該節點的partition資料不丟失,且Kafka仍能夠繼續作業,kafka提供了副本機制,一個topic的每一個磁區都有若干個副本,一個leader和若干個follower,
- Replication:復制
Zookeeper
- 其中的底層中有類似taildir功能的斷點續傳功能
- 0.9版本之前當訊息在broker中傳遞時將其傳輸時的資料偏移量寫在zookeeper實作斷點續傳功能(注冊資訊)
- 0.9版本之后將資料的偏移量存盤在kafka中系統維護的檔案中
offset:記載偏移量,將偏移量存盤到磁盤中,(默認)在等待7天后銷毀,在組態檔中進行更改存盤時間
- 當有訊息從ProduerA訊息生產者生產出一個訊息時
- 首先他將資訊發送給每個服務器中的leader中
- 集群中的每個leader將資料在follower進行同步
- 然后將leader中的資料發送到Consumer A中
- 或將資料發送到不是與Consumer A同組的Consumer C中進行消費
- 每個broker內的訊息只能讓Consumer Group中的一個Consumer進行消費,不可以讓同Group的消費者進行消費
- 將整個Consumer組當做一個Java的一個并發行程來看待
- 如果當前組內只有一個消費者 那一個消費者將消費兩個不同broker傳來的訊息
- 這時對Consumer Group來說將會提高消費者消費的能力
- 所以并發度最好的時候就是在Consumer Group中的Consumer數量與磁區數相等時
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/335475.html
標籤:其他
