kafka_2.12-2.2.2学习部署


kafka学习方向

学习Kafka可以分为几个主要方向,以帮助您逐步掌握Kafka的使用和管理。以下是一些建议的学习路径:

  1. 基础知识了解
    • 学习Kafka的基本概念,如消息队列、发布/订阅模型、主题、分区、生产者和消费者等。
    • 理解Kafka在分布式系统中的作用,以及它如何处理高吞吐量和高可用性。
  2. Kafka环境搭建
    • 学习如何安装和配置Kafka服务器(broker)。
    • 掌握Kafka的客户端工具和库,如Kafka生产者客户端和消费者客户端。
  3. Kafka操作和使用
    • 学习如何使用Kafka生产者和消费者发送和接收消息。
    • 理解Kafka的配置参数,如副本因子(replication factor)、分区数(partition count)等,并掌握如何根据需求调整这些参数。
  4. Kafka高级特性
    • 学习Kafka的事务特性,以支持分布式事务处理。
    • 理解Kafka的监控和性能调优,包括JVM参数调优、Replication参数调优、Log参数调优等。
    • 掌握Kafka的消费者组(consumer groups)和消息消费的分布式管理。
  5. Kafka Streams编程(一般了解为主)
    • 学习Kafka Streams,这是Kafka的一个流处理库,用于在Kafka中进行实时数据处理和分析。
  6. Kafka集群管理和维护
    • 学习如何设置Kafka集群,包括集群的拓扑结构、broker的选举和集群控制器的作用。
    • 掌握Kafka集群的日常维护和管理,包括备份、恢复和故障转移等。
  7. Kafka与其他系统的集成
    • 了解Kafka如何与其他系统和技术集成,例如与Spring Boot、Spark、Hadoop等系统的集成。
  8. 实践和案例分析
    • 通过实际项目或案例来应用Kafka,解决实际问题,积累经验。
    • 学习Kafka的最佳实践,包括数据一致性、数据安全、消息压缩等。
  9. 持续学习和跟进
    • Kafka是一个不断发展的项目,关注Kafka的官方文档和社区,了解最新的特性和改进。
    • 参与Kafka社区,与其他开发者交流,分享经验。

kafka介绍

  • Kafka最初由LinkedIn公司开发,并在2011年作为Apache软件基金会的一个孵化项目发布。自那时起,Kafka逐渐成为企业级数据流处理和消息队列管理的首选工具之一

Kafka事务机制的具体工作原理

Kafka事务机制是为了在分布式系统中提供原子性、一致性和持久性的保证,以支持在Kafka中进行可靠的数据处理。Kafka的事务主要用于支持分布式消息的发送和接收,确保消息的生产和消费在多个分区和副本之间能够正确地执行。
Kafka事务机制的工作原理如下:

  1. 事务标识符(Transaction IDs)
    • 当生产者或消费者启动一个事务时,Kafka会为其分配一个唯一的事务ID。
  2. 事务日志(Transaction Log)
    • Kafka在每个broker上维护一个事务日志,用于记录事务的状态变化,包括开始、提交、abort(终止)等。
  3. 消息的transactional属性
    • 生产者可以在发送消息时指定消息的transactional属性。如果设置了事务ID,这些消息将被标记为待事务处理。
  4. 预提交(Prepare)
    • 当生产者发送事务消息时,Kafka首先将这些消息写入到日志文件中,但不会立即同步到磁盘。这个过程称为预提交。
  5. 提交(Commit)
    • 如果生产者在预提交后的时间内没有发送abort命令,生产者可以发送一个commit请求,告诉Kafka将事务中的消息正式写入到磁盘并传播到其他副本。
  6. abort(终止)
    • 如果生产者在预提交后的时间内发送了abort命令,Kafka将删除预提交的消息,并通知其他副本。
  7. 消费者的事务
    • 消费者在消费消息时也可以使用事务来处理,例如,在处理消息之前,消费者可以先开始一个事务,处理完成后提交事务,以确保所有消息都被正确处理。
  8. 副本同步和故障恢复
    • 在事务提交后,Kafka会在所有副本上同步消息。如果broker发生故障,Kafka会使用事务日志来恢复未提交的事务,确保数据的一致性。
  9. 事务标识符和消息偏移量(Message Offsets)
    • 事务ID和消息偏移量一起用于在Kafka中定位消息。事务ID用于识别事务,而消息偏移量用于识别事务中的具体消息。
      通过这种方式,Kafka事务机制能够确保在分布式系统中消息的生产和消费是一致的,即使在发生故障或需要回滚操作时也能够保证数据的安全和可靠性。

