kafka使用-概念

0. 概念

0.1 消息系統

消息系統負責將數據從一個應用程序傳輸到另一個應用程序,因此應用程序可以專注於數據,而不用擔心怎麼去共享它。

1)點對點消息系統:

消息被保留在隊列中,一個或多個消費者可以消耗隊列中的消息,但是特定的消息只能由一個消費者消費,一旦消費掉了,消息就會從隊列中消失。

2)發佈-訂閱 消息系統

消息被保留在主題中,與點對點的系統不同,消費者可以訂閱一個或多個主題,並使用該主題中的所有消息

0.2 LinkedIn開源

1)Databus 分佈式數據同步系統
2)Cubert 高性能計算引擎
3)ParSeq Java一部處理框架
4)kafka 流處理平臺

1. kafka介紹

1.1 kafka工作流程

1.1.1 發佈-訂閱工作流程

1)生產者定期向主題發送消息
2)kafka代理存儲為該特定主題的分區中的所有消息,它確保消息在分區之間的平等共享
3)消費者訂閱特定的消息
4)一旦消費者訂閱了相應的主題,kafka將會向消費者提供主題的當前便宜,並且還將保存在zookeeper中
5)消費者將定期請求kafka的新消息
6)一旦kafka收到來自生產者的消息,它將這些消息轉發給消費者
7)消費者將接受這些消息並且進行處理
8)一旦消息被處理了,消費者將向kafka代理發送確認
9)一旦kafka收到確認,它將便宜改為新值,並在zookeeper中更新它
10)以上流程將重複,直到消費者停止請求
11)消費者可以隨時退回/跳到所需要的主題的偏移量,並閱讀所有後續的消息

1.1.2 隊列消息/用戶組的工作流

在隊列消息傳遞系統而不是單個消費者中,具有相同的"組ID"的一組消費者將訂閱主題。簡單來說,訂閱具有相同groupid的主題的消費者被認為是單個組,並且消息在他們之中共享。一下為工作流程“
1)生產者以固定間隔向某個主題發送消息
2)Kafka存儲在為該特定主題配置的分區中的所有消息,類似於前面的方案
3)單個消費者訂閱特定主題,
4)kafka以發佈-訂閱消息的方式同消費者交互,知道新的消費者以相同的組id訂閱相同的主題topic
5)一旦新的消費者到達,kafka將其操作切換為共享模式,並在兩個消費者之間共享數據
6)一旦消費者數量超過分區數量,新消費者將不會接收到任何進一步消息,知道現有的消費者取消訂閱,出現這種情況是因為kafka中的每個消費者將被分配到至少一個分區,一旦所有分區都被分配給消費者之後,新的消費者必須等待

1.2 kafka 官方介紹

是一個分佈式流處理平臺

1.3 基本概念

1)Producer:消息和數據的生產者,向kafka的一個topic發佈消息的進程/代碼/服務
2)Consumer:消息和數據的消費者,訂閱數據(Topic)並且處理其發佈的消息的進程/代碼/服務
3)Consumer Group:一個group只有一個consumer能消費這個訂閱的消息

4)Broker:kafka集群中的每個kafka節點
5)Topic:消息的類別,對數據進行區分、隔離
6)Partition:一個Topic下的數據分散存儲在多個Partition上,Partition是有序的
每個Topic被切分為多個partitions
消費者數目少於或等於Partition的數目
broker group中的每個brioker保存topic的一個或多個partition,同一個partition不會被多個幾次保存在多個broker上
consumergroup中的僅有一個consumer讀取topic的一個或多個partitions,並且是唯一的consumer
7)Partition offset
每個分區消息具有稱為 offset 的唯一序列標識
8)Replication:一個partition可能有多個副本
當集群中有broker掛掉的情況下,系統可以主動使用replicas提供服務
系統默認設置每個topic的replication係數為1,可以創建topic時單獨設置
replication的劇本單位是topic的partition
所有的讀和寫都是從leader進,followers只是為了做備份
followers必須能夠即使複製leader的數據
增加容錯性與可擴展性
9)Replication Leader:負責該partition與consumer的交互
10)ReplicaManager:負責管理當前的broker所有分區和副本的信息,處理kafkaController發起的一些請求,副本狀態的切換、添加、讀取消息等

1.4 kafka消息結構

offset|length|crc32|magic|attributes|timestamp|key length|key|value length|value

1.5 api分類

Producer Api
Consumer Api
Streams Api
Connectors Api
kafka使用-概念

1.6 kafka特點

1)分佈式:多分區,多副本,多訂閱者,基於zookeeper調度(記錄broker、topic、partition信息)
2)高性能:高吞吐量、低延遲、高併發、時間複雜度為O(1)
3)持久性與擴展性:數據可持久化、容錯性、支持在線水平擴展、消息自動平衡(避免數據集中在某幾臺機器上導致頻繁地訪問某幾臺機器,產生一種熱點的問題)


分享到:


相關文章: