kafka 所遇到的问题梳理

本文主要梳理了Kafka的基础知识,包括其作为分布式事件流平台的角色,消息队列的好处,以及Kafka的架构。重点讨论了分区机制、数据完整性保障、生产者消息发送流程和自定义分区规则。此外,还提到了Kafka的命令行操作、文件存储机制、数据一致性问题以及acks参数配置。

最近使用kafka总是出错 一些概念性的问题梳理不清楚,朋友也总会问到这一类的问题 顾总结如下 说的可能不对 阅读者挑取有用信息


kafka 
一.基础介绍
    1.kafka是什么
        基于传统的是 :缓冲的消息队列
        1)分布式 : 类似于HDFS分布式
        2)kafka和Channel的区别?
            缓冲量大小,及后面对接组件.Kafka对接计算引擎或者存储等框架; Channel对接
            的是Sink
        最新的:
            分布式事件流平台
            消息队列与栈的对比
    2.消息队列的好处
        1) 同步处理或者异步处理
            两者对比前者线程阻塞  后者不会发生线程堵塞
    3.使用消息队列的好处
        解耦以及消峰
    4.消息队列的两种模式介绍
        1)一对多 类似于报刊发表
        2)一对一 类似于寄信
    5.Kafka基础架构介绍
        kafka底层基于o
        架构组成部分及其作用
            1)生产者 消息发送到topic中 按条发送
            2)消费者者 消费者消费partition中的数据
                其中 决定生产者的速度是由partition的多少决定的 就是并行度
                决定消费者的速度是有消费者组的多少决定的决定 启动三个同组的消费者
            3)broker kafka集群
            4)zookeeper 注册信息 帮助kafka完成分布式
额外记录一下 分区概念分区内有序分区间无序
    6.kafka如何保证数据的完整性:
        副本机制,leader负责同步节点 , follower负责同步leader
        副本无需放在同一节点上,
    7.分区的优势
        利用节点资源,并行度问题
        消费者组之间互相不受影响 会有自己的offset进行断点管理 记录上次读取的数据
    8.主从是副本的概念
二.常用命令 以及 生产(消费)者的命令形参
    bin/kafka-topics.sh --bootstrap-sercer hadoop102:9092 --list
    bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --create --topic ***
    bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic ***
    bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --delete --topic ***
    生产者和消费者的命令行参数(注意 --from-beginning的用途)
    bin/kafka-console-producer.sh --broker-list hadoop102:9092 --topic ***
    bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic ***
    bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic *** --from-beginning

三.1.kafka文件存储机制介绍

    (1) topic partition log segment .log .index
        逻辑存储概念:topic log segment
        物理存储概念:partition .log .index
    (2) log存储的是什么 index存储的是什么
        序列化的数据            数据索引
    (3) 如何确定一条数据
        先找到索引文件,确定索引文件,拿到相应偏移量的位数,前面,后面-1
    (4) 通过 文件名 确定log和index文件归属哪一个segment
    
    (5) 一个segment大小? 1G

    (6)log文件中数据是怎么排列的?
        追加 紧密排列 没有分隔符
    (7)log和index前面的数字文件名是什么意思?
        最小的偏移量
    (8)如何知道有没有数据? index文件大小?
        .log文件大小,            10M
    2.Kafka生产者的消息发送流程
         生产者 条发 or 批发?  条发
         消费者 条消费 or 批消费?   条消费
         Kafka内部 条搬运 or 批搬运?  批搬运
    
    拦截器---序列化器---分区器
    2.kafka生产者的分区规则
        (1) 指明partition的情况下,直接讲知名的值最为partition值;
        (2) 没有指明partition值但有key的情况下,将key的hash值和topic的partition数
            进行取余得到partition值;
        (3) 既没有partition值又没有key值的情况下
            kafka采用 Sticky Partition(黏性分区器),会随机选择一个分区,并尽可能
            一直使用该分区,待该分区的batch已满或者已完成
    3. kafka生产者自定义分区器的介绍
        //定义分区变量
        //获取信息
        //判断value是否包含特值
四.Kafka中ack的参数配置
    1.
    (1)参数配置中ack有三种应答级别,怎么理解这些应答级别,并对应传输的哪些时间点?
    
    (2)为什么ack的参数配置为1,是leader已经将数据落盘了,那么为什么我们还会去说数据丢失?
        新选举的leader没有该份数据,其他follower无法同步完成。
    
    (3)leader挂了之后,当他回来的时候,他还是leader嘛?
        不是
    2.Kafka的ISR队列故障处理
     (1)加入ISR对列中,是看 follower的速率快慢 or 规定时间内完成同步任务 ?
        规定时间内完成同步任务
    
    
    (2)HW、LEO
        HW:
        LEO:
    
    (3)HW的作用,
    
    (3)Kafka对于消费者如何保证数据一致性?
    
    (4)replica.lag.max.messages(延迟条数)(0.10版本已经删除)和replica.lag.time.max.ms(延迟时间)
    3.Kafka实现精准一次性
      公式
        At Least Once + 幂等性 = Exactly Once
    4.push和pull的区别,kafka采用什么模式
        push很难适应kafka broker与消费者之间的速率问题
        pull会有频繁拉去空数据的问题
    5.Kafka的消费者的offset维护
    (1)多少参数,共同确定一个offset?
    
    (2)相关参数
        // 不排除内部offset,不然看不到
     (3) 为什么精准一次性消费,要使用手动提交offset,而不去使用自动提交offset?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值