部署环境介绍

系统环境:CentOS Linux release 7.9.2009 (Core)
CPU/内存: 8核、32G ##最小记得是2核4G就可以安装
单节点-----kafka_2.12-2.2.2
java–1.8.0_333

软件包下载

官网

kafka官网下载

CSDN

elk+kafka组合包

百度网盘

java

链接:https://pan.baidu.com/s/101wOorULbtwryRLPQFW6vA
提取码:6poa

java

三台服务器都需要安装jdk

[root@A ~]# rpm -ivh jdk-8u333-linux-x64.rpm
[root@A ~]# cat >>/etc/profile<<EOF
> JAVA_HOME=/usr/java/jdk1.8.0_333-amd64/
> PATH=$JAVA_HOME/bin:$PATH
> CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
> export JAVA_HOME
> export PATH
> export CLASSPATH
> EOF
[root@A ~]# source /etc/profile
[root@A ~]# java -version
java version "1.8.0_333"
Java(TM) SE Runtime Environment (build 1.8.0_333-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)
[root@A ~]#

kafka

[root@A ~]# tar xf kafka_2.12-2.2.2.tgz -C /data/app/
[root@A ~]# cd /data/app/
[root@A app]# mv kafka_2.12-2.2.2 kafka
[root@A app]# cd kafka/config/
[root@A app]# mv server.properties server.properties-bak
[root@A app]# vim server.properties

server.properties配置文件

# x单节点随意,集群时候broker的全局唯一编号,不能重复
broker.id=1
# 端口
port=9092
# 接收消息的线程数。
num.network.threads=3
# 处理磁盘IO的线程数量
num.io.threads=8
# 发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
# 接受套接字的缓冲区大小
socket.receive.buffer.bytes=102400
# 请求套接字的缓冲区大小
socket.request.max.bytes=104857600
# kafka运行日志存放的路径
log.dirs=/data/app/kafka/logs
# 删除topic需要server.properties中设置delete.topic.enable=true否则只是标记删除
delete.topic.enable=true
# topic在当前broker上的分片个数
num.partitions=1
# 设置恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
# 发现offsets副本数量属性,事务状态副本数量属性,默认都是1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
# 将事务状态最小副本数修改为2,意为最少保证两个节点可用,防止数据丢失,我是设置的1
transaction.state.log.min.isr=1
# segment文件保留的最长时间,默认保留7天(168小时)
log.retention.hours=8
# 日志文件中每个segment的大小,默认为1G
log.segment.bytes=1073741824
# 多长时间去检查一次,segment文件的大小,需要设置一个周期性检查文件大的时间(单位是毫秒)。
log.retention.check.interval.ms=300000
# 本机IP(kafka部署再1.10这台上)
listeners=PLAINTEXT://192.168.1.10:9092
# zookeeper地址
# zookeeper.connect=192.168.1.10:2181  单节点配置
zookeeper.connect=192.168.1.10:2181,192.168.1.20:2181,192.168.1.30:2181
# zookeeper链接超时时间
zookeeper.connection.timeout.ms=6000
# 让coordinator推迟空消费组接收到成员加入请求后本应立即开启的rebalance时间
group.initial.rebalance.delay.ms=0

配置为系统服务

[root@A config]# cat /usr/lib/systemd/system/kafka.service 
[Unit]
Description=kafka.service
After=network.target remote-fs.target zookeeper.service

[Service]
User=root
Type=forking
Environment=JAVA_HOME=/opt/jdk
ExecStart=/usr/bin/bash /data/app/kafka/bin/kafka-server-start.sh -daemon /data/app/kafka/config/server.properties
ExecStop=/usr/bin/bash  /data/app/kafka/bin/kafka-server-stop.sh
ExecReload=$ExecStop;$ExecStart
LimitCORE=infinity
LimitNOFILE=204800
LimitNPROC=204800

[Install]
WantedBy=multi-user.target
[root@A config]#

启动

systemctl daemon-reload          
systemctl enable kafka.service --now
systemctl status kafka.service  

验证

登陆zk验证Kafka
/data/soft/zookeeper-3.4.14/bin/zkCli.sh -server 192.168.1.10:2181
[zk: 10.0.0.3:2181(CONNECTED) 1] ls /brokers
[ids, topics, seqid]
[zk: 10.0.0.3:2181(CONNECTED) 3] ls /brokers/ids
[1]
发现已经检查到了已经安装的三台kafka的broker.id[1]

集群

把kafka根据单集群的步骤,配置文件里边broker.id要进行区分,其它可根据需求进行更改,然后启动直接验证即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XMYX-0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值