参考地址:https://www.jianshu.com/p/d0e630c8f4ae
下载地址: http://kafka.apache.org/downloads
tar -xzf kafka_2.11-2.3.0.tgz
kafka需要使用Zookeeper,首先需要启动Zookeeper服务,如果没有的话,可以使用kafka自带的脚本启动一个简单的单一节点Zookeeper实例:
bin/zookeeper-server-start.sh config/zookeeper.properties &
如果已经启动了 zookeeper,则直接运行下面的命令:
bin/kafka-server-start.sh config/server.properties &
停止 kafka 服务则运行下面命令:
bin/kafka-server-stop.sh config/server.properties
首先创建一个名为test的topic,只使用单个分区和一个复本
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
bin/kafka-topics.sh --list --zookeeper localhost:2181
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
启动一个消费者,消费者会接收到消息
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
五、 搭建一个多个broker的集群
刚才只是启动了单个broker,现在启动有3个broker组成的集群,这些broker节点也都是在本机上的:
首先为每个节点编写配置文件:
cp config/server.properties config/server_1.properties
cp config/server.properties config/server_2.properties
在拷贝出的新文件中添加以下参数:server_1.properties
broker.id=1 port=9093 log.dir=/tmp/kafka-logs-1
broker.id在集群中唯一的标注一个节点,因为在同一个机器上,所以必须制定不同的端口和日志文件,避免数据被覆盖。
刚才已经启动可Zookeeper和一个节点,现在启动另外两个节点:
bin/kafka-server-start.sh config/server_1.properties &
bin/kafka-server-start.sh config/server_2.properties &
创建一个拥有3个副本的topic:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic zx_test
现在我们搭建了一个集群,怎么知道每个节点的信息呢?运行“"describe topics”命令就可以了:
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic zx_test
下面解释一下这些输出。第一行是对所有分区的一个描述,然后每个分区都会对应一行,因为我们只有一个分区所以下面就只有一行。
leader:负责处理消息的读和写,leader是从所有节点中随机选择的.
replicas:列出了所有的副本节点,不管节点是否在服务中.
isr:是正在服务中的节点.
在我们的例子中,节点1是作为leader运行。
向topic发送消息:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic zx_test
消费这些消息:(三个副本,任意一个端口即可)
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092/9093/9094 --topic zx_test--from-beginning
测试一下容错能力:Broker 1作为leader运行,现在我们kill掉它:
ps -ef|grep server-1.properties
kill -9 xxxx
另外一个节点被选做了leader,node 1 不再出现在 in-sync 副本列表中:
虽然最初负责续写消息的leader down掉了,但之前的消息还是可以消费的。
原文:https://www.cnblogs.com/cq-yangzhou/p/11425047.html