欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Kafka的原理及單機(jī)部署方式-創(chuàng)新互聯(lián)

這篇文章主要介紹“Kafka的原理及單機(jī)部署方式”,在日常操作中,相信很多人在Kafka的原理及單機(jī)部署方式問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Kafka的原理及單機(jī)部署方式”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

公司主營業(yè)務(wù):網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出新建免費(fèi)做網(wǎng)站回饋大家。

一、kafka介紹及原理

kafka是由Apache軟件基金會(huì)發(fā)布的一個(gè)開源流處理平臺,由Scala和Java編寫。它是一種高吞吐量的分布式發(fā)布的訂閱消息系統(tǒng),它可以處理消費(fèi)者規(guī)模的網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)。

這種動(dòng)作(網(wǎng)頁瀏覽,搜索和其他用戶的行動(dòng))是在現(xiàn)代網(wǎng)絡(luò)上的許多社會(huì)功能的一個(gè)關(guān)鍵因素。 這些數(shù)據(jù)通常是由于吞吐量的要求而通過處理日志和日志聚合來解決。 對于像Hadoop一樣的日志數(shù)據(jù)和離線分析系統(tǒng),但又要求實(shí)時(shí)處理的限制,這是一個(gè)可行的解決方案。Kafka的目的是通過Hadoop的并行加載機(jī)制來統(tǒng)一線上和離線的消息處理,也是為了通過集群來提供實(shí)時(shí)的消息。

1、kafka的特性

kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),具有以下特性:

  • 通過磁盤數(shù)據(jù)結(jié)構(gòu)提供消息的持久化,這種結(jié)構(gòu)對于即使數(shù)以TB的消息存儲也能夠保持長時(shí)間的穩(wěn)定性能;

  • 持久性:使用文件性存儲,日志文件存儲消息,需要寫入硬盤,采用達(dá)到一定閾值才寫入硬盤,從而減少磁盤I/O,如果kafka突然宕機(jī),數(shù)據(jù)會(huì)丟失一部分;

  • 高吞吐量:即使是非常普通的硬件kafka也可以支持每秒數(shù)百萬的消息;

  • 支持通過kafka服務(wù)器和消費(fèi)機(jī)集群來分區(qū)消息;

  • 支持Hadoop并行數(shù)據(jù)加載。

2、kafka相關(guān)術(shù)語

  • Broker:消息中間件處理節(jié)點(diǎn),一個(gè)Kafka節(jié)點(diǎn)就是一個(gè)broker,一個(gè)或者多個(gè)Broker可以組成一個(gè)Kafka集群;

  • Topic:Kafka根據(jù)topic對消息進(jìn)行歸類,發(fā)布到Kafka集群的每條消息都需要指定一個(gè)topic;

  • Producer:消息生產(chǎn)者,向Broker發(fā)送消息的客戶端;

  • Consumer:消息消費(fèi)者,從Broker讀取消息的客戶端;

  • ConsumerGroup:每個(gè)Consumer屬于一個(gè)特定的Consumer Group,一條消息可以發(fā)送到多個(gè)不同的Consumer Group,但是一個(gè)Consumer Group中只能有一個(gè)Consumer能夠消費(fèi)該消息;

  • Partition:物理上的概念,一個(gè)topic可以分為多個(gè)partition,每個(gè)partition內(nèi)部是有序的。

3、Topic和Partition的區(qū)別

一個(gè)topic可以認(rèn)為一個(gè)一類消息,每個(gè)topic將被分成多個(gè)partition,每個(gè)partition在存儲層面是append log文件。任何發(fā)布到此partition的消息都會(huì)被追加到log文件的尾部,每條消息在文件中的位置稱為offset(偏移量),offset為long型的數(shù)字,它唯一標(biāo)記一條消息。每條消息都被append到partition中,是順序?qū)懘疟P,因此效率非常高(順序?qū)懘疟P比隨機(jī)寫內(nèi)存的速度還要高,這是kafka高吞吐率的一個(gè)很重要的保證)。

Kafka的原理及單機(jī)部署方式

