3 分钟带你彻底搞懂 Kafka
但是,如果一个组下的消费者数量大于分区数量,就会出现很多的消费者闲置。
如果分区数量大于一个组下的消费者数量,会出现一个消费者负责多个分区的消费,会出现消费性能不均衡的情况。
因此,在实际的应用中,建议消费者组的 consumer 的数量与 partition 的数量保持一致!
三、kafka 安装
==========
光说理论可没用,下面我们就以 centos7 为例,介绍一下 kafka 的安装和使用。
kafka 需要 zookeeper 来保存服务实例的元信息,因此在安装 kafka 之前,我们需要先安装 zookeeper。
3.1、安装 zookeeper
===============
zookeeper 安装环境依赖于 jdk,因此我们需要事先安装 jdk
#?安装 jdk1.8
yum?-y?install?java-1.8.0-openjdk
下载 zookeeper,并解压文件包
#在线下载 zookeeper
wget?http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
#解压
tar?-zxvf?zookeeper-3.4.12.tar.gz
创建数据、日志目录
#创建数据和日志存放目录
cd?/usr/zookeeper/
mkdir?data
mkdir?log
#把 conf 下的 zoo_sample.cfg 备份一份,然后重命名为 zoo.cfg
cd?conf/
cp?zoo_sample.cfg?zoo.cfg
配置 zookeeper
#编辑 zoo.cfg 文件
vim?zoo.cfg
重新配置 dataDir 和 dataLogDir 的存储路径
最后,启动 Zookeeper 服务
#进入 Zookeeper 的 bin 目录
cd?zookeeper/zookeeper-3.4.12/bin
#启动 Zookeeper
./zkServer.sh?start
#查询 Zookeeper 状态
./zkServer.sh?status
#关闭 Zookeeper 状态
./zkServer.sh?stop
3.2、安装 kafka
===========
到官网http://kafka.apache.org/downloads.html下载想要的版本,我这里下载是最新稳定版 2.8.0。
#下载 kafka?安装包
wget?https://apache.osuosl.org/kafka/2.8.0/kafka-2.8.0-src.tgz
#解压文件包
tar?-xvf?kafka-2.8.0-src.tgz
按需修改配置文件 server.properties(可选)
#进入配置文件夹
cd??kafka-2.8.0-src/config
#编辑 server.properties
vim?server.properties
server.properties 文件内容如下:
broker.id=0
listeners=PLAINTEXT://localhost:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
其中有四个重要的参数:
broker.id:唯一标识 ID
listeners=PLAINTEXT://localhost:9092:kafka 服务监听地址和端口
log.dirs:日志存储目录
zookeeper.connect:指定 zookeeper 服务地址
可根据自己需求修改对应的配置!
3.3、启动 kafka 服务
===============
#?进入 bin 脚本目录
cd??kafka-2.8.0-src/bin
启动 kafka 服务
nohup?kafka-server-start.sh?../config/server.properties?server.log?2>?server.err?&
3.4、创建主题 topics
==============
创建一个名为 testTopic 的主题,它只包含一个分区,只有一个副本:
#?进入 bin 脚本目录
cd??kafka-2.8.0-src/bin
#创建 topics
kafka-topics.sh?--create?--zookeeper?localhost:2181?--replication-factor?1?--partitions?1?--topic?testTopic
运行 list topic 命令,可以看到该主题。
#?进入 bin 脚本目录
cd??kafka-2.8.0-src/bin
#查询当前 kafka 上所有的主题
kafka-topics.sh?--list?--zookeeper?localhost:2181
输出内容:
testTopic
3.5、发送消息
========
Kafka 附带一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送到 Kafka 集群。默认情况下,每行将作为单独的消息发送。
运行生产者,然后在控制台中键入一些消息以发送到服务器。
#?进入 bin 脚本目录
cd??kafka-2.8.0-src/bin
#运行一个生产者,向 testTopic 主题中发消息
kafka-console-producer.sh?--broker-list?localhost:9092?--topic?testTopic
评论