您好,登錄后才能下訂單哦!
本篇內容主要講解“Kafka的功能有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Kafka的功能有哪些”吧!
一、kafka的特性
1.高吞吐量、低延遲:kafka每秒可以處理幾十萬條消息,它的延遲最低只有幾毫秒,每個topic可以分多個partition, consumer group 對partition進行consume操作。
2.可擴展性:kafka集群支持熱擴展
3. 持久性、可靠性:消息被持久化到本地磁盤,并且支持數據備份防止數據丟失
4. 容錯性:允許集群中節點失敗(若副本數量為n,則允許n-1個節點失敗)
5.高并發:支持數千個客戶端同時讀寫
二、kafka的場景
1.消息隊列:對于一些常規的消息系統,kafka是個不錯的選擇;partitons/replication和容錯,可以使kafka具有良好的擴展性和性能優勢。
2.kafka可以作為"網站活性跟蹤"的最佳工具,可以將網頁/用戶操作等信息發送到kafka中,并實時監控,或者離線統計分析等行為。
3.日志收集: application可以將操作日志"批量""異步"的發送到kafka集群中,而不是保存在本地或者DB中。kafka可以批量提交消息/壓縮消息等,這對producer端而言,幾乎感覺不到性能的開支,此時consumer端可以使hadoop等其他系統化的存儲和分析系統。
三、kafka介紹
kafka的拓撲關系圖如下所示:
一個Topic可以認為是一類消息,每個topic將被分成多個partition(區),每個partition在存儲層面是append log文件。任何發布到此partition的消息都會被直接追加到log文件的尾部,每條消息在文件中的位置稱為offset(偏移量),offset為一個long型數字,它是唯一標記一條消息,它唯一的標記一條消息。
每一條消息被發送到broker中,會根據partition規則選擇被存儲到哪一個partition。如果partition規則設置的合理,所有消息可以均勻分布到不同的partition里,這樣就實現了水平擴展。(如果一個topic對應一個文件,那這個文件所在的機器I/O將會成為這個topic的性能瓶頸,而partition解決了這個問題)。
備注:可以通過配置文件中的參數來配置partition的數量 num.partitions=3
2.Producers
Producer將消息發布到指定的Topic中,同時Producer也能決定將此消息歸屬于哪個partition,比如基于"round-robin"方式。
3.Consumers
每個consumer屬于一個consumer group,反過來說,每個group中可以有多個consumer。發送到Topic的消息,只會被訂閱此Topic的每個group中的一個consumer消費。
如果所有的consumer都具有相同的group,這種情況和queue模式很像,消息將會在consumers之間負載均衡。
如果所有的consumer都具有不同的group,那這就是"發布-訂閱",消息將會廣播給所有的消費者。
在kafka中,一個partition中的消息只會被group中的一個consumer消費。
每個group中consumer消息消費互相獨立;我們可以認為一個group是一個"訂閱"者,一個Topic中的每個partions,只會被一個"訂閱者"中的一個consumer消費,不過一個consumer可以消費多個partitions中的消息。kafka只能保證一個partition中的消息被某個consumer消費時,消息是順序的。而不同的partition之間的消息的順序性是保證不了的。
4.zookeeper
zookeeper保存consumer和producer狀態信息,kafka集群幾乎不需要維護任何consumer和producer狀態信息,這樣producer和comsumer的實現就很輕量級,他們可以輕易的離開集群而不會對整個集群產生額外的影響。
zookeeper協調控制的事情:1. 管理broker與consumer的動態加入與離開。(Producer不需要管理,隨便一臺計算機都可以作為Producer向Kakfa Broker發消息)2. 觸發負載均衡,當broker或consumer加入或離開時會觸發負載均衡算法,使得一 個consumer group內的多個consumer的消費負載平衡。(因為一個comsumer消費一個或多個partition,一個partition只能被一個consumer消費)3. 維護消費關系及每個partition的消費信息。實現方式:1. 每個broker啟動后會在zookeeper上注冊一個臨時的broker registry,包含broker的ip地址和端口號,所存儲的topics和partitions信息。2. 每個consumer啟動后會在zookeeper上注冊一個臨時的consumer registry:包含consumer所屬的consumer group以及訂閱的topics。3. 每個consumer group關聯一個臨時的owner registry和一個持久的offset registry。對于被訂閱的每個partition包含一個owner registry,內容為訂閱這個partition的consumer id;同時包含一個offset registry,內容為上一次訂閱的offset。
到此,相信大家對“Kafka的功能有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。