每一條消息被發(fā)送到broker中,會(huì)根據(jù)partition規(guī)則選擇被存儲到哪一個(gè)partition(默認(rèn)采用輪詢的方式進(jìn)行寫入數(shù)據(jù))。如果partition規(guī)則設(shè)置合理,所有消息可以均勻分布到不同的partition里,這樣就實(shí)現(xiàn)了水平擴(kuò)展。(如果一個(gè)topic對應(yīng)一個(gè)文件,那這個(gè)文件所在的機(jī)器I/O將會(huì)成為這個(gè)topic的性能瓶頸,而partition解決了這個(gè)問題),如果消息被消費(fèi)則保留append.log兩天。

4、kafka的架構(gòu)

Kafka的原理及單機(jī)部署方式

如上圖所示,一個(gè)典型的kafka體系架構(gòu)包括若干Producer(可以是服務(wù)器日志,業(yè)務(wù)數(shù)據(jù),頁面前端產(chǎn)生的page view等),若干個(gè)broker(kafka支持水平擴(kuò)展,一般broker數(shù)量越多,集群吞吐率越高),若干Consumer(Group),以及一個(gè)Zookeeper集群。kafka通過Zookeeper管理集群配置,選舉出leader,以及在consumer group發(fā)生變化時(shí)進(jìn)行重新調(diào)整。Producer使用push(推)模式將消息發(fā)布到broker,consumer使用pull(拉)模式從broker訂閱并消費(fèi)消息。

zookeeper群集中有兩個(gè)角色:leader和follower,leader對外提供服務(wù),follower負(fù)責(zé)leader里面所產(chǎn)生內(nèi)容同步消息寫入生成時(shí)產(chǎn)生replicas(副本);
kafka的高可靠性的保證來源于其健壯的副本(replicas)策略。通過調(diào)節(jié)其副本相關(guān)參數(shù),可以使得kafka在性能和可靠性之間運(yùn)轉(zhuǎn)之間的游刃有余。kafka從0.8.x版本開始提供partition級別的復(fù)制的。

5、kafka的文件存儲機(jī)制

kafka中消息是以topic進(jìn)行分類的,生產(chǎn)者通過topic向kafka broker發(fā)送消息,消費(fèi)者通過topic讀取數(shù)據(jù)。然而topic在物理層面又能以partition為分組,一個(gè)topic可以分為若干個(gè)partition,partition還可以細(xì)分為segment,一個(gè)partition物理上由多個(gè)segment組成。

為了便于說明問題,假設(shè)這里只有一個(gè)kafka集群,且這個(gè)集群只有一個(gè)kafka broker,也就是只有一臺物理機(jī)。在這個(gè)kafka  broker的server.properties配置文件中定義kafka的日志文件存放路徑以此來設(shè)置kafka消息文件存儲目錄,與此同時(shí)創(chuàng)建一個(gè)topic:test,partition的數(shù)量為4,啟動(dòng)kafka就可以在日志存放路徑中看到生成4個(gè)目錄,在kafka文件存儲中,同一個(gè)topic下有多個(gè)不同的partition,每個(gè)partition為一個(gè)目錄,partition的名稱規(guī)則為:topic名稱+有序序號,第一個(gè)序號從0開始。

segment是什么?

如果就以partition為最小存儲單位,我們可以想象當(dāng)Kafka producer不斷發(fā)送消息,必然會(huì)引起partition文件的無限擴(kuò)張,這樣對于消息文件的維護(hù)以及已經(jīng)被消費(fèi)的消息的清理帶來嚴(yán)重的影響,所以這里以segment為單位又將partition細(xì)分。每個(gè)partition(目錄)相當(dāng)于一個(gè)巨型文件被平均分配到多個(gè)大小相等的segment(段)數(shù)據(jù)文件中(每個(gè)segment 文件中消息數(shù)量不一定相等)這種特性也方便old segment的刪除,即方便已被消費(fèi)的消息的清理,提高磁盤的利用率。每個(gè)partition只需要支持順序讀寫就行。

