文章目录
- kafka的下载
- 解压kafka安装包
- kafka配置修改
- kafka启动
- kafka生产与消费的示例
- 参考文献
写在前面:kafka的使用需要zookeeper环境
kafka的下载
我们直接从官网上下载:
wget http://archive.apache.org/dist/kafka/2.0.0/kafka_2.11-2.0.0.tgz
解压kafka安装包
sudo tar zxvf kafka_2.11-2.0.0.tgz
之后,我们添加配置环境变量,配置kafka的快捷方式:
export KAFKA_HOME=/home/ik/software/kafka/kafka_2.11-2.0.0
export PATH=$PATH:$KAFKA_HOME/bin
# 使配置生效
source /etc/profile
kafka配置修改
之后,我们进入kafka的下载目录:
cd kafka_2.11-2.0.0/
之后我们修改一下kafka的配置,首先进入配置目录:
cd config/
修改kafka服务端的配置:
vim server.properties
我们主要关注一下几个配置参数:
# broker的编号,如果集群中有多个broker,每个编号需要不同
broker.id=0
# broker对外提供的服务入口地址
listeners=PLAINTEXT://localhost:9092
# 存放消息日志文件的地址
log.dirs=/tmp/kafka-logs
# kafka所需要的zookeeper集群地址
zookeeper.connect=localhost:2181/kafka
# kafka的超时时间设置
zookeeper.connection.timeout.ms=6000
以上是单机模式的设置,设置完这几项就可以启动了。如果是集群模式,那么只需要对单机模式的配置文件做出修改,主要是以下几项:
# broker的编号,如果集群中有多个broker,每个编号需要不同
broker.id=xxx
# broker对外提供的服务入口地址
listeners=xxxx
参数解析:
- zookeeper.connect:此参数为必填项,指定了要连接的zookeeper集群的服务地址。如果zookeeper集群中有多个节点,可以用逗号分隔开(localhost:2181、localhost:2182、localhost:2183)。最佳实践是再加一个chroot路径:zookeeper.connect=localhost:2181/kafka
- listeners:这个指明了broker监听客户端连接的地址列表,其配置格式如下:
protocolx://hostnamex:portx
。其中protocol表示协议类型,主要有PLAINTEXT
、SSL
、SASL_SSL
。如果未开启安装认证,则使用PLAINTEXT。hostname表示主机名,port表示服务端口,此参数默认值未null。如果有多个地址,则以逗号分隔开。- broker.id:用来指定kafka集群中broker唯一标识,默认值为-1,如果没有设置,那么会自动生产一个。
- message.max.bytes:指定broker所接受的消息的最大值,默认为1000012B,如果发送的消息大于这个值,会引发异常.
kafka启动
使用以下命令可以启动kafka服务(需要提前进入bin目录):
# &符号表示在后台运行kafka
sudo ./kafka-server-start.sh ../config/server.properties &
kafka生产与消费的示例
我们现在创建一个分区数为4,副本因子为3的主题topic_demo:
# --create:创建主题的动作指令
# --topic:指定主题
# --replication-factor:指定副本因子
# --partitions:指定分区数
sudo ./kafka-topics.sh --zookeeper localhost:2181/kafka --create --topic topic-demo --replication-factor 3 --partitions 4
然后我们先创建一个消费者订阅topic_demo主题:
# --bootstrap-server:连接kafka集群的地址
# --topic:订阅的主题
sudo ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-demo
然后创建一个生产者生产topic_demo主题下的消息:
# --broker-list:kafka集群的地址
# --topic:生产的主题
sudo ./kafka-console-producer.sh --broker-list localhost:9092 --topic topic-demo
之后我们在生产者的shell中输入消息:
> hello,kafka!
在消费者的shell中会得到生产者发送的消息:
> hello,kafka!
参考文献
[1] 朱忠华.《深入理解kafka》.电子工业出版社.2021.3