溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Kafka有哪些特點(diǎn)

發(fā)布時(shí)間:2020-07-31 10:13:05 來(lái)源:億速云 閱讀:172 作者:Leah 欄目:互聯(lián)網(wǎng)科技

Kafka有哪些特點(diǎn)?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

Kafka的特點(diǎn)有:1、同時(shí)為發(fā)布和訂閱提供高吞吐量;2、可進(jìn)行持久化操作,將消息持久化到磁盤(pán),因此可用于批量消費(fèi);3、分布式系統(tǒng),易于向外擴(kuò)展;4、支持online和offline的場(chǎng)景。

Kafka的特點(diǎn)及使用場(chǎng)景

Kafka是分布式發(fā)布-訂閱消息系統(tǒng)。它最初由LinkedIn公司開(kāi)發(fā),之后成為Apache項(xiàng)目的一部分。Kafka是一個(gè)分布式的,可劃分的,冗余備份的持久性的日志服務(wù)。

它主要用于處理活躍的流式數(shù)據(jù)。在大數(shù)據(jù)系統(tǒng)中,常常會(huì)碰到一個(gè)問(wèn)題,整個(gè)大數(shù)據(jù)是由各個(gè)子系統(tǒng)組成,數(shù)據(jù)需要在各個(gè)子系統(tǒng)中高性能,低延遲的不停流轉(zhuǎn)。

傳統(tǒng)的企業(yè)消息系統(tǒng)并不是 非常適合大規(guī)模的數(shù)據(jù)處理。為了已在同時(shí)搞定在線應(yīng)用(消息)和離線應(yīng)用(數(shù)據(jù)文件,日志)Kafka就出現(xiàn)了。Kafka可以起到兩個(gè)作用:

  • 降低系統(tǒng)組網(wǎng)復(fù)雜度。

  • 降低編程復(fù)雜度,各個(gè)子系統(tǒng)不在是相互協(xié)商接口,各個(gè)子系統(tǒng)類(lèi)似插口插在插座上,Kafka承擔(dān)高速數(shù)據(jù)總線的作用

Kafka主要特點(diǎn):

  • 同時(shí)為發(fā)布和訂閱提供高吞吐量。據(jù)了解,Kafka每秒可以生產(chǎn)約25萬(wàn)消息(50 MB),每秒處理55萬(wàn)消息(110 MB)。

  • 可進(jìn)行持久化操作。將消息持久化到磁盤(pán),因此可用于批量消費(fèi),例如ETL,以及實(shí)時(shí)應(yīng)用程序。通過(guò)將數(shù)據(jù)持久化到硬盤(pán)以及replication防止數(shù)據(jù)丟失。

  • 分布式系統(tǒng),易于向外擴(kuò)展。所有的producer、broker和consumer都會(huì)有多個(gè),均為分布式的。無(wú)需停機(jī)即可擴(kuò)展機(jī)器。

  • 消息被處理的狀態(tài)是在consumer端維護(hù),而不是由server端維護(hù)。當(dāng)失敗時(shí)能自動(dòng)平衡。

  • 支持online和offline的場(chǎng)景。

Kafka的設(shè)計(jì)要點(diǎn):

1、直接使用linux 文件系統(tǒng)的cache,來(lái)高效緩存數(shù)據(jù)。

2、采用linux Zero-Copy提高發(fā)送性能。傳統(tǒng)的數(shù)據(jù)發(fā)送需要發(fā)送4次上下文切換,采用sendfile系統(tǒng)調(diào)用之后,數(shù)據(jù)直接在內(nèi)核態(tài)交換,系統(tǒng)上下文切換減少 為2次。根據(jù)測(cè)試結(jié)果,可以提高60%的數(shù)據(jù)發(fā)送性能。

3、數(shù)據(jù)在磁盤(pán)上存取代價(jià)為O(1)。kafka以topic來(lái)進(jìn)行消息管理,每個(gè)topic包含多個(gè)part(ition),每個(gè)part對(duì)應(yīng)一 個(gè)邏輯log,有多個(gè)segment組成。每個(gè)segment中存儲(chǔ)多條消息(見(jiàn)下圖),消息id由其邏輯位置決定,即從消息id可直接定位到消息的存儲(chǔ) 位置,避免id到位置的額外映射。每個(gè)part在內(nèi)存中對(duì)應(yīng)一個(gè)index,記錄每個(gè)segment中的第一條消息偏移。發(fā)布者發(fā)到某個(gè)topic的消息 會(huì)被均勻的分布到多個(gè)part上(隨機(jī)或根據(jù)用戶(hù)指定的回調(diào)函數(shù)進(jìn)行分布),broker收到發(fā)布消息往對(duì)應(yīng)part的最后一個(gè)segment上添加該消 息,當(dāng)某個(gè)segment上的消息條數(shù)達(dá)到配置值或消息發(fā)布時(shí)間超過(guò)閾值時(shí),segment上的消息會(huì)被flush到磁盤(pán),只有flush到磁盤(pán)上的消息 訂閱者才能訂閱到,segment達(dá)到一定的大小后將不會(huì)再往該segment寫(xiě)數(shù)據(jù),broker會(huì)創(chuàng)建新的segment。

4、顯式分布式,即所有的producer、broker和consumer都會(huì)有多個(gè),均為分布式的。Producer和broker之間沒(méi)有負(fù) 載均衡機(jī)制。broker和consumer之間利用zookeeper進(jìn)行負(fù)載均衡。

所有broker和consumer都會(huì)在zookeeper中進(jìn) 行注冊(cè),且zookeeper會(huì)保存他們的一些元數(shù)據(jù)信息。如果某個(gè)broker和consumer發(fā)生了變化,所有其他的broker和 consumer都會(huì)得到通知。

關(guān)于Kafka有哪些特點(diǎn)問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

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

AI