Kafka中Replicas復(fù)制備份機(jī)制
kafka將每個partition數(shù)據(jù)復(fù)制到多個server上,任何一個partition有一個leader和多個follower(可以沒有),備份的個數(shù)可以通過broker配置文件來設(shè)定(replication-factor的參數(shù)配置指定).leader處理所有的read-write請求,follower需要和leader保持同步.Follower和consumer一樣,消費(fèi)消息并保存在本地日志中,leader負(fù)責(zé)跟蹤所有的follower狀態(tài),如果follower"落后"太多或者失效,leader將會把它從replicas同步列表中刪除.當(dāng)所有的follower都將一條消息保存成功,此消息才被認(rèn)為是"committed",那么此時consumer才能消費(fèi)它.即使只有一個replicas實(shí)例存活,仍然可以保證消息的正常發(fā)送和接收,只要zookeeper集群存活即可.
?
Kafka中的選舉
當(dāng)leader失效時,需在followers中選取出新的leader,可能此時follower落后于leader,因此需要選擇一個"up-to-date"的follower.選擇follower時需要兼顧一個問題,就是新leader server上所已經(jīng)承載的partition leader的個數(shù),如果一個server上有過多的partition leader,意味著此server將承受著更多的IO壓力.在選舉新leader,需要考慮到"負(fù)載均衡".
常用命令
1、創(chuàng)建topics
./kafka-topics.sh --create --zookeeper chenx02:2181 --replication-factor 1 --partitions 1 --topic test
2、查看隊(duì)列列表
./kafka-topics.sh --list --zookeeper chenx02:2181
3、查看隊(duì)列明細(xì)
./kafka-topics.sh --describe --zookeeper chenx02:2181 --topic test
結(jié)果:
Topic:test??? PartitionCount:1??? ReplicationFactor:1??? Configs:
??? Topic: test??? Partition: 0??? Leader: 2??? Replicas: 2??? Isr: 2
4、修改(test)隊(duì)列參數(shù)
./kafka-topics.sh --zookeeper chenx02:2181 --partition 3 --topic test --alter
結(jié)果:
Topic:test??? PartitionCount:3??? ReplicationFactor:1??? Configs:
??? Topic: test??? Partition: 0??? Leader: 2??? Replicas: 2??? Isr: 2
??? Topic: test??? Partition: 1??? Leader: 1??? Replicas: 1??? Isr: 1
??? Topic: test??? Partition: 2??? Leader: 2??? Replicas: 2??? Isr: 2
5、創(chuàng)建多副本的隊(duì)列
./kafka-topics.sh --create --zookeeper chenx02:2181 --replication-factor 3 --partitions 4 --topic test_kafka?
./kafka-topics.sh --describe --zookeeper chenx02:2181 --topic test_kafka
Topic:test_kafka??? PartitionCount:4??? ReplicationFactor:3??? Configs:
??? Topic: test_kafka??? Partition: 0??? Leader: 1??? Replicas: 1,3,2??? Isr: 1,3,2
??? Topic: test_kafka??? Partition: 1??? Leader: 2??? Replicas: 2,1,3??? Isr: 2,1,3
??? Topic: test_kafka??? Partition: 2??? Leader: 3??? Replicas: 3,2,1??? Isr: 3,2,1
??? Topic: test_kafka??? Partition: 3??? Leader: 1??? Replicas: 1,2,3??? Isr: 1,2,3
說明:
partiton: partion id
leader:當(dāng)前負(fù)責(zé)讀寫的lead broker id
replicas:當(dāng)前partition的所有replication broker? list
isr:relicas的子集,只包含出于活動狀態(tài)的broker
6、刪除kafka的隊(duì)列[注意需要重啟kafka集群]
kafka-run-class.sh kafka.admin.DeleteTopicCommand --topic test_kafka --zookeeper chenx02:2181
7、查看不可用的分區(qū)
kafka-topics.sh --describe --unavailable-partitions --zookeeper chenx02:2181 --topic? test_kafka
8、發(fā)送消息
./kafka-console-producer.sh --broker-list chenx02:9092 --topic test
?
9、消費(fèi)消息
./kafka-console-consumer.sh --zookeeper chenx02:2181 --topic test --from-beginning
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
