Kafka专题-2 Kafka集群搭建与使用

学习Kafka原理需要通过实践与原理相辅相成提高自己的认知能力 ,该篇前半部分为集群搭建,后半部分为实践的Java代码,后续会通过学习Kafka原理来升级Java代码。

Kafka集群搭建

Kafka版本选择

Kafka下载官网

  • Kafka3.0开始弃用Java8
    在这里插入图片描述

  • Kafka2.8.0 使用自我管理的元数据仲裁替代Zookeeper在这里插入图片描述

  • 忽视Java支持,可直接使用最新的;

  • 需要使用去Zookeeper版本则使用2.8.1

  • 需要使用自带Zookeeper版本则使用2.7.2

  • 本文使用的2.7.2进行搭建集群(涉及Zookeeper集群搭建)

自带Zookeeper集群搭建
  • 配置文件修改
    修改 kafkaxxx/config/zookeeper.properties
    增加以下集群配置(集群的ip,端口号按自己实际修改)
dataDir=/kafkaxxx/zookeeper/data

#心跳间隔(ms)
tickTime=2000
#Follower初始化连接Leader的心跳数量,超过了initLimit*tickTime则连接失败
initLimit=10
#Leader超过对应的syncLimit*tickTime时间没有收到follower心跳,则移除该Follower
syncLimit=5
#集群数量(ip:集群通信端口:leader选举端口)
server.0=127.0.0.1:12888:13888
server.1=127.0.0.1:22888:23888
server.2=127.0.0.1:32888:33888

#在其数据目录/kafkaxxx/zookeeper/data下,新建myid文件,写入对应server的id[上述配置的id是 0,1,2, 共三台集群配置]
  • 启动zookeeper
# windows启动
.\zookeeper-server-start.bat ..\..\config\zookeeper.properties
# linux 启动
.\zookeeper-server-start.sh ..\config\zookeeper.properties
Kafka集群搭建
  • 配置server.properties
# 集群的kafka id需要不同;
broker.id=0
# 修改zookeeper地址 (如果需要指定 根目录节点,后面需要加 /根目录)
zookeeper.connect=127.0.0.1:12000,127.0.0.1:12001,127.0.0.1:12002/kafka
#配置 listener
listeners=PLAINTEXT://0.0.0.0:9092
#配置 advertised.listeners
advertised.listeners=PLAINTEXT://192.168.0.106:9092
#设置内部topic副本数量(__consumer_offsets,__transaction_state),最好设置为broker数量
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
  • 关于listeners 与advertised.listeners 配置
    可参考 深入理解listeners配置
  • __consumer_offsets 内置topic的相关参数配置
    __consumer_offsets是kafka内置创建的topic,当kafka的首个消费进行提交offset时由kafka根据broker参数配置创建对应分区数量以及副本数量的__consumer_offsets;
    offsets.topic.replication.factor:__consumer_offsets的副本数量,默认值为1,存在消费者单点故障问题
    offsets.topic.num.partitions: __consumer_offsets分区数量,默认值为50

思考:为什么kafka的 __consumer_offsets topic 默认的副本数量是1??
个人见解:在kafka包的默认配置,是需要考虑用户单机部署的,如果副本数量默认不是1,而是大于1,那么会出现单机部署的kafka无法进行消费,因为 __consumer_offsets topic由于副本数量设置超过broker数量 无法被创建,而导致消费者无法提交 __consumer_offsets。

  • 启动kafka
#windows
bin/windows/kafka-server-start.bat config/server.properties
#linux
./bin/kafka-server-start.sh config/server.properties
单机伪集群

使用2.7.2搭建的windows单机伪集群开箱即用

topic创建
#windows、linux 一样的参数,
kafka-topics.bat --create --zookeeper 127.0.0.1:12000,127.0.0.1:12001,127.0.0.1:12002/kafka --topic kafka-lls --replication-factor 2 --partitions 8
#--topic 指定创建topic名
#--replication-factor 分区的副本数量(副本数量不能超过当前可用broker数量。)
#--partitions topic的分区数量
查看topic分区状态
#查看所有的topic分区状态
kafka-topics.bat --describe --zookeeper 127.0.0.1:12000/kafka
#查看所有的topic列表
kafka-topics.bat --list --zookeeper 127.0.0.1:12000/kafka
#查询指定topic分区状态
kafka-topics.bat --topic kafka-lls --describe -zookeeper 127.0.0.1:12000/kafka

Kafka代码实战

Kafka生产者代码
maven 引入pom依赖(对应版本的kafka-clients)
<dependency>
     <groupId>org.apache.kafka</groupId>
     <artifactId>kafka-clients</artifactId>
     <version>2.7.2</version>
</dependency>
Kafka生产者

kafka发送消息是异步的,返回Future获取结果时是阻塞的,因此代码在获取结果

package com.ieen.kafka.demo.producer;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值