寫介紹kafka的幾個(gè)重要概念(可以參考之前的博文Kafka的簡(jiǎn)單介紹):
成都創(chuàng)新互聯(lián)云計(jì)算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)13年的服務(wù)器租用、西部信息中心、云服務(wù)器、網(wǎng)站空間、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn),已先后獲得國(guó)家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、網(wǎng)站空間、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
Broker:消息中間件處理結(jié)點(diǎn),一個(gè)Kafka節(jié)點(diǎn)就是一個(gè)broker,多個(gè)broker可以組成一個(gè)Kafka集群;
Topic:一類消息,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能夠同時(shí)負(fù)責(zé)多個(gè)topic的分發(fā);
Partition:topic物理上的分組,一個(gè)topic可以分為多個(gè)partition,每個(gè)partition是一個(gè)有序的隊(duì);
Segment:每個(gè)partition又由多個(gè)segment file組成;
offset:每個(gè)partition都由一系列有序的、不可變的消息組成,這些消息被連續(xù)的追加到partition中。partition中的每個(gè)消息都有一個(gè)連續(xù)的序列號(hào)叫做offset,用于partition唯一標(biāo)識(shí)一條消息;
message:這個(gè)算是kafka文件中最小的存儲(chǔ)單位,即是 a commit log。
topic:創(chuàng)建topic名稱
partition:分區(qū)編號(hào)
offset:表示該partition已經(jīng)消費(fèi)了多少message
logsize:表示該paritition生產(chǎn)了多少的message
lag:表示有多少條message未被消費(fèi)
owner:表示消費(fèi)者
create:表示該partition創(chuàng)建時(shí)間
last seen:表示消費(fèi)狀態(tài)刷新最新時(shí)間
參考鏈接:
能查看到kafka中生產(chǎn)了,消費(fèi)了,還剩下多少message中我們用的是kafkaoffsetmonitor這個(gè)監(jiān)控插件
Kafka監(jiān)控工具KafkaOffsetMonitor配置及使用:https://www.cnblogs.com/dadonggg/p/8242682.html
topics是什么?partition是什么?
topics是kafka中數(shù)據(jù)存儲(chǔ)的基本單位
寫數(shù)據(jù),要指定寫入哪個(gè)topic 讀數(shù)據(jù),指定從哪個(gè)topic去讀
我們可以這樣簡(jiǎn)單的理解
topic就類似于數(shù)據(jù)庫(kù)中的一張表,可以創(chuàng)建任意多個(gè)topic 每一個(gè)topic的名字是唯一的
例如:
程序A產(chǎn)生了一類消息,然后把這類消息放在kafka group中 ,這由程序A產(chǎn)生的這個(gè)消息就叫一個(gè)topic
程序B需要 訂閱這個(gè)消息,才能成為這個(gè)topic的消費(fèi)者
每個(gè)topic的內(nèi)部都會(huì)有一個(gè)或多個(gè)partitions(分區(qū))
你寫入的數(shù)據(jù),他其實(shí)是寫入每一個(gè)topic里的其中一個(gè)partition,并且當(dāng)前的數(shù)據(jù)是有序的寫入到paritition中的。
每一個(gè)partition內(nèi)都會(huì)維護(hù)一個(gè)不斷增加的ID,每當(dāng)你寫入一個(gè)新的數(shù)據(jù)的時(shí)候,這個(gè)ID就會(huì)增長(zhǎng),這個(gè)id就會(huì)被稱為這個(gè)paritition的offset,每個(gè)寫入partition中的message都會(huì)對(duì)應(yīng)一個(gè)offset。
不同的partition都會(huì)對(duì)應(yīng)他們自己的offset 我們可以利用offset來(lái)判斷,當(dāng)前paritition內(nèi)部的順序,但是我們不能比較來(lái)自不同的兩個(gè)partition的順序,這是沒(méi)有意義的
partition中的數(shù)據(jù)是有序的,不同partition間的數(shù)據(jù)丟失了數(shù)據(jù)的順序。如果topic有多個(gè)partition,消費(fèi)數(shù)據(jù)時(shí)就不能保證數(shù)據(jù)的順序。在需要嚴(yán)格保證消息的消費(fèi)順序的場(chǎng)景下,需要將partition數(shù)目設(shè)為1。
//
每個(gè)topic將被分成多個(gè)partition(區(qū))
每個(gè)topic將被分成多個(gè)partition(區(qū)),此外kafka還可以配置partitions需要備份的個(gè)數(shù)(replicas)
基于replicated方案,那么就意味著需要對(duì)多個(gè)備份進(jìn)行調(diào)度;每個(gè)partition都有一個(gè)server為"leader";leader負(fù)責(zé)所有的讀寫操作,如果leader失效,那么將會(huì)有其他follower來(lái)接管(成為新的leader);follower只是單調(diào)的和leader跟進(jìn),同步消息即可..由此可見(jiàn)作為leader的server承載了全部的請(qǐng)求壓力,因此從集群的整體考慮,有多少個(gè)partitions就意味著有多少個(gè)"leader",kafka會(huì)將"leader"均衡的分散在每個(gè)實(shí)例上,來(lái)確保整體的性能穩(wěn)定.
其中partition leader的位置(host:port)注冊(cè)在zookeeper中
當(dāng)你講數(shù)據(jù)寫入kafka中,改數(shù)據(jù)默認(rèn)情況下會(huì)在kafka中保存2個(gè)星期。當(dāng)然,我們可以去配置的。如果是默認(rèn)的2個(gè)星期,超過(guò)2個(gè)星期的話,kafka里面的數(shù)據(jù)就會(huì)被無(wú)效化。這個(gè)時(shí)候,該數(shù)據(jù)對(duì)應(yīng)的offset就沒(méi)有其他的意義了。
從kafka讀取數(shù)據(jù)后 數(shù)據(jù)會(huì)自動(dòng)刪除嗎
不會(huì),kafka中數(shù)據(jù)的刪除跟有沒(méi)有消費(fèi)者消費(fèi)完全無(wú)關(guān)。數(shù)據(jù)的刪除,只跟kafka broker上面上面的這兩個(gè)配置有關(guān):
log.retention.hours=48 #數(shù)據(jù)最多保存48小時(shí)
log.retention.bytes=1073741824 #數(shù)據(jù)最多1G
提示:寫入到kafka中的數(shù)據(jù),是不可以被改變的。他有一個(gè)熟悉就是immutability。也就是說(shuō),你沒(méi)有辦法去更改已經(jīng)寫入到kafka中的數(shù)據(jù)。
如果你想更新一個(gè)數(shù)據(jù)memssage,那你只能重新寫入memssage到kafka中,并且這個(gè)新的message會(huì)有一個(gè)新的offset,以區(qū)別于之前寫入的message。
對(duì)于每一個(gè)寫入kafka中的數(shù)據(jù),他們會(huì)隨機(jī)的寫入到當(dāng)前topic中的某一個(gè)partition內(nèi),有一個(gè)例外,你提供一個(gè)key給當(dāng)前的數(shù)據(jù),這個(gè)時(shí)候,你就可以用當(dāng)前的key去控制當(dāng)前數(shù)據(jù)應(yīng)該傳入到哪個(gè)partition中。
每一個(gè)topic中都可以由多個(gè)parititions 這是由你來(lái)決定的
網(wǎng)頁(yè)題目:kafka基礎(chǔ)概念(組件名稱作用)
本文URL:http://vcdvsql.cn/article34/iiihpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、App開(kāi)發(fā)、企業(yè)建站、品牌網(wǎng)站建設(shè)、ChatGPT、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)