segment文件由兩部分組成,分別為“.index”文件和“.log”文件,分別表示為segment索引文件和數(shù)據(jù)文件。這兩個(gè)文件的命令規(guī)則為:partition全局的第一個(gè)segment從0開始,后續(xù)每個(gè)segment文件名為上一個(gè)segment文件最后一條消息的offset值(偏移量),數(shù)值大小為64位,20位數(shù)字字符長度,沒有數(shù)字用0填充。

6、數(shù)據(jù)的可靠性和持久性保證

當(dāng)producer向leader發(fā)送數(shù)據(jù)時(shí),可以通request.required.acks參數(shù)來設(shè)置數(shù)據(jù)可靠性的級別:

  • 1(默認(rèn)):producer的leader已成功收到數(shù)據(jù)并得到確認(rèn)。如果leader宕機(jī)了,則會(huì)丟失數(shù)據(jù);

  • 0 :producer無需等待來自broker的確認(rèn)而繼續(xù)發(fā)送下一批消息。這種情況下數(shù)據(jù)傳輸效率高,但是數(shù)據(jù)可靠性確是最低的;

  • -1:producer需要等待所有follower都確認(rèn)接收到數(shù)據(jù)后才算一次發(fā)送完成,可靠性高。

7、leader選舉

一條消息只有被所有follower都從leader復(fù)制過去才會(huì)被認(rèn)為已提交。這樣就避免了部分?jǐn)?shù)據(jù)被寫進(jìn)了leader,還沒來得及被任何follower復(fù)制就宕機(jī)了,而造成數(shù)據(jù)丟失。而對于producer而言,它可以選擇是否等待消息commit。

一種非常常用的選舉leader的方式是“少數(shù)服從多數(shù)”,在進(jìn)行數(shù)據(jù)的復(fù)制過程中,存在多個(gè)follower,并且每個(gè)follower的數(shù)據(jù)速度都不相同,當(dāng)leader宕機(jī)后,當(dāng)前的follower上誰的數(shù)據(jù)最多誰就是leader。

二、部署單機(jī)kafka

1、部署kafka

kafka服務(wù)依賴JAVA環(huán)境,我這里默認(rèn)有。

kafka的安裝包可以從我的網(wǎng)盤鏈接中下載。

#解包
[root@kafka src]# tar zxf kafka_2.11-2.2.1.tgz 
[root@kafka src]# mv kafka_2.11-2.2.1 /usr/local/kafka
[root@kafka src]# cd /usr/local/kafka/bin/
#啟動(dòng)zookeeper
[root@kafka bin]# ./zookeeper-server-start.sh ../config/zookeeper.properties &
#啟動(dòng)kafka
[root@kafka bin]# ./kafka-server-start.sh ../config/server.properties &
[root@kafka bin]# netstat -anpt | grep 9092  #確定端口在監(jiān)聽

由于kafka是通過zookeeper來調(diào)度的,所以,即使是單機(jī)kafka也需要啟動(dòng)zookeeper服務(wù),kafka的安裝目錄下是默認(rèn)集成了zookeeper的,直接啟動(dòng)即可。

2、測試kafka

#在本機(jī)創(chuàng)建kafka,副本數(shù)量為1,分區(qū)數(shù)量為1
[root@kafka bin]# ./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
#查看本機(jī)的topic
[root@kafka bin]# ./kafka-topics.sh --list --bootstrap-server localhost:9092
#發(fā)送消息到test
[root@kafka bin]# ./kafka-console-producer.sh --broker-list localhost:9092 --topic test
>aaaa
>bbbb
>cccc
#開啟新的終端,進(jìn)行讀取消息測試,“--from-beginning”表示從開頭讀取
[root@kafka bin]# ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
aaaa
bbbb
cccc

到此,關(guān)于“Kafka的原理及單機(jī)部署方式”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站標(biāo)題:Kafka的原理及單機(jī)部署方式-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://chinadenli.net/article46/diiheg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊網(wǎng)站收錄用戶體驗(yàn)響應(yīng)式網(wǎng)站品牌網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化