一、下载最新版本的kafka
http://kafka.apache.org/downloads.html
解压:kafka_2.12-2.3.0.tgz
tar zxvf kafka_2.12-2.3.0.tgz
二、在config 下找到 server.properties vi 编辑
1、修改broker.id
注意:三个节点不能重复
2、listeners:该节点ip+端口
3、log.dirs
4、zookeeper.connect:zookeeper集群的节点,逗号隔开
三、分别启动zk集群和kafka集群
这里只写kafka
./bin/kafka-server-start.sh config/server.properties &
创建topic的时候 设置kafka集群节点个数的复制因子 这样在程序中调用写入的时候才会复制到各个节点。
不然默认是随机节点
replication-factor 副本数量
./bin/kafka-topics.sh --create --bootstrap-server xx:9092 --replication-factor 3 --partitions 3 --topic my-topic
查看创建的topic分布的partitions ,leader,isr 等
./bin/kafka-topics.sh --describe --bootstrap-server xxx:9092 --topic my-topic
查看该topic下的内容
./bin/kafka-console-consumer.sh --bootstrap-server xxx:9092 --topic my-topic --from-beginning
四、来点网络上的总结
kafka中,replication策略是基于partition,而不是topic;kafka将每个partition数据复制到多个server上,任何一个partition有一个leader和多个follower(可以没有);备份的个数可以通过broker配置文件来设定。leader处理所有的read-write请求,follower需要和leader保持同步.Follower就像一个"consumer",消费消息并保存在本地日志中;leader负责跟踪所有的follower状态,如果follower"落后"太多或者失效,leader将会把它从replicas同步列表中删除.当所有的follower都将一条消息保存成功,此消息才被认为是"committed",那么此时consumer才能消费它,这种同步策略,就要求follower和leader之间必须具有良好的网络环境.即使只有一个replicas实例存活,仍然可以保证消息的正常发送和接收,只要zookeeper集群存活即可.
选择follower时需要兼顾一个问题,就是新leader server上所已经承载的partition leader的个数,如果一个server上有过多的partition leader,意味着此server将承受着更多的IO压力.在选举新leader,需要考虑到"负载均衡",partition leader较少的broker将会更有可能成为新的leader.