Kafka 结构

kafka集群在zk的配置

    /controller            ===>    {"version":1,"brokerid":202,"timestamp":"1490926369148"
    
    /controller_epoch    ===>    1

    /brokers
    /brokers/ids
    /brokers/ids/202    ===>    {"jmx_port":-1,"timestamp":"1490926370304","endpoints":["PLAINTEXT://s202:9092"],"host":"s202","version":3,"port":9092}
    /brokers/ids/203
    /brokers/ids/204    


    /brokers/topics/test/partitions/0/state ===>{"controller_epoch":1,"leader":203,"version":1,"leader_epoch":0,"isr":[203,204,202]}
    /brokers/topics/test/partitions/1/state ===>...
    /brokers/topics/test/partitions/2/state ===>...

    /brokers/seqid        ===> null

    /admin
    /admin/delete_topics/test        ===>标记删除的主题

    /isr_change_notification

    /consumers/xxxx/
    /config

创建主题

kafka-topic.sh --zookeeper s202:2181 --replication_factor 3 --partitions 4 --create --topic test3

	2 x 5  = 10		//10个文件夹

	[s202]
	test2-1			//
	test2-2			//
	test2-3			//副本带分区

	[s203]
	test2-0
	test2-2
	test2-3
	test2-4

	[s204]
	test2-0
	test2-1
	test2-4

重新布局分区和副本,手动再平衡(可能没有用)

kafka-topics.sh --alter --zookeeper s202:2181 --topic test2 --replica-assignment 203:204,203:204,203:204,203:204,203:204

副本
     broker存放消息以消息达到顺序存放。生产和消费都是副本感知的。
     支持到n-1故障。每个分区都有leader,follow.
     leader挂掉时,消息分区写入到本地log或者,向生产者发送消息确认回执之前,生产者向新的leader发送消息。

     新leader的选举是通过isr进行,第一个注册的follower成为leader。

kafka支持副本模式
    [同步复制]
        1.producer联系zk识别leader
        2.向leader发送消息
        3.leadr收到消息写入到本地log
        4.follower从leader pull消息
        5.follower向本地写入log
        6.follower向leader发送ack消息
        7.leader收到所有follower的ack消息
        8.leader向producer回传ack
                        
    [异步副本]
        和同步复制的区别在与leader写入本地log之后,
        直接向client回传ack消息,不需要等待所有follower复制完成。

猜你喜欢

转载自blog.csdn.net/mao502010435/article/details/89473550