企业级消息队列-KafKa安装于测试


一、 Kafka简介

1.1 kafka定义

Kafka是由Apache软件基金会开发的一个开源流平台,由Scala和Java编写。

Apache Kafka是一个分布式流平台,一个分布式的流平台会包括3个关键能力点:

1.发布和订阅数据流,类似于消息队列或者是企业级别消息传递系统;

2.以容错的持久化方式来存储数据流;

3.处理数据流;

1.2 KafKa的应用场景

通常我们将kafka用在两类程序中:
1.建立实时的数据管道,以可靠的在系统或应用程序中获取数据;
2.构建实时流应用程序,用来转换或响应数据流;

在这里插入图片描述
由上图可知:
1.Produces: 可以有很多的应用程序,将消息数据放入kafka集群中;
2.Consumer:可以有很多的应用程序,将消息从kafka集群中将数据拉取出来;
3.Connectors:kafka连接器可以将数据库中的数据导入kafka集群中,也可以将kafka中的数据导入到数据库中;
4.Stream Processors: 流处理器可以从kafka中拉取数据,也可以将数据写入到kafka中;

1.3 KafKa产生的背景

1.主要是为了解决 linkedin 中的数据管道问题,之前 linkedin 使用的是 ActiveMQ来进行数据交换,后来ActiveMQ 却还是无法满足 linkedin 对数据传递系统的要求,为了能够解决这个问题,linkedin决定研发自己的消息传递系统。

2.1 搭建KafKa 集群

2.1.1 将kafka安装包上传到虚拟机上,并且解压

cd /export/software/
tar -xvzf kafka_2.12-2.4.1.tgz -C ../server/
cd /export/server/kafka_2.12-2.4.1/

2.1.2 修改server.properties

cd /export/server/kafka_2.12-2.4.1/config
vim server.properties
# 指定broker的id
broker.id=0
# 指定Kafka数据的位置
log.dirs=/export/server/kafka_2.12-2.4.1/data
# 配置zk的三个节点
zookeeper.connect=node1.itcast.cn:2181,node2.itcast.cn:2181,node3.itcast.cn:2181

2.1.3 将安装好的kafka 复制到其他两台机器

cd /export/server
scp -r kafka_2.12-2.4.1/ node2.itcast.cn:$PWD
scp -r kafka_2.12-2.4.1/ node3.itcast.cn:$PWD
修改另外两个节点的broker.id分别为12
---------node2.itcast.cn--------------
cd /export/server/kafka_2.12-2.4.1/config
vim erver.properties
broker.id=1
--------node3.itcast.cn--------------
cd /export/server/kafka_2.12-2.4.1/config
vim server.properties
broker.id=2

2.1.4 配置Kafka配置环境变量

vim /etc/profile
export KAFKA_HOME=/export/server/kafka_2.12-2.4.1
export PATH=:$PATH:${KAFKA_HOME}

分发到各个节点
scp /etc/profile node2.itcast.cn:$PWD
scp /etc/profile node3.itcast.cn:$PWD
每个节点加载环境变量
source /etc/profile

2.1.5 启动服务器

# 启动ZooKeeper
nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
# 启动Kafka
cd /export/server/kafka_2.12-2.4.1
nohup bin/kafka-server-start.sh config/server.properties &
# 测试Kafka集群是否启动成功
bin/kafka-topics.sh --bootstrap-server node1.itcast.cn:9092 --list

2.2 目录结构

bin: kafaka所有的执行脚本都在这里,例如:启动kafka服务器,创建Topic,生产者,消费者进程;

config: kafka所有的配置文件;

libs: 运行kafka所需要的所有jar包;

logs:kafka所有的日志文件,如果kafka出现了一些问题,可以到该目录中查看异常信息;

site-docs: kafka网站帮助文件;

2.3 Kafka 一键启动 / 关闭 脚本

为了方便将来一键启动、关闭kafka,我们可以编写一个脚本进行操作;

