kafka分區和副本機制驗證

1.三臺機器對應一個分區

目前使用kafka集羣,但是由於數據量還行,就不想使用太多的分區,所以只想弄一個分區,網上資料看了一大堆,基本都是些理論和囉嗦,於是乎自己手動來驗證下這個情況的好壞。
① 假設是三臺機器的kafka集羣,創建一個主題one_fb1_fq1,指定副本數1和分區數1,命令:

bin/kafka-topics.sh --create --zookeeper kafka_zk001:2181,kafka_zk002:2181,kafka_zk003:2181 --replication-factor 1 --partitions 1 --topic one_fb1_fq1

查看日誌目錄/tmp/kafka-logs/發現:只在其中一臺機器上存在one_fb1_fq1-0這個目錄。

結論:這意味着如果剛好存在one_fb1_fq1-0的這臺機器掛掉了,生產者和消費者都不能正常使用,會報錯。

② 假設是三臺機器的kafka集羣,創建一個主題one_fb2_fq1,指定副本數2和分區數1,命令:

bin/kafka-topics.sh --create --zookeeper kafka_zk001:2181,kafka_zk002:2181,kafka_zk003:2181 --replication-factor 2 --partitions 1 --topic one_fb2_fq1

查看日誌目錄/tmp/kafka-logs/發現:其中有兩臺機器存在one_fb2_fq1-0這個目錄。

結論:可以正常提供服務,只是沒有one_fb2_fq1-0目錄的那臺機器顯得有點多餘,這不符合集羣的目的。

③ 假設是三臺機器的kafka集羣,創建一個主題one_fb3_fq1,指定副本數3和分區數1,命令:

bin/kafka-topics.sh --create --zookeeper kafka_zk001:2181,kafka_zk002:2181,kafka_zk003:2181 --replication-factor 3 --partitions 1 --topic one_fb3_fq1

查看日誌目錄/tmp/kafka-logs/發現:三臺機器都存在one_fb3_fq1-0這個目錄。

結論:可以正常提供服務。

2.三臺機器對應三個分區

① 假設是三臺機器的kafka集羣,創建一個主題two_fb2_fq3,指定副本數2和分區數3,命令:

bin/kafka-topics.sh --create --zookeeper kafka_zk001:2181,kafka_zk002:2181,kafka_zk003:2181 --replication-factor 2 --partitions 3 --topic two_fb2_fq3

查看日誌目錄/tmp/kafka-logs/發現:機器A存在two_fb2_fq3-0和two_fb2_fq3-1;機器B存在two_fb2_fq3-1和two_fb2_fq3-2;機器C存在two_fb2_fq3-0和two_fb2_fq3-2。

結論:每臺機器除了自身目錄外,還在另外兩臺其中之一存在副本。假設掛掉其中任何一臺機器,另外兩臺機器都能夠湊齊三個分區 ,所以數據不會丟失,可正常提供服務。

② 假設是三臺機器的kafka集羣,創建一個主題two_fb3_fq3,指定副本數3和分區數3,命令:

bin/kafka-topics.sh --create --zookeeper kafka_zk001:2181,kafka_zk002:2181,kafka_zk003:2181 --replication-factor 3 --partitions 3 --topic two_fb3_fq3

查看日誌目錄/tmp/kafka-logs/發現:三臺機器都存在two_fb3_fq3-0、two_fb3_fq3-1和two_fb3_fq3-2。

結論:可正常提供服務,也是比較實用的方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章