• kafka


    1. AKF

    x轴:解决高可用单点问题
    y轴:解决业务划分问题
    z轴:解决分片分治问题

    在这里插入图片描述

    在这里插入图片描述

    2. kafka集群搭建

    2.1 下载安装包

    官网地址:kafka
    在这里插入图片描述

    2.2 上传到自己的安装目录

    #解压
     tar -xzf kafka_2.13-3.2.1.tgz
     #改下名字,我嫌名字太长
     mv kafka_2.13-3.2.1 /usr/local/kafka
     #新建/var/kafka_data  用于存放kafka数据
     mkdir -p /var/kafka_data
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.3修改server.properties配置文件

    必要的四个配置,根据实际环境操作

    #保持唯一
    broker.id=0
    listeners=PLAINTEXT://node01:9092
    log.dirs=/var/kafka-data
    zookeeper.connect=node02:2181,node03:2181,node04:2181/kafka
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.4 配置环境变量

    vim /etc/profile
    #配置
    export KAFKA=/usr/local/kafka
    export PATH=$PATH:$KAFKA/bin
    #刷新环境变量
    source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.5 scp 将kafka 分发到其他节点

    #当前所在目录  /usr/local/kafka
    scp -r /usr/local/kakfa  node02:`pwd`
    
    • 1
    • 2

    2.6修改server.properties

    broker.id=1
    listeners=PLAINTEXT://node02:9092
    log.dirs=/var/kafka-data
    zookeeper.connect=node02:2181,node03:2181,node04:2181/kafka
    
    • 1
    • 2
    • 3
    • 4

    2.7 启动kafka

    ###当前所在目录  /usr/local/kafka/config
    kafka-server-start.sh server.properties
    
    • 1
    • 2

    3.kafka 的基本使用

    3.1 查看相关命令的参数

    #敲相关命令 然后回车
    
    • 1

    在这里插入图片描述

    3.2创建topic

    bootstrap-server 表示的是连接到哪个地址,partitions 表示的是创建几个分区,replication-factor表示的是创建几个副本

    kafka-topics.sh --create --topic test --bootstrap-server 192.168.37.129:9092,192.168.37.130:9092,192.168.37.131:9092 --partitions 2 --replication-factor 2  
    
    • 1

    3.3 查看topic相关信息

    kafka-topics.sh --describe --topic test --bootstrap-server 192.168.37.129:9092,192.168.37.130:9092,192.168.37.131:9092
    
    • 1

    3.4简单的生产者消费者

    consumer

    kafka-console-consumer.sh --bootstrap-server 192.168.37.129:9092,192.168.37.130:9092 --topic test --group msb
    
    • 1

    producter

    kafka-console-producer.sh --bootstrap-server 192.168.37.131:9092 --topic test
    
    • 1

    生产者生产消息,消费者这边接收

    在这里插入图片描述
    在这里插入图片描述

    3.5 删除topic

    kafka-topic.sh --bootstrap-server 192.168.37.131:9092 --delete --topic test
    
    • 1

    3.6 修改分区数

    kafka-topics.sh --bootstrap-server 192.168.37.131:9092--alter --topic test --partitions 3
    
    • 1

    4. 文件储存

    Kafka文件存储也是通过本地落盘的方式存储的,主要是通过相应的log与index等文件保存具体的消息文件。

    生产者不断的向log文件追加消息文件,为了防止log文件过大导致定位效率低下,Kafka的log文件以1G为一个分界点,当.log文件大小超过1G的时候,此时会创建一个新的.log文件,同时为了快速定位大文件中消息位置,Kafka采取了分片和索引的机制来加速定位。

    在kafka的存储log的地方,即文件的地方,会存在消费的偏移量以及具体的分区信息,分区信息的话主要包括.index和.log文件组成,

    5. 相关名词解释

    5.1 Kafka 中的 ISR(InSyncRepli)、 OSR(OutSyncRepli)、 AR(AllRepli)代表什么?

    ISR:速率和leader相差低于10s的follower的集合
    OSR:速率和leader相差大于10s的follwer
    AR:所有分区的follower\

    5.2 Kafka 中的 HW、 LEO 等分别代表什么?

    HW:High Water高水位,根据同一分区中最低的LEO决定(Log End Offset)
    LEO:每个分区最大的Offset

    在这里插入图片描述

    6. ack机制

    Kafka为用户提供了三种可靠性级别,用户根据可靠性和延迟的要求进行权衡选择不同的配置。
    ack参数配置

    0: producer不等待broker的ack,这一操作提供了最低的延迟,broker接收到还没有写入磁盘就已经返回,当broker故障时有可能丢失数据

    1: producer等待broker的ack,partition的leader落盘成功后返回ack,如果在follower同步成功之前leader故障,那么将丢失数据。(只是leader落盘)
    在这里插入图片描述

    -1(all): producer等待broker的ack,partition的leader和ISR的follower全部落盘成功才返回ack,但是如果在follower同步完成后,broker发送ack之前,如果leader发生故障,会造成数据重复。(这里的数据重复是因为没有收到,所以继续重发导致的数据重复)

    在这里插入图片描述

    当ack=-1的时候,就会存在一致性问题,
    一致性分为:
    强一致性:所有节点必须全部存活,一致性破坏可用性
    最终一致性,过半通过,最常用的一致性解决方案

  • 相关阅读:
    怎么制作gif动态图,静态图片转成动态图的方法分享!
    react-native 打包报错 android-gradle-plugin-requires-java-11
    “熊猫杯” | 赛宁网安获网络安全优秀创新成果大赛优胜奖
    html实现点击按钮时下方展开一句话
    UI自动化之混合框架
    C# 预处理器指令详解与示例
    C语言学生成绩录入系统
    在面试提问环节应该问那些内容
    拯救 4G 显卡: PyTorch 节省显存的策略总结
    微服务入门:elasticsearch与RestClient(1)
  • 原文地址:https://blog.csdn.net/yaoxie1534/article/details/126608800