您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)Kafka的體系架構(gòu)是怎樣的,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一、什么是Kafka?
數(shù)據(jù)工程中最具挑戰(zhàn)性的部分之一是如何從不同點(diǎn)收集和傳輸大量數(shù)據(jù)到分布式系統(tǒng)進(jìn)行處理和分析。需要通過(guò)消息隊(duì)列正確地分離大量數(shù)據(jù),因?yàn)槿绻徊糠謹(jǐn)?shù)據(jù)無(wú)法傳送,則可以在系統(tǒng)恢復(fù)時(shí)傳輸和分析其他數(shù)據(jù)。有兩種消息排隊(duì),對(duì)于上述目的,它們都是可靠的和異步的。點(diǎn)對(duì)點(diǎn)(Point to point)和發(fā)布者——訂閱者(publisher-subscriber)。下圖展示了一個(gè)典型的消息系統(tǒng),其中:消息的生產(chǎn)者負(fù)責(zé)產(chǎn)生消息;消息的消費(fèi)者負(fù)責(zé)處理消息。
Kafka是一個(gè)分布式發(fā)布——訂閱消息傳遞系統(tǒng)。Kafka快速、可擴(kuò)展且耐用。它保留主題中的消息源。生產(chǎn)者將數(shù)據(jù)寫(xiě)入主題,消費(fèi)者從主題中讀取數(shù)據(jù)。
Zookeeper需要覆蓋Kafka生態(tài)系統(tǒng),因此有必要下載它,更改其屬性并最終設(shè)置環(huán)境。在運(yùn)行Zookeeper之后,應(yīng)該下載Kafka,然后開(kāi)發(fā)人員可以借助一些指令創(chuàng)建代理,集群和主題。
點(diǎn)對(duì)點(diǎn)(Queue)
在點(diǎn)對(duì)點(diǎn)或一對(duì)一中,有一個(gè)發(fā)件人和正在監(jiān)聽(tīng)發(fā)件人的多個(gè)消費(fèi)者。當(dāng)一個(gè)消費(fèi)者從隊(duì)列收到消息時(shí),該特定消息將從隊(duì)列中消失,而其他消費(fèi)者無(wú)法獲得該消息。
發(fā)布和訂閱系統(tǒng)(Topic)
在發(fā)布者——訂閱者中,發(fā)布者向同時(shí)收聽(tīng)發(fā)布者的多個(gè)消費(fèi)者或訂閱者發(fā)送消息,并且每個(gè)訂閱者可以獲得相同的消息。數(shù)據(jù)應(yīng)通過(guò)數(shù)據(jù)管道傳輸,數(shù)據(jù)管道負(fù)責(zé)整合來(lái)自數(shù)據(jù)源的數(shù)據(jù)。
主題和發(fā)布者
有一個(gè)發(fā)布者發(fā)送消息。消息根據(jù)主題進(jìn)行分類(lèi),每個(gè)主題都有一個(gè)或多個(gè)分區(qū),并有自己的偏移地址。例如,如果我們?yōu)橐粋€(gè)主題分配復(fù)制因子= 2,那么Kafka將為每個(gè)分區(qū)創(chuàng)建兩個(gè)相同的副本并在群集中找到它。
集群和Brokers
Kafka集群包括代理——服務(wù)器或節(jié)點(diǎn),每個(gè)代理可以位于不同的機(jī)器中,并允許訂戶(hù)選擇消息。因此,復(fù)制就像備份分區(qū)一樣,這意味著Kafka是持久的,這有助于容錯(cuò)。
Zookeeper
Kafka集群不保留其自身生態(tài)系統(tǒng)的元數(shù)據(jù),因?yàn)樗菬o(wú)狀態(tài)的。因此,Kafka依賴(lài)于Zookeeper來(lái)跟蹤元數(shù)據(jù)。Zookeeper應(yīng)該首先啟動(dòng)。實(shí)際上,Zookeeper是brokers和consumers之間的接口,它的存在是容錯(cuò)的必要條件。Kafka代理負(fù)責(zé)負(fù)載平衡,假設(shè)該主題有一個(gè)主題和多個(gè)分區(qū),每個(gè)分區(qū)都有一個(gè)領(lǐng)導(dǎo)者,定期確認(rèn)其與Zookeeper的偏移量。因此,如果一個(gè)節(jié)點(diǎn)或代理失敗,Kafka可以從Zookeeper請(qǐng)求的最后一個(gè)偏移地址繼續(xù)操作,因此Zookeeper在崩潰情況下在Kafka恢復(fù)中起著至關(guān)重要的作用。
部署ZooKeeper
配置/root/training/zookeeper-3.4.6/conf/zoo.cfg文件 dataDir=/root/training/zookeeper-3.4.6/tmp server.1=hadoop112:2888:3888 在/root/training/zookeeper-3.4.6/tmp目錄下創(chuàng)建一個(gè)myid的空文件 echo 1 > /root/training/zookeeper-3.4.6/tmp/myid 啟動(dòng)ZooKeeper zkServer.sh start 查看ZooKeeper的狀態(tài) zkServer.sh status
由于我們部署的是單節(jié)點(diǎn)的ZooKeeper,所以ZooKeeper的狀態(tài)將是Standalone。
部署Kafka
修改server.conf文件 broker.id=0 port=9092 log.dirs=/root/training/kafka_2.11-2.4.0/logs/broker0 zookeeper.connect=localhost:2181 啟動(dòng)Kafka bin/kafka-server-start.sh config/server.properties &
使用JPS查看后臺(tái)進(jìn)程
創(chuàng)建Topic bin/kafka-topics.sh --create --zookeeper bigdata111:2181 --replication-factor 1 --partitions 3 --topic mytopic1 發(fā)送消息 bin/kafka-console-producer.sh --broker-list bigdata111:9092 --topic mytopic1 接收消息 消息消費(fèi) bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --topic mytopic1 從開(kāi)始位置消費(fèi) bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --from-beginning --topic topicName 顯示key消費(fèi) bin/kafka-console-consumer.sh --bootstrap-server bigdata111:9092 --property print.key=true --topic mytopic1
上述就是小編為大家分享的Kafka的體系架構(gòu)是怎樣的了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(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)容。