kafka分割槽和副本機制驗證

2021-09-26 15:11:30 字數 1901 閱讀 2953

目前使用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這個目錄。

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

① 假設是三颱機器的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。

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

kafka 副本機制

kafka通過副本機制保證資料的可靠性 一.副本機制的概念如下 1.乙個partition有多個副本replication,一般是3個或5個 2.每個副本位於不通的broker 3.每個副本集合裡有乙個leader副本,其餘的為follower副本,只有leader副本才接受讀寫請求,followe...

分割槽的副本機制

我們已經知道kafka的每個topic都可以分為多個partition,並且多個partition會均勻分布在集群的各個節點下。雖然這種方式能夠有效的對資料進行分片,但是對於每個partition來說,都是單點的,當其中乙個partition不可用的時候,那麼這部分訊息就沒辦法消費。所以kafka為...

分割槽的副本機制

我們已經知道kafka的每個topic都可以分為多個partition,並且多個partition會均勻分布在集群的各個節點下。雖然這種方式能夠有效的對資料進行分片,但是對於每個partition來說,都是單點的,當其中乙個partition不可用的時候,那麼這部分訊息就沒辦法消費。所以kafka為...