文章目录

  • 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表示协议类型,主要有PLAINTEXTSSLSASL_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