`

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能正常接收到

 

分享到:
评论

相关推荐

    java开发kafka-clients所需要的所有jar包以及源码

    Java开发Kafka客户端是构建基于Apache ...通过以上知识点的学习和实践,你将能够熟练地在Java环境中使用Kafka-clients开发高效可靠的Kafka应用。记得在实际开发中结合源码深入理解,这将使你的编程技能更上一层楼。

    kafka-demo.zip

    总结起来,`kafka-demo.zip`是一个很好的学习资源,它教你如何在SpringBoot项目中利用KafkaTemplate进行消息传递。通过研究这个例子,你可以深入理解SpringBoot与Kafka的集成,以及如何设置和调整Kafka的生产者和...

    kafka-0.8.1.1-src.tgz

    这里我们聚焦于其0.8.1.1版本的源代码,通过深入学习,我们可以了解Kafka的设计原理和实现机制。 一、Kafka 架构概述 Kafka 0.8.1.1 版本主要由四个组件构成:生产者(Producer)、消费者(Consumer)、broker...

    PyPI 官网下载 | strimzi-kafka-cli-0.1.0a3.tar.gz

    在这个案例中,"strimzi-kafka-cli"是一个在PyPI上发布的项目,版本号为0.1.0a3,表明这是一个早期的测试版本。 Strimzi Kafka CLI,全称为Strimzi Kafka命令行接口,是专为Apache Kafka设计的开源工具。它允许用户...

    spring-kafka-demo

    总结,"spring-kafka-demo"项目提供了一个很好的学习平台,帮助开发者快速上手Spring Kafka,理解其核心概念和操作方式。通过实际的编码和测试,可以深入理解Kafka与Spring的集成,从而在实际项目中更加自如地使用...

    kafka-2.5.0-src.zip

    本次提供的"**kafka-2.5.0-src.zip**"是Kafka的2.5.0版本的源码,适用于对Kafka感兴趣的开发者进行深入学习和研究。该源码包可以无缝集成到IDEA或Eclipse等开发环境中,方便代码阅读和调试。 源码分析: 1. **...

    kafka2.4.0+zookeeper+kafka-connect集成环境包

    总的来说,这个集成环境包提供了一个快速启动Kafka、ZooKeeper和Kafka Connect的基础,适合开发者和数据工程师进行测试、学习或搭建生产环境。通过理解这三个组件的工作原理和相互关系,可以更好地利用它们构建高效...

    Node.js-egg.js的kafka插件

    4. **集成测试**:插件可能包含测试用例,帮助开发者验证Kafka消息发送功能的正确性,确保在实际运行中能够稳定工作。 5. **日志记录**:可能集成Egg.js的日志系统,记录发送消息的过程和结果,便于监控和调试。 *...

    kafka-docker-testing:学习卡夫卡

    在本地主机上测试kafka卡夫卡消费者: cd进入文件夹mvn全新安装java -jar。\ target \ kafka-consumer-jar-with-dependencies.jar <topic> <client> <group> java -jar。\ target \ kafka-consumer-jar-with-...

    flume-kafka-storm源程序

    Storm在实时分析、在线机器学习、持续计算等领域有广泛应用。 当Flume、Kafka和Storm集成时,通常的工作流程如下: 1. **数据采集**:Flume作为一个数据收集器,从各种数据源(例如Web服务器、数据库、应用程序...

    springboot 整合消息队列kafka(kafka-with-springboot.rar)

    为了运行和测试这个例子,你可以创建一个控制器来触发生产者发送消息,然后查看消费者的输出: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind....

    maven-kafka

    【描述】"kafka 最简单的消息生产与消费测试"暗示我们将探讨如何通过Maven设置一个简单的Kafka应用,涉及消息的生产和消费。在Kafka中,生产者负责发布消息到主题(topics),而消费者则订阅这些主题并处理发布的...

    kafka-2.6.0-src.tgz

    无论是为了学习分布式系统原理,还是提升现有Kafka应用的性能,这个2.6.0版本的源码都是宝贵的资源。对于使用IDEA或Eclipse的开发者来说,直接导入源码项目,结合文档和调试,将有助于深化对Kafka的理解和应用。

    kafka-2.7.0-src.zip

    总结,Kafka 2.7.0源码包提供了一次深入学习分布式消息系统的宝贵机会。通过对源码的阅读和实践,开发者可以更好地理解Kafka的工作机制,提升系统设计和优化的能力,同时也能为自己的项目提供更稳定、高效的解决方案...

    kafka-2.6.0-src.rar

    通过深入学习和分析,开发者不仅能提升对 Kafka 的理解,还能更好地利用它构建高可用、高性能的数据处理系统。无论你是要优化现有架构还是开发新的数据流应用,这份源代码都是一份宝贵的参考资料。

    flink-kafka-consumer-master.zip_agodss_flink_flinlk_java_pour2gn

    由于压缩包中只有一个名为"flink-kafka-consumer-master"的目录,我们可以推测这个目录下包含了该项目的源代码、配置文件、可能的测试用例或其他相关文档。通常,这样的项目结构会包含以下部分: 1. `src/main/java...

    kafka-study

    描述中的 "kafka的java的demo" 提醒我们,我们将深入学习如何使用Java API来操作Kafka。这通常包括设置环境、编写生产者代码、编写消费者代码,以及理解Kafka的关键概念和特性。 首先,我们需要安装和配置Kafka。这...

    消息队列 Kafka - Springboot 集成 示例代码

    10. **监控与测试**: 学习如何监控Kafka生产和消费的性能,以及如何编写测试用例验证Kafka的正确集成。 通过以上步骤,我们可以成功地在Spring Boot应用中集成Kafka,实现消息的发布和订阅功能。结合博主提供的示例...

    kafka_2.12-1.1.0.tgz

    《Kafka 2.12-1.1.0在Windows上的安装与使用详解》 Apache Kafka是一款分布式流处理平台,被广泛应用于...Kafka的强大功能和灵活性使其在大数据领域有着广泛的应用,通过深入学习和实践,你可以充分利用它的潜力。

Global site tag (gtag.js) - Google Analytics