【博学谷学习记录】超强总结,用心分享 | Kafka介绍与shell操作

 #博学谷IT技术支持# 

一、介绍

1. 消息队列的作用

  • 同步转异步
  • 应用解耦合
  • 流量削峰
  • 消息驱动系统

2. 消息队列的消费模型

  • 点对点:数据被生产到容器后,最终这个数据只能被一个消费方来消费数据。
  • 发布订阅:数据被生产到容器后,可以被多个消费方同时接收到。

3. Kafka架构

  • cluster:集群
  • broker:Kafka的节点
  • producer:生产者
  • consumer:消费者
  • topic:主题,一个大的逻辑容器
    • shard:分片,一个topic可以被分为多个分片,分片数量与节点数据没有关系
    • replicas:副本,可以对每一个分片构建多个副本,副本数量最多和节点数量一致
  • zookeeper:存储管理集群的元数据信息

4. Kafka启动与停止

需要先启动zookeeper,进入zookeeper安装目录的bin目录下执行./zkServer.sh start,每个节点都要执行。

./zkServer.sh start

./zkServer.sh status
# cd到kafka安装目录下的bin目录
#前台启动
./kafka-server-start.sh ../config/server.properties

#后台启动
nohup ./kafka-server-start.sh ../config/server.properties 2>&1 &
# 每个节点都要执行
# cd到kafka安装目录的bin目录
./kafka-server-stop.sh

5. Kafka的相关使用

5.1 创建topic

./kafka-topics.sh  --create --zookeeper node1:2181,node2:2181,node3:2181 --topic test01 --partitions 3 --replication-factor 2

5.2 查看有哪些topic

./kafka-topics.sh  --list  --zookeeper node1:2181,node2:2181,node3:2181

5.3 查看某一个topic的详细信息

./kafka-topics.sh --describe --zookeeper  node1:2181,node2:2181,node3:2181 --topic test01

5.4 删除topic

./kafka-topics.sh --delete --zookeeper node1:2181,node2:2181,node3:2181 --topic test01

注意:该命令只是标记删除,如果需要真正删除需要在server.properties配置中修改配置delete.topic.enable=true

5.5 修改topic

./kafka-topics.sh  --alter --zookeeper node1:2181,node2:2181,node3:2181 --topic test01  --partitions 5

5.6 模拟生产者发送数据

./kafka-console-producer.sh  --broker-list node1:9092,node2:9092,node3:9092 --topic test01

5.7 模拟消费者消费数据

./kafka-console-consumer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --topic test01

5.8 基准测试

5.8.1 测试写入数据的效率:

./kafka-topics.sh  --create --zookeeper node1:2181,node2:2181,node3:2181 --topic test02 --partitions 6 --replication-factor 1

./kafka-producer-perf-test.sh --topic test02 --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

属性说明:

  • num-records:发送的总消息量
  • --throughput:指定吞吐量(限流),-1表示不限制
  • --record-size:每条数据的大小(字节)
  • --producer-props bootstrap.servers=node1.itcast.cn:9092,node2.itcast.cn:9092,node3.itcast.cn:9092 acks=1:设置kafka的地址和消息发送模式

5.8.2 测试读取消息的效率

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

属性说明:

  • --fetch-size : 每次从Kafka端拉取数据量
  • --message: 测试的总消息量

总结:topic分片数量越多读写效率越高,topic副本数量越多整体执行效率越低。一般将分片数量设置为副本数量的三倍左右。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值