溫馨提示×

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

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

為什么要使用這么強(qiáng)大的分布式消息中間件kafka

發(fā)布時(shí)間:2021-12-15 09:43:15 來(lái)源:億速云 閱讀:180 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了為什么要使用這么強(qiáng)大的分布式消息中間件kafka,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

為什么是kafka?

在我們大量使用分布式數(shù)據(jù)庫(kù)、分布式計(jì)算集群的時(shí)候,是否會(huì)遇到這樣的一些問(wèn)題:

  1. 我們想分析下用戶(hù)行為(pageviews),以便我們?cè)O(shè)計(jì)出更好的廣告位

  2. 我想對(duì)用戶(hù)的搜索關(guān)鍵詞進(jìn)行統(tǒng)計(jì),分析出當(dāng)前的流行趨勢(shì)

  3. 有些數(shù)據(jù),存儲(chǔ)數(shù)據(jù)庫(kù)浪費(fèi),直接存儲(chǔ)硬盤(pán)效率又低

這些場(chǎng)景都有一個(gè)共同點(diǎn):
數(shù)據(jù)是由上游模塊產(chǎn)生,上游模塊,使用上游模塊的數(shù)據(jù)計(jì)算、統(tǒng)計(jì)、分析,這個(gè)時(shí)候就可以使用消息系統(tǒng),尤其是分布式消息系統(tǒng)!

知道了我們有必要在數(shù)據(jù)處理系統(tǒng)中使用一個(gè)消息系統(tǒng),但是我們?yōu)槭裁匆欢ㄒxkafka呢?現(xiàn)在的消息系統(tǒng)可不只有kafka。

Kafka簡(jiǎn)介

Kafka是Linkedin于2010年12月份創(chuàng)建的開(kāi)源消息系統(tǒng),它主要用于處理活躍的流式數(shù)據(jù)?;钴S的流式數(shù)據(jù)在web網(wǎng)站應(yīng)用中非常常見(jiàn),這些活動(dòng)數(shù)據(jù)包括頁(yè)面訪(fǎng)問(wèn)量(Page View)、被查看內(nèi)容方面的信息以及搜索情況等內(nèi)容。 這些數(shù)據(jù)通常以日志的形式記錄下來(lái),然后每隔一段時(shí)間進(jìn)行一次統(tǒng)計(jì)分析。

傳統(tǒng)的日志分析系統(tǒng)是一種離線(xiàn)處理日志信息的方式,但若要進(jìn)行實(shí)時(shí)處理,通常會(huì)有較大延遲。而現(xiàn)有的消息隊(duì)列系統(tǒng)能夠很好的處理實(shí)時(shí)或者近似實(shí)時(shí)的應(yīng)用,但未處理的數(shù)據(jù)通常不會(huì)寫(xiě)到磁盤(pán)上,這對(duì)于Hadoop之類(lèi),間隔時(shí)間較長(zhǎng)的離線(xiàn)應(yīng)用而言,在數(shù)據(jù)安全上會(huì)出現(xiàn)問(wèn)題。Kafka正是為了解決以上問(wèn)題而設(shè)計(jì)的,它能夠很好地進(jìn)行離線(xiàn)和在線(xiàn)應(yīng)用。

kafka部署結(jié)構(gòu)

消息隊(duì)列(Message Queue,簡(jiǎn)稱(chēng)MQ),從字面意思上看,本質(zhì)是個(gè)隊(duì)列,F(xiàn)IFO先入先出,只不過(guò)隊(duì)列中存放的內(nèi)容是message而已。其主要用途:不同進(jìn)程Process/線(xiàn)程Thread之間通信。

幾大特性

  • 高吞吐量:可以滿(mǎn)足每秒百萬(wàn)級(jí)別消息的生產(chǎn)和消費(fèi)——生產(chǎn)消費(fèi)。

  • 負(fù)載均衡:通過(guò)zookeeper對(duì)Producer,Broker,Consumer的動(dòng)態(tài)加入與離開(kāi)進(jìn)行管理。

  • 拉取系統(tǒng):由于kafka broker會(huì)持久化數(shù)據(jù),broker沒(méi)有內(nèi)存壓力,因此,consumer非常適合采取pull的方式消費(fèi)數(shù)據(jù)

  • 動(dòng)態(tài)擴(kuò)展:當(dāng)需要增加broker結(jié)點(diǎn)時(shí),新增的broker會(huì)向zookeeper注冊(cè),而producer及consumer會(huì)通過(guò)zookeeper感知這些變化,并及時(shí)作出調(diào)整。

  • 消息刪除策略:數(shù)據(jù)文件將會(huì)根據(jù)broker中的配置要求,保留一定的時(shí)間之后刪除。kafka通過(guò)這種簡(jiǎn)單的手段,來(lái)釋放磁盤(pán)空間。

