溫馨提示×

溫馨提示×

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

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

Kafka的功能有哪些

發(fā)布時間:2021-07-10 14:10:26 來源:億速云 閱讀:566 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“Kafka的功能有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Kafka的功能有哪些”吧!

一、kafka的特性

1.高吞吐量、低延遲:kafka每秒可以處理幾十萬條消息,它的延遲最低只有幾毫秒,每個topic可以分多個partition, consumer group 對partition進行consume操作。

2.可擴展性:kafka集群支持熱擴展

3. 持久性、可靠性:消息被持久化到本地磁盤,并且支持數(shù)據(jù)備份防止數(shù)據(jù)丟失

4. 容錯性:允許集群中節(jié)點失?。ㄈ舾北緮?shù)量為n,則允許n-1個節(jié)點失?。?/p>

5.高并發(fā):支持數(shù)千個客戶端同時讀寫

二、kafka的場景

 1.消息隊列:對于一些常規(guī)的消息系統(tǒng),kafka是個不錯的選擇;partitons/replication和容錯,可以使kafka具有良好的擴展性和性能優(yōu)勢。

2.kafka可以作為"網(wǎng)站活性跟蹤"的最佳工具,可以將網(wǎng)頁/用戶操作等信息發(fā)送到kafka中,并實時監(jiān)控,或者離線統(tǒng)計分析等行為。

3.日志收集: application可以將操作日志"批量""異步"的發(fā)送到kafka集群中,而不是保存在本地或者DB中。kafka可以批量提交消息/壓縮消息等,這對producer端而言,幾乎感覺不到性能的開支,此時consumer端可以使hadoop等其他系統(tǒng)化的存儲和分析系統(tǒng)。

三、kafka介紹

kafka的拓撲關(guān)系圖如下所示:

Kafka的功能有哪些

kafka由producer、broker、comsumer和zookeeper幾部分構(gòu)成,kafka對消息保存時根據(jù)Topic進行歸類,發(fā)送消息者成為Producer,消息接受者成為Cosumer,此外kafka集群有多個kafka實例組成,每個實例(server)稱為broker。
無論是kafka集群,還是producer和consumer都依賴于zookeeper來保證系統(tǒng)可用性集群保存一些meta信息。

1.Topic/logs

  一個Topic可以認為是一類消息,每個topic將被分成多個partition(區(qū)),每個partition在存儲層面是append log文件。任何發(fā)布到此partition的消息都會被直接追加到log文件的尾部,每條消息在文件中的位置稱為offset(偏移量),offset為一個long型數(shù)字,它是唯一標記一條消息,它唯一的標記一條消息。

Kafka的功能有哪些

每一條消息被發(fā)送到broker中,會根據(jù)partition規(guī)則選擇被存儲到哪一個partition。如果partition規(guī)則設置的合理,所有消息可以均勻分布到不同的partition里,這樣就實現(xiàn)了水平擴展。(如果一個topic對應一個文件,那這個文件所在的機器I/O將會成為這個topic的性能瓶頸,而partition解決了這個問題)。

備注:可以通過配置文件中的參數(shù)來配置partition的數(shù)量 num.partitions=3 

2.Producers

    Producer將消息發(fā)布到指定的Topic中,同時Producer也能決定將此消息歸屬于哪個partition,比如基于"round-robin"方式。

3.Consumers

   每個consumer屬于一個consumer group,反過來說,每個group中可以有多個consumer。發(fā)送到Topic的消息,只會被訂閱此Topic的每個group中的一個consumer消費。

    如果所有的consumer都具有相同的group,這種情況和queue模式很像,消息將會在consumers之間負載均衡

    如果所有的consumer都具有不同的group,那這就是"發(fā)布-訂閱",消息將會廣播給所有的消費者。

    在kafka中,一個partition中的消息只會被group中的一個consumer消費。

每個group中consumer消息消費互相獨立;我們可以認為一個group是一個"訂閱"者,一個Topic中的每個partions,只會被一個"訂閱者"中的一個consumer消費,不過一個consumer可以消費多個partitions中的消息。kafka只能保證一個partition中的消息被某個consumer消費時,消息是順序的。而不同的partition之間的消息的順序性是保證不了的。

4.zookeeper

      zookeeper保存consumer和producer狀態(tài)信息,kafka集群幾乎不需要維護任何consumer和producer狀態(tài)信息,這樣producer和comsumer的實現(xiàn)就很輕量級,他們可以輕易的離開集群而不會對整個集群產(chǎn)生額外的影響。

zookeeper協(xié)調(diào)控制的事情:1. 管理broker與consumer的動態(tài)加入與離開。(Producer不需要管理,隨便一臺計算機都可以作為Producer向Kakfa Broker發(fā)消息)2. 觸發(fā)負載均衡,當broker或consumer加入或離開時會觸發(fā)負載均衡算法,使得一   個consumer group內(nèi)的多個consumer的消費負載平衡。(因為一個comsumer消費一個或多個partition,一個partition只能被一個consumer消費)3.  維護消費關(guān)系及每個partition的消費信息。實現(xiàn)方式:1. 每個broker啟動后會在zookeeper上注冊一個臨時的broker registry,包含broker的ip地址和端口號,所存儲的topics和partitions信息。2. 每個consumer啟動后會在zookeeper上注冊一個臨時的consumer registry:包含consumer所屬的consumer group以及訂閱的topics。3. 每個consumer group關(guān)聯(lián)一個臨時的owner registry和一個持久的offset registry。對于被訂閱的每個partition包含一個owner registry,內(nèi)容為訂閱這個partition的consumer id;同時包含一個offset registry,內(nèi)容為上一次訂閱的offset。

到此,相信大家對“Kafka的功能有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

向AI問一下細節(jié)

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

AI