1.在节点中创建 /export/onekey 目录:
	cd /export/onekey

2. 准备slave配置文件,用于保存要启动哪几个节点上面的kafka
	node1.itcast.cn
	node2.itcast.cn
	node3.itcast.cn
	
3. 编写start-kafka.sh脚本
	vim start-kafka.sh
	cat /export/onekey/slave | while read line
	do
	{
	 echo $line
	 ssh $line "source /etc/profile;export JMX_PORT=9988;nohup ${KAFKA_HOME}/bin/kafka-server-start.sh ${KAFKA_HOME}/config/server.properties >/dev/nul* 2>&1 & "
	}&
	wait
	done	
	
4.编写stop-kafka脚本
	vim stop-kafka.sh
	cat /export/onekey/slave | while read line
	do
	{
	 echo $line
	 ssh $line "source /etc/profile;jps |grep Kafka |cut -d' ' -f1 |xargs kill -s 9"
	}&
	wait
	done
	
5.给start-kafka.sh 、 stop-kafka配置执行权限
	chmod u+x start-kafka.sh
	chmod u+x stop-kafka.sh
	
6.执行一键启动、一件关闭
	 ./start-kafka.sh
	./stop-kafka.sh
	

3.基础操作

在这里插入图片描述

3.1 创建topic

创建topic(主题) kafka中所有的消息都是保存在主题中,要生产消息到kafka,首先得要有一个确定的主题;

#创建一个test(主题)
bin/kafka-topics.sh --create --bootstrap-server node1.itcast.cn:9092 --topic test
# 查看目前Kafka中的主题
bin/kafka-topics.sh --list --bootstrap-server node1.itcast.cn:9092

3.2 生产消息到kafka

使用kafka的内置测试程序,生产一些消息到kafka的test的主题中。

# 脚本命令:bin/kafka-console-producer.sh(从控制窗口读取消息)
bin/kafka-console-producer.sh --broker-list node1.itcast.cn:9092 --topic test

3.3 从KafKa中消费消息

使用下面的命令来消费 test 主题中的消息。

from-beginning:从头拉取消息
bin/kafka-console-consumer.sh --bootstrap-server node1.itcast.cn:9092 --topic test --from-beginning

4. 基准测试

4.1 含义

基准测试:是一种测量和评估软件性能指标的活动。通过基准测试,我们可以了解到软件、性能的水平;主要测试负载的执行时间、传输速度、吞吐量、资源占用等情况;

4.2 基于一个1个分区和一个副本的基准测试

测试步骤:

启动kafka集群;
创建1个分区1个副本的topic:benchmark;
同时运行生产者、消费者基准测试程序;
观察结果;

4.2.1 创建Topic

		bin/kafka-topics.sh --zookeeper node1.itcast.cn:2181 --create --topic benchmark --partitions 1 --replication-factor 1

4.2.2 生产消息基准测试

在生产环境中,推荐使用生产5000万条消息,这样性能数据才会准确,

bin/kafka-producer-perf-test.sh --topic benchmark --num-records 5000000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 acks=1

bin/kafka-producer-perf-test.sh
topic benchmark 主题名称
num-records 5000000 总共指定生产的数据量(默认500万)
throughput -1 指定吞吐量–限流(-1 为不指定)
-record-size 1000 指定数据的大小
-producer-props bootstrap.servers=node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 acks=1 指定kafka集群的地址 ACK模式

4.2.2 消费消息基准测试

在生产环境中,推荐使用生产5000万条消息,这样性能数据才会准确,

bin/kafka-consumer-perf-test.sh --broker-list node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 --topic benchmark --fetch-size 1048576 --messages 5000000

bin/kafka-consumer-perf-test.sh
broker-list 指定kafka集群的地址
num-records 5000000 总共指定生产的数据量(默认500万)
topic benchmark 指定topic 的名称
fetch-size 1048576 指定每次要拉取数据的大小
messages 5000000 总共要消费的消息条数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值