在大數(shù)據(jù)開(kāi)發(fā)過(guò)程中我們經(jīng)常會(huì)使用到消息隊(duì)列類(lèi)型的組件,比較常見(jiàn)的就是Kafka與ActiveMQ,但很多同學(xué)鬧不懂兩者的區(qū)別和聯(lián)系,今天小千就來(lái)帶大家分析一下。
一、背景分析
消息隊(duì)列這個(gè)類(lèi)型的組件一直是非常重要的組件,當(dāng)經(jīng)過(guò)兩家企業(yè)后我就很堅(jiān)信這個(gè)結(jié)論了。隊(duì)列這種東西,最廣泛的作用還是在于解耦,寬泛一點(diǎn)的說(shuō),它可以將不同部門(mén)的工作內(nèi)容進(jìn)行有效的整合,基于一個(gè)約定好的格式,就可以?xún)深^互相不干擾的進(jìn)行開(kāi)發(fā)??梢哉f(shuō)這個(gè)生產(chǎn)消費(fèi)的思想不僅僅適用于程序也適用于非常多的地方。
目前對(duì)于我看到的來(lái)說(shuō),Kafka更多的還是做為一個(gè)數(shù)據(jù)源,數(shù)據(jù)橋梁的作用,不同業(yè)務(wù)之間的溝通。比如需要實(shí)時(shí)接入A部門(mén)的業(yè)務(wù)數(shù)據(jù)的話(huà),就會(huì)有這樣的手段:
落地到HDFS的數(shù)據(jù)會(huì)用來(lái)進(jìn)行一些算法上的離線(xiàn)處理,而Kafka端則是給需要實(shí)時(shí)性的消費(fèi)方。其實(shí)數(shù)據(jù)的消費(fèi)方式無(wú)非也就實(shí)時(shí)和離線(xiàn)兩種方式。
二、Kafka和ActiveMQ對(duì)比
相比過(guò)去經(jīng)常使用的ActiveMQ,Kafka確實(shí)非常的不同,做一個(gè)對(duì)比來(lái)深化印象
說(shuō)到底,做為kafka的消費(fèi)方,能感受到最大的不同還是在于幾個(gè):
1. 吞吐量確實(shí)非常高
2.可以重讀歷史數(shù)據(jù)
3.但是也有一些缺點(diǎn):概念上比較復(fù)雜,相對(duì)于AMQ只需要知道ip和隊(duì)列名你就能獲得數(shù)據(jù),Kafka使用起來(lái)非常繁瑣
三、Kafka的基本概念(摘錄)
1.Broker:消息中間件處理結(jié)點(diǎn),一個(gè)Kafka節(jié)點(diǎn)就是一個(gè)broker,多個(gè)broker可以組成一個(gè)Kafka集群。
2.Topic:一類(lèi)消息,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能夠同時(shí)負(fù)責(zé)多個(gè)topic的分發(fā)。
3.Partition:topic物理上的分組,一個(gè)topic可以分為多個(gè)partition,每個(gè)partition是一個(gè)有序的隊(duì)列。
4.Segment:partition物理上由多個(gè)segment組成。
5.offset:每個(gè)partition都由一系列有序的、不可變的消息組成,這些消息被連續(xù)的追加到partition中。partition中的每個(gè)消息都有一個(gè)連續(xù)的序列號(hào)叫做offset,用于partition唯一標(biāo)識(shí)一條消息.
四、Kafka消費(fèi)端的常用參數(shù)
看過(guò)上面的介紹之后,相信大家對(duì)Kafka與ActiveMQ都有一定的了解了吧,最后歡迎對(duì)大數(shù)據(jù)開(kāi)發(fā)感興趣的同學(xué)來(lái)到千鋒大數(shù)據(jù)培訓(xùn)班了解一下我們的大數(shù)據(jù)開(kāi)發(fā)培訓(xùn)課程,現(xiàn)在還有免費(fèi)學(xué)習(xí)教程視頻可以領(lǐng)取,先到先得。