CMAK 各個(gè)功能的作用解釋(主題)
★ 主題
Kafka 主題雖然也叫 topic,但它和 Pub-Sub 消息模型中 topic 主題及 AMQP 的 topic 都不同(AMQP 的 topic 只是 Exchange 的類型)。
Kafka 的主題只是盛裝消息的邏輯容器(注意是邏輯容器),主題之下會(huì)分為若干個(gè)分區(qū),分區(qū)才是盛裝消息的物理容器。
▲ 消息組織方式實(shí)際上是三級(jí)結(jié)構(gòu):主題 → 分區(qū) → 消息。
▲ 主題只是消息的邏輯分類,它只是發(fā)布消息的類別或消費(fèi)源的名稱。
發(fā)布消息時(shí),面向主題發(fā)布消息;
消費(fèi)消息時(shí),也面向主題消費(fèi);
但實(shí)際會(huì)由 Kafka 將消息存儲(chǔ)到分區(qū)中,從分區(qū)中消費(fèi)消息。
就是消息是存在分區(qū)中的,但是發(fā)布和消費(fèi)消息是面向主題來(lái)的。
主題在物理上是不存在的,實(shí)際上程序存在的只是分區(qū)。
★ 分區(qū)
▲ 分區(qū)才是真正存儲(chǔ)消息的地方,分區(qū)在物理存儲(chǔ)層面就是一個(gè)一個(gè)的日志文件(就是數(shù)據(jù)文件),這些日志文件保存在 server.properties文件下的 log.dirs屬性 指定目錄下。
▲ 分區(qū)文件都是一個(gè)有序的記錄序列,序列的數(shù)據(jù)項(xiàng)可通過(guò)下標(biāo)訪問(wèn),下標(biāo)從0開始,如圖所示:
▲ 分區(qū)文件的結(jié)構(gòu)有點(diǎn)類似于 List 集合,只不過(guò) List 集合存儲(chǔ)在內(nèi)存中,而分區(qū)文件則持久化地、存儲(chǔ)在磁盤上。
消息被消費(fèi)完成之后,是不會(huì)自動(dòng)從分區(qū)中移除的,只能通過(guò)設(shè)置,比如過(guò)某一段時(shí)間之后,再?gòu)姆謪^(qū)中移除。
★ 創(chuàng)建主題:
【備注】 Kafka 的 Broker 之間的地位是平等,沒(méi)有所謂誰(shuí)是主Broker,誰(shuí)是副Broker的概念。
Kafka的主、從是體現(xiàn)在分區(qū)上的 ,分區(qū)可分為領(lǐng)導(dǎo)者分區(qū)(主)、追隨者分區(qū)(副)。
領(lǐng)導(dǎo)者分區(qū),其實(shí)就是主分區(qū):對(duì)外提供服務(wù)。
追隨者分區(qū),就是所謂副分區(qū):作用是作為主分區(qū)的后備。
kafka-topics.bat(.sh)命令可用于操作主題,包括創(chuàng)建主題、刪除主題及列出主題、查看主題等。
例如如下命令即可創(chuàng)建一個(gè)主題:
^ 這個(gè)符號(hào)表示命令還沒(méi)有寫完,要換一行
kafka-topics.bat --create ^
–bootstrap-server localhost:9092 ^
–replication-factor 2 ^
–partitions 3 ^
–topic test1
上面命令指定了如下幾個(gè)選項(xiàng):
–create:指定創(chuàng)建主題。
–bootstrap-server:指定Kafka Broker的地址。
–replication-factor:指定復(fù)制因子。此處指定的復(fù)制因子為2,表明每個(gè)分區(qū)都有兩個(gè)副本,一個(gè)領(lǐng)導(dǎo)者副本,一個(gè)追隨者副本。
–partions:指定該主題包含的分區(qū)數(shù)。此處指定的分區(qū)數(shù)為3,表明該主題由3個(gè)分區(qū)組成。
–partions選項(xiàng)指定該主題由3個(gè)分區(qū)組成,而–replication-factor指定每個(gè)分區(qū)有2個(gè)副本,因此實(shí)際上該分區(qū)包含6(3 * 2)個(gè)分區(qū),其中3個(gè)領(lǐng)導(dǎo)者分區(qū),3個(gè)追隨者分區(qū)。
–topic:指定主題名。
用命令行創(chuàng)建 topic
創(chuàng)建出來(lái)了,如圖
主題信息:
因?yàn)榉謪^(qū)是3,復(fù)制因子是2,所以一共有6個(gè)分區(qū);
因?yàn)槲覀兣?個(gè)broker節(jié)點(diǎn)。
如圖:每個(gè)broker節(jié)點(diǎn)分配了兩個(gè)分區(qū)
CMAK 界面創(chuàng)建topic
創(chuàng)建出來(lái)的主題
細(xì)看主題的分區(qū)之類的
因?yàn)榉謪^(qū)是4,復(fù)制因子是3,所以一共有12個(gè)分區(qū);
因?yàn)槲覀兣?個(gè)broker節(jié)點(diǎn)。
如圖:每個(gè)broker節(jié)點(diǎn)分配了4分區(qū)
分區(qū)的存放位置詳解:
★ 列出和查看主題
▲ 可在CMAK列出和查看主題
▲ 也可使用 kafka-topics.bat 的 --list 選項(xiàng)來(lái)查看主題列表:
kafka-topics.bat --list --bootstrap-server localhost:9092
Kafka 的 Broker 之間的地位是平等,沒(méi)有所謂誰(shuí)是主Broker,誰(shuí)是副Broker的概念。所以這里就隨便寫其中一個(gè)broker的端口號(hào)來(lái)查看主題:
如圖,跟 CMAK 顯示的一樣,是3個(gè)主題。
▲ 可使用 kafka-topics.bat 的 --describe 選項(xiàng)來(lái)查看指定主題的詳細(xì)信息。
kafka-topics.bat --describe --bootstrap-server localhost:9092 --topic 主題名
kafka-topics.bat --describe --bootstrap-server localhost:9092 --topic test2
不知道怎么查看,不知道有哪些命令的時(shí)候,可以直接輸:kafka-topics 這個(gè)命令來(lái)看。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-777044.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-777044.html
到了這里,關(guān)于05、Kafka ------ 各個(gè)功能的作用解釋(主題和分區(qū) 詳解,用命令行和圖形界面創(chuàng)建主題和查看主題)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!