kafka是一種高吞吐量的分布式發布訂閱訊息系統,它可以處理消費者在**中的所有動作流資料。
1)點對點模式(一對一,消費者主動拉取資料,訊息收到後訊息清除)
點對點模型通常是乙個基於拉取或者輪詢的訊息傳送模型,這種模型從佇列中請求資訊,而不是將訊息
推送到客戶端。這個模型的特點是傳送到佇列的訊息被乙個且只有乙個接收者接收處理,即使有多個消
息監聽者也是如此。
(2)發布/訂閱模式(一對多,資料生產後,推送給所有訂閱者)發布訂閱模型則是乙個基於推送的訊息傳送模型。發布訂閱模型可以有多種不同的訂閱者,臨時訂閱者
只在主動監聽主題時才接收訊息,而持久訂閱者則監聽主題的所有訊息,即使當前訂閱者不可用,處於
離線狀態。
1)producer:訊息生產者,就是向kafka broker發訊息的客戶端。
2)consumer:訊息消費者,向kafka broker取訊息的客戶端
3)topic:可以理解為乙個佇列。
4)consumer group:這是用來實現乙個訊息的廣播(發給所有的)和單播(發給任意乙個
consumer)的手段。乙個topic可以有多個cg。topic的訊息會複製(不是真的複製,是概念上的)到
所有的cg,但每個partion只會把訊息發給該cg中的乙個consumer。如果需要實現廣播,只要每個
consumer有乙個獨立的cg就可以了。要實現單播只要所有的consumer在同乙個cg。用cg還可以將
consumer進行自由的分組而不需要多次傳送訊息到不同的topic。
5)broker:一台kafka伺服器就是乙個broker。乙個集群由多個broker組成。乙個broker可以容納多
個topic。
6)partition:為了實現擴充套件性,乙個非常大的topic可以分布到多個broker(即伺服器)上,乙個topic
可以分為多個partition,每個partition是乙個有序的佇列。partition中的每條訊息都會被分配乙個有序
的id(offset)。kafka只保證按乙個partition中的順序將訊息發給consumer,不保證乙個topic的整體
(多個partition間)的順序。
7)offset:kafka的儲存檔案都是按照offset.kafka來命名,用offset做名字的好處是方便查詢。例如你
想找位於2048的位置,只要找到2048.kafka的檔案即可。當然the first offset就是00000000000.kafka
分割槽訊息傳送時都被傳送到乙個topic,其本質就是乙個目錄,而topic是由一些partition logs(分割槽日誌)組
成我們可以看到,每個partition中的訊息都是有序的,生產的訊息被不斷追加到partition log上,其中的
每乙個訊息都被賦予了乙個唯一的offset值。
1)分割槽的原因
(1)方便在集群中擴充套件,每個partition可以通過調整以適應它所在的機器,而乙個topic又可以有多個
partition組成,因此整個集群就可以適應任意大小的資料了;
(2)可以提高併發,因為可以以partition為單位讀寫了。
2)分割槽的原則
(1)指定了patition,則直接使用;
(2)未指定patition但指定key,通過對key的value進行hash出乙個patition
(3)patition和key都未指定,使用輪詢選出乙個patition。
同乙個partition可能會有多個replication(對應 server.properties 配置中的
default.replication.factor=n)。沒有replication的情況下,一旦broker 宕機,其上所有 patition 的數
據都不可被消費,同時producer也不能再將資料存於其上的patition。引入replication之後,同乙個
partition可能會有多個replication,而這時需要在這些replication之間選出乙個leader,producer和
consumer只與這個leader互動,其它replication作為follower從leader 中複製資料。
1)producer先從zookeeper的 "/brokers/…/state"節點找到該partition的leader
2)producer將訊息傳送給該leader
3)leader將訊息寫入本地log
4)followers從leader pull訊息,寫入本地log後向leader傳送ack
5)leader收到所有isr中的replication的ack後,增加hw(high watermark,最後commit 的offset)
並向producer傳送ack
kafka知識總結
1 kafka是什麼 類jms訊息佇列,結合jms中的兩種模式,可以有多個消費者主動拉取資料,在jms中只有點對點模式才有消費者主動拉取資料。kafka是乙個生產 消費模型。producer 生產者,只負責資料生產,生產者的 可以整合到任務系統中。資料的分發策略由producer決定,預設是defa...
Kafka知識總結
1 kafka是什麼 類jms訊息佇列,結合jms中的兩種模式,可以有多個消費者主動拉取資料,在jms中只有點對點模式才有消費者主動拉取資料。kafka是乙個生產 消費模型。producer 生產者,只負責資料生產,生產者的 可以整合到任務系統中。資料的分發策略由producer決定,預設是defa...
Kafka知識點總結
kafka是一種高吞吐量的分布式發布訂閱訊息系統,它可以處理消費者規模的 中的所有動作流資料。這種動作 網頁瀏覽,搜尋和其他使用者的行動 是在現代網路上的許多社會功能的乙個關鍵因素。這些資料通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。對於像hadoop一樣的日誌資料和離線分析系統,但又要求...