91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kafka該如何入門

發布時間:2021-12-15 09:50:45 來源:億速云 閱讀:118 作者:柒染 欄目:大數據

kafka該如何入門,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

背景:

當今社會各種應用系統諸如商業、社交、搜索、瀏覽等像信息工廠一樣不斷的生產出各種信息,在大數據時代,我們面臨如下幾個挑戰:

  1. 如何收集這些巨大的信息

  2. 如何分析它

  3. 如何及時做到如上兩點

以上幾個挑戰形成了一個業務需求模型,即生產者生產(produce)各種信息,消費者消費(consume)(處理分析)這些信息,而在生產者與消費者之間,需要一個溝通兩者的橋梁-消息系統。

從一個微觀層面來說,這種需求也可理解為不同的系統之間如何傳遞消息。

Kafka誕生:由 linked-in 開源

kafka-即是解決這類問題的一個框架,它實現了生產者和消費者之間的無縫連接。

kafka-高產出的分布式消息系統(A high-throughput distributed messaging system)

Kafka特性:它形容自己的設計是獨一無二的,先看一下它有如何過人之處:

  • 快:單個kafka服務每秒可處理數以千計客戶端發來的幾百MB數據。

  • 可擴展性:一個單一集群可作為一個大數據處理中樞,集中處理各種類型業務

  • 持久化:消息被持久化到磁盤(可處理TB數據級別數據但仍保持極高數據處理效率),并且有備份容錯機制

  • 分布式:著眼于大數據領域,支持分布式,集群可處理每秒百萬級別消息

  • 實時性:生產出的消息可立即被消費者消費

kafka該如何入門

Kafka的組件:

  • topic:消息存放的目錄即主題

  • Producer:生產消息到topic的一方

  • Consumer:訂閱topic消費消息的一方

  • Broker:Kafka的服務實例就是一個broker

如下圖所示,Producer生產的消息通過網絡發送給Kafka cluster,而Consumer從其中消費消息

kafka該如何入門

Topic 和Partition:

消息發送時都被發送到一個topic,其本質就是一個目錄,而topic由是由一些Partition Logs(分區日志)組成,其組織結構如下圖所示:

(一個主題可以包含多個分區)

kafka該如何入門

我們可以看到,每個Partition中的消息都是有序的,生產的消息被不斷追加到Partition log上,其中的每一個消息都被賦予了一個唯一的offset值。

Kafka集群會保存所有的消息,不管消息有沒有被消費;我們可以設定消息的過期時間,只有過期的數據才會被自動清除以釋放磁盤空間。比如我們設置消息過期時間為2天,那么這2天內的所有消息都會被保存到集群中,數據只有超過了兩天才會被清除。

Kafka需要維持的元數據只有一個--消費消息在Partition中的offset值,Consumer每消費一個消息,offset就會加1。其實消息的狀態完全是由Consumer控制的,Consumer可以跟蹤和重設這個offset值,這樣的話Consumer就可以讀取任意位置的消息。

把消息日志以Partition的形式存放有多重考慮,第一,方便在集群中擴展,每個Partition可以通過調整以適應它所在的機器,而一個topic又可以有多個Partition組成,因此整個集群就可以適應任意大小的數據了;第二就是可以提高并發,因為可以以Partition為單位讀寫了。

分布式:

(主從集群)

這些Partitions分布在集群的每一臺server上,而每一個Partition在集群中都可以有多個備份,這個備份數量是可配置的。

每個Partition都有一個leader server,而其他備份的server都稱為followers,只有leader服務器才會處理這個Partition上所有的讀寫請求,而其它followers則被動的復制leader上的數據。如果一個leader掛掉了,followers中的一個服務器則會自動升級為leader。因此,其實集群中的每個服務器都扮演著一個Partition的leader服務器,和其它Partition的follower服務器。

Producers:

Producer可以根據自己的選擇發布消息到一個主題,Producer也可以自己決定把消息發布到這個主題的哪個Partition,當然我們可以選擇API提供的簡單的分區選擇算法,也可以自己去實現一個分區選擇算法。

Consumers:

消息傳遞通常由兩種模式,queuing(隊列)和publish-subscribe (發布-訂閱)

  • queuing:每個Consumer從消息隊列中取走一個消息

  • pub-scrib:消息被廣播到每個Consumer

Kafka通過提供了一個對Consumer的抽象來同時實現這兩種模式-ConsumerGroup。Consumer實例需要給自己指定一個ConsumerGroup的名字,如果所有的實例都用同一個ConsumerGroup名字,那么這些Consumer就會以queuing的模式工作;如果所有的實例分別用的不同的ConsumerGroup名字,那么它們就以public-subscribe模式工作。

(group的概念只針對于客戶端,如果有多個客戶端定義了多個組時,broker會以pub-scrib的形式將消息發送到每一個group上)

如下圖所示:含兩臺server的集群一共有p0~p3四個Partition,兩個Consumer Group,在Group內部是以queuing的模式消費Partition,在Group之間是以pub-scrib模式消費。

kafka該如何入門

消息順序性:

Kafka是如何確保消息消費的順序性的呢?前面講到過Partition,消息在一個Partition中的順序是有序的,但是Kafka只保證消息在一個Partition中有序,如果要想使整個topic中的消息有序,那么一個topic僅設置一個Partition即可。

關于kafka該如何入門問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

册亨县| 灌南县| 万全县| 平潭县| 缙云县| 郓城县| 丰顺县| 长兴县| 呼和浩特市| 通辽市| 灵宝市| 响水县| 大石桥市| 南开区| 九江市| 黔西县| 铜陵市| 得荣县| 惠水县| 内丘县| 滦平县| 根河市| 南城县| 海门市| 会昌县| 凉城县| 固原市| 灌南县| 南投县| 黄大仙区| 景宁| 城口县| 中山市| 平泉县| 崇仁县| 新源县| 宜昌市| 延安市| 哈尔滨市| 若羌县| 梁山县|