MyException - 我的异常网
当前位置:我的异常网» 开源软件 » Kafka-学习-02-测试

Kafka-学习-02-测试

www.MyException.Cn  网友分享于:2015-03-17  浏览:0次
Kafka--学习-02-测试

出处:http://blog.csdn.net/yfkiss/article/details/17381351

本文基于Kafka 0.8


在一台机器上构建一个3个节点的kafka集群,并测试producer、consumer在正常情况下的行为,以及在lead broker/follow broker失效情况下的行为

1.下载并解压kafka 0.8.0 release
$ mkdir kafka
$ wget http://apache.dataguru.cn/kafka/0.8.0/kafka_2.8.0-0.8.0.tar.gz
$ tar -zxvf kafka_2.8.0-0.8.0.tar.gz
$ cd kafka_2.8.0-0.8.0
$ ll
total 2560
drwxr-xr-x 6 root root    4096 Dec 17 17:44 ./
drwxr-xr-x 4 root root    4096 Dec 17 18:20 ../
drwxr-xr-x 3 root root    4096 Dec 17 18:16 bin/
drwxr-xr-x 2 root root    4096 Dec 17 17:43 config/
-rw-r--r-- 1 root root 2520145 Nov 27 06:21 kafka_2.8.0-0.8.0.jar
drwxr-xr-x 2 root root    4096 Nov 27 06:21 libs/
-rw-r--r-- 1 root root   12932 Nov 27 06:21 LICENSE
drwxr-xr-x 2 root root    4096 Dec 17 18:00 logs/
-rw------- 1 root root   47165 Dec 17 18:10 nohup.out
-rw-r--r-- 1 root root     162 Nov 27 06:21 NOTICE

2.启动一个单节点的zookeeper
$ nohup bin/zookeeper-server-start.sh config/zookeeper.properties &

3. 准备启动一个3个broker节点的kafka集群,因此做如下配置
$ cp config/server.properties config/server-1.properties 
$ cp config/server.properties config/server-2.properties

并做如下修改:

config/server-1.properties:
    broker.id=1
    port=9093
    log.dir=/tmp/kafka-logs-1
config/server-2.properties:
    broker.id=2
    port=9094
    log.dir=/tmp/kafka-logs-2

说明:
broker.id: broker节点的唯一标识
port: broker节点使用端口号
log.dir: 消息目录位置

4. 启动3个broker节点
$ JMX_PORT=9997 bin/kafka-server-start.sh config/server-1.properties &
$ JMX_PORT=9998 bin/kafka-server-start.sh config/server-2.properties &
$ JMX_PORT=9999 bin/kafka-server-start.sh config/server.properties &


5. 创建topic并查看
$ bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 3 --partition 1 --topic 3test
creation succeeded!

$ bin/kafka-list-topic.sh --zookeeper localhost:2181
topic: 3test    partition: 0    leader: 2       replicas: 2,1,0 isr: 2,1,0
topic: test     partition: 0    leader: 0       replicas: 0     isr: 0
topic: test_topic       partition: 0    leader: 1       replicas: 0,1,2 isr: 1,2,0
说明:
partiton: partion id,由于此处只有一个partition,因此partition id 为0
leader:当前负责读写的lead broker id
relicas:当前partition的所有replication broker  list
isr:relicas的子集,只包含出于活动状态的broker

6.启动consumer & producer,并在producer启动后的console输入一些信息
$ bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic 3test
message1
message3
message2

$ bin/kafka-console-producer.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --topic 3test
message1
message3
message2

producer发送的数据consumer都能正常消费

7. 干掉follow broker
杀掉一个非lead broker(lead broker id为2)
$ pkill -9 -f server-1.properties

查看topic:
$ bin/kafka-list-topic.sh --zookeeper localhost:2181
topic: 3test    partition: 0    leader: 2       replicas: 2,1,0 isr: 2,0
topic: test     partition: 0    leader: 0       replicas: 0     isr: 0
topic: test_topic       partition: 0    leader: 2       replicas: 0,1,2 isr: 2,0

此时,存活的broker只有2,0
测试:produce发送消息,consumer能正常接收到

8. 继续干掉leader broker

干掉leader broker后,连续查看topic状态
$ pkill -9 -f server-2.properties                 
$ bin/kafka-list-topic.sh --zookeeper localhost:2181
topic: 3test    partition: 0    leader: 2       replicas: 2,1,0 isr: 2,0
topic: test     partition: 0    leader: 0       replicas: 0     isr: 0
topic: test_topic       partition: 0    leader: 2       replicas: 0,1,2 isr: 2,0
$ bin/kafka-list-topic.sh --zookeeper localhost:2181
topic: 3test    partition: 0    leader: 2       replicas: 2,1,0 isr: 2,0
topic: test     partition: 0    leader: 0       replicas: 0     isr: 0
topic: test_topic       partition: 0    leader: 2       replicas: 0,1,2 isr: 2,0
$ bin/kafka-list-topic.sh --zookeeper localhost:2181
topic: 3test    partition: 0    leader: 0       replicas: 2,1,0 isr: 0
topic: test     partition: 0    leader: 0       replicas: 0     isr: 0
topic: test_topic       partition: 0    leader: 0       replicas: 0,1,2 isr: 0
$ bin/kafka-list-topic.sh --zookeeper localhost:2181
topic: 3test    partition: 0    leader: 0       replicas: 2,1,0 isr: 0
topic: test     partition: 0    leader: 0       replicas: 0     isr: 0
topic: test_topic       partition: 0    leader: 0       replicas: 0,1,2 isr: 0
杀掉leader broker过了一会,broker 0成为新的leader broker
测试:produce发送消息,consumer能正常接收到

 

文章评论

“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
那些争议最大的编程观点
那些争议最大的编程观点
代码女神横空出世
代码女神横空出世
10个调试和排错的小建议
10个调试和排错的小建议
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
老程序员的下场
老程序员的下场
旅行,写作,编程
旅行,写作,编程
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
一个程序员的时间管理
一个程序员的时间管理
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Java程序员必看电影
Java程序员必看电影
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
鲜为人知的编程真相
鲜为人知的编程真相
中美印日四国程序员比较
中美印日四国程序员比较
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员和编码员之间的区别
程序员和编码员之间的区别
我的丈夫是个程序员
我的丈夫是个程序员
漫画:程序员的工作
漫画:程序员的工作
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
如何成为一名黑客
如何成为一名黑客
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员都该阅读的书
程序员都该阅读的书
每天工作4小时的程序员
每天工作4小时的程序员
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
总结2014中国互联网十大段子
总结2014中国互联网十大段子
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员的鄙视链
程序员的鄙视链
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员必看的十大电影
程序员必看的十大电影
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序员应该关注的一些事儿
程序员应该关注的一些事儿
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有