消息收發(fā)流程

  • 啟動(dòng)Zookeeper及Broker.

  • Producer連接Broker后,將消息發(fā)布到Broker中指定Topic上(可以指定Patition)。

  • Broker集群接收到Producer發(fā)過(guò)來(lái)的消息后,將其持久化到硬盤(pán),并將消息該保留指定時(shí)長(zhǎng)(可配置),而不關(guān)注消息是否被消費(fèi)。

  • Consumer連接到Broker后,啟動(dòng)消息泵對(duì)Broker進(jìn)行偵聽(tīng),當(dāng)有消息到來(lái)時(shí),會(huì)觸發(fā)消息泵循環(huán)獲取消息,獲取消息后Zookeeper將記錄該Consumer的消息Offset。

Kafka服務(wù)

對(duì)于kafka而言,kafka服務(wù)就像是一個(gè)大的水池。不斷的生產(chǎn)、存儲(chǔ)、消費(fèi)著各種類(lèi)別的消息。那么kafka由何組成呢?

  • Broker : Kafka消息服務(wù)器,消息中心。一個(gè)Broker可以容納多個(gè)Topic。

  • Producer :消息生產(chǎn)者,就是向Kafka broker發(fā)消息的客戶(hù)端。

  • Consumer :消息消費(fèi)者,向Kafka broker取消息的客戶(hù)端。

  • Zookeeper :管理Producer,Broker,Consumer的動(dòng)態(tài)加入與離開(kāi)。

  • Topic :可以為各種消息劃分為多個(gè)不同的主題,Topic就是主題名稱(chēng)。Producer可以針對(duì)某個(gè)主題進(jìn)行生產(chǎn),Consumer可以針對(duì)某個(gè)主題進(jìn)行訂閱。

  • Consumer Group: Kafka采用廣播的方式進(jìn)行消息分發(fā),而Consumer集群在消費(fèi)某Topic時(shí), Zookeeper會(huì)為該集群建立Offset消費(fèi)偏移量,最新Consumer加入并消費(fèi)該主題時(shí),可以從最新的Offset點(diǎn)開(kāi)始消費(fèi)。

  • Partition:Kafka采用對(duì)數(shù)據(jù)文件切片(Partition)的方式可以將一個(gè)Topic可以分布存儲(chǔ)到多個(gè)Broker上,一個(gè)Topic可以分為多個(gè)Partition。在多個(gè)Consumer并發(fā)訪(fǎng)問(wèn)一個(gè)partition會(huì)有同步鎖控制。

有的時(shí)候,不光是燈紅酒綠的世界可以讓人沉迷,技術(shù)的世界也同樣如此。而且有的時(shí)候,技術(shù)的世界比前者更加可怕,它不但能讓你悄無(wú)聲息的陷入進(jìn)去,還能讓你產(chǎn)生一種你很上進(jìn),你很努力的假象,以至于等到你恍然大悟那天,已經(jīng)悔之晚矣。

未來(lái)Kafka中間件

目前該中間件只完成了初級(jí)階段功能,很多功能都不完善不深入,隨著應(yīng)用業(yè)務(wù)的拓展及Kafka未來(lái)版本功能支持。以Kafka消息中間件為中心的大數(shù)據(jù)處理平臺(tái)還有很多任務(wù)去實(shí)現(xiàn)。

一般在互聯(lián)網(wǎng)中所流動(dòng)的數(shù)據(jù)由以下幾種類(lèi)型:

  • 需要實(shí)時(shí)響應(yīng)的交易數(shù)據(jù),用戶(hù)提交一個(gè)表單,輸入一段內(nèi)容,這種數(shù)據(jù)最后是存放在關(guān)系數(shù)據(jù)庫(kù)(Oracle, MySQL)中的,有些需要事務(wù)支持。

  • 活動(dòng)流數(shù)據(jù),準(zhǔn)實(shí)時(shí)的,例如頁(yè)面訪(fǎng)問(wèn)量、用戶(hù)行為、搜索情況等。我們可以針對(duì)這些數(shù)據(jù)廣播、排序、個(gè)性化推薦、運(yùn)營(yíng)監(jiān)控等。這種數(shù)據(jù)一般是前端服務(wù)器先寫(xiě)文件,然后通過(guò)批量的方式把文件倒到Hadoop(離線(xiàn)數(shù)據(jù)分析平臺(tái))這種大數(shù)據(jù)分析器里面,進(jìn)行慢慢的分析。

  • 各個(gè)層面程序產(chǎn)生的日志,例如http的日志、tomcat的日志、其他各種程序產(chǎn)生的日志。這種數(shù)據(jù)一個(gè)是用來(lái)監(jiān)控報(bào)警,還有就是用來(lái)做分析。

上述內(nèi)容就是為什么要使用這么強(qiáng)大的分布式消息中間件kafka,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

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

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guā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