Kafka在大數(shù)據(jù)技術(shù)生態(tài)系統(tǒng)中是眾所周知的消息傳遞系統(tǒng)。
面對(duì)活躍的流數(shù)據(jù),它提供高吞吐量的服務(wù)。
在實(shí)時(shí)大數(shù)據(jù)處理場(chǎng)景中,可以說(shuō)是一個(gè)很好的武器。
有應(yīng)用程序。
在當(dāng)今的大數(shù)據(jù)開(kāi)發(fā)技術(shù)共享中,我們將主要討論Kafka框架的工作原理。
Kafka概述了官方定義。
Kakfa是基于發(fā)布/訂閱模型的分布式消息隊(duì)列,主要用于大數(shù)據(jù)的實(shí)時(shí)處理領(lǐng)域。
一般而言,消息隊(duì)列有兩種模式:①點(diǎn)對(duì)點(diǎn)模式:消息生產(chǎn)者將消息發(fā)送到消息隊(duì)列,然后消息使用者將其從隊(duì)列中取出并使用消息。
使用完消息后,不存儲(chǔ)隊(duì)列。
②發(fā)布/訂閱模式(一對(duì)多,使用者使用數(shù)據(jù)后,消息不會(huì)清除):消息生產(chǎn)者將消息發(fā)布到主題,多個(gè)消息使用者(訂閱)同時(shí)使用消息。
Kafka是典型的發(fā)布/訂閱模型,它更適合于實(shí)時(shí)大數(shù)據(jù)場(chǎng)景中的消息傳遞服務(wù)。
Kafka基礎(chǔ)結(jié)構(gòu)Kafka的基礎(chǔ)結(jié)構(gòu)主要由經(jīng)紀(jì)人,生產(chǎn)者和消費(fèi)者團(tuán)體組成,目前包括ZooKeeper。
生產(chǎn)者負(fù)責(zé)發(fā)送消息,代理負(fù)責(zé)緩沖消息,可以在代理中創(chuàng)建主題,每個(gè)主題都有分區(qū)和復(fù)制的概念。
使用者組負(fù)責(zé)處理消息,并且同一使用者組中的使用者不能使用同一分區(qū)中的數(shù)據(jù)。
消費(fèi)群體主要是為了提高消費(fèi)能力。
例如,一個(gè)使用者過(guò)去消耗了100條數(shù)據(jù),但是現(xiàn)在有兩個(gè)使用者消耗了100條數(shù)據(jù),這可以增加消耗功率。
因此,消費(fèi)者組中的消費(fèi)者數(shù)量應(yīng)少于分區(qū)的數(shù)量,否則會(huì)有沒(méi)有分區(qū)就可以消費(fèi)的消費(fèi)者,造成資源浪費(fèi)。
注意:不同使用者組中的使用者可以使用相同的分區(qū)數(shù)據(jù)。
如果Kakfa需要組件集群,則只需在ZooKeeper中注冊(cè)。
ZooKeeper還會(huì)保留消息使用進(jìn)度或偏移量或使用位置:將0.9之前的版本的偏移量存儲(chǔ)在ZooKeeper中。
0.9之后的版本偏移量存儲(chǔ)在Kafka中。
Kafka定義了一個(gè)系統(tǒng)主題,專門用于存儲(chǔ)偏移數(shù)據(jù)。
這主要是由于偏移量的頻繁更改,這給ZooKeeper帶來(lái)了更大的壓力,并且Kafka自己的處理也更加復(fù)雜。
Kafka無(wú)法保證消息的全局順序,而只能保證分區(qū)中消息的順序,因?yàn)槭褂谜咴诓煌姆謪^(qū)中隨機(jī)使用消息。
Kafka工作流程Kafka中的消息按主題進(jìn)行分類,生產(chǎn)者生成的消息和消費(fèi)者使用的消息均以主題為導(dǎo)向。
主題是一個(gè)邏輯概念,分區(qū)是一個(gè)物理概念。
每個(gè)分區(qū)都有復(fù)制的概念。
每個(gè)分區(qū)對(duì)應(yīng)一個(gè)日志文件。
生產(chǎn)者生成的數(shù)據(jù)存儲(chǔ)在日志文件中。
生產(chǎn)者生成的數(shù)據(jù)將連續(xù)添加到日志文件的末尾。
每個(gè)數(shù)據(jù)段都有其自己的偏移量,使用者將實(shí)時(shí)記錄他們已消耗的偏移量,以便在發(fā)生錯(cuò)誤時(shí)從上一個(gè)位置繼續(xù)消耗,此偏移量將保存在索引文件中。
Kafka的偏移量在分區(qū)中排序,但在不同的分區(qū)中不排序。
Kafka不保證數(shù)據(jù)的全局順序。
關(guān)于大數(shù)據(jù)的發(fā)展,介紹卡夫卡的工作原理,以上內(nèi)容是對(duì)每個(gè)人的簡(jiǎn)要介紹。
Kafka在大數(shù)據(jù)技術(shù)生態(tài)系統(tǒng)中具有很高的知名度,尤其是擁有豐富數(shù)據(jù)資源的公司更喜歡使用Kafka。