写点什么

3 分钟带你彻底搞懂 Kafka

  • 2022 年 4 月 30 日
  • 本文字数:1690 字

    阅读完需:约 6 分钟

但是,如果一个组下的消费者数量大于分区数量,就会出现很多的消费者闲置。


如果分区数量大于一个组下的消费者数量,会出现一个消费者负责多个分区的消费,会出现消费性能不均衡的情况。


因此,在实际的应用中,建议消费者组的 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

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
3分钟带你彻底搞懂 Kafka_程序员_爱好编程进阶_InfoQ写作社区