Kafka文件閱讀筆記 1 入門

2021-10-08 18:28:29 字數 1528 閱讀 5396

kafka是乙個分布式訊息系統,用於構建實時資料通道和流應用程式。kafka具有橫向擴充套件和容錯等優點,具有很高的吞吐量,可以處理更大規模的訊息。可以應用在**行為追蹤、使用者行為追蹤、日誌聚合等場景。

kafka具有4個核心api,生產者api、消費者api、流處理api、聯結器api,生產者api:發布訊息到topic,消費者api:從topic消費訊息,流處理器api:從topic讀取流資料,分析處理後,寫入到topic,聯結器api:可以使用聯結器api,把資料從乙個應用程式或者訊息系統匯入到kafka,再從kafka匯入到另外乙個應用程式或者訊息系統。

broker:kafka集群中的每乙個節點就是乙個broker。

topic:訊息的類別,主題。它是乙個邏輯上的概念,並不物理存在,每個topic對應於乙個或者多個分割槽,乙個分割槽就是乙個訊息佇列,用來儲存訊息,訊息在分割槽的位置由偏移量來定位。使用分割槽,有諸多好處,首先不受單台伺服器的制約,可以通過擴充套件分割槽處理更大規模的訊息,其次分割槽上的訊息可以由多個消費者並行處理,提公升並行處理的能力。

分割槽分布在集群的broker上,每個broker單獨處理自己負責的分割槽。每個分割槽都有乙個leader,0或者多個follower,leader處理訊息的讀寫請求,folower僅僅被動的複製資料。當leader宕機後,會選擇其他的folower充當leader,來負責處理訊息的讀寫請求。為了均衡負載,通常乙個broker是乙個分割槽的leader,也是其他分割槽的follower,避免大量的讀寫請求落在某一小部分broker上。

生產者發布訊息的時候,需要指定發布的分割槽,可以獲取分割槽列表輪流選擇分割槽來發布訊息,也可以使用開發者提供的分割槽演算法來選擇分割槽發布。訊息發布時,先寫入分割槽的leader所在節點的磁碟,再複製到集群,來保證容錯。

消費者的消費模型通常有兩種模式:佇列模式和發布訂閱模式,佇列模式:訊息只能由乙個消費者消費,發布訂閱模式:訊息由所有的訂閱者消費。為了支援這兩種模式,kafka抽象出乙個消費者組的概念,在不同的消費者組間,訊息是發布訂閱模式,在同乙個消費者組裡,訊息是佇列模式。如果所有的消費者均在不同的消費者組裡,那麼就是一種發布訂閱模式,如果在同乙個消費者組裡,那麼就是佇列模式。消費者組裡的消費者,均攤分割槽,當乙個消費者組裡消費者的數量小於分割槽的數量時候,那麼有的消費者需要消費多個分割槽,當乙個消費者組裡消費者的數量等於分割槽的數量時候,每個消費者消費乙個分割槽,當消費者組中消費者的數量大於分割槽數量時候,就會有的消費者處於空等待情況,我們要避免最後一種情況。在乙個非消費者組裡,在分割槽的角度上訊息是並行,乙個分割槽雖然只有乙個消費者,但是乙個topic對應多個分割槽,還是有多個消費者在消費同乙個topic。kafka消費者組還解決了乙個傳統訊息系統的乙個問題,那就是訊息消費的無序問題,因為訊息中介軟體傳送給乙個消費者訊息後會把下乙個訊息傳送給另外乙個消費者,無法保證先傳送出去的訊息被先消費掉,這就產生消費無序問題,在kafka同乙個消費者組中不存在該問題,因為乙個分割槽在乙個組裡只能有乙個消費者處理,但是kafka不能保證跨越分割槽的順序。

傳送到kafka的同乙個topic的同乙個分割槽的訊息是有序的,訊息到的越早,偏移量越小。在消費的時候也是按這種順序消費。當乙個topic有n個複製因子時候(最大為broker數量),最多允許n-1個節點宕機,而不丟失訊息。

Qt文件閱讀筆記 qmake入門指南

目錄 qmake的作用 簡單的小例子 跨平台的例子 1.生成makefile檔案 2.生成moc和uic檔案 3.用vs開啟qt時無需要改變pro檔案就能能夠生成專案 在linux中qmake的主要目的是簡化程式設計師編寫makefile 手寫乙個簡單的pro檔案,用再用qmake下 首先寫乙個小例...

Kafka入門 1 簡介

了解kafka之前我們先來了解一下訊息佇列 訊息佇列,英文名 message queue,經常縮寫為mq。從字面上來理解,訊息佇列是一種用來儲存訊息的佇列。來看一下下面的 1.建立乙個儲存字串的佇列 queuestringqueue new linkedlist 2.往訊息佇列中放入訊息 strin...

kafka系列之kafka入門概論 1

舉個例子,生產者消費者,生產者生產雞蛋,消費者消費雞蛋,生產者生產乙個雞蛋,消費者就消費乙個雞蛋,假設消費者消費雞蛋的時候噎住了 系統宕機了 生產者還在生產雞蛋,那新生產的雞蛋就丟失了。再比如生產者很強勁 大交易量的情況 生產者1秒鐘生產100個雞蛋,消費者1秒鐘只能吃50個雞蛋,那要不了一會,消費...