美文网首页
kafka学习笔记-kafka基础

kafka学习笔记-kafka基础

作者: 疯狂猪宝宝 | 来源:发表于2020-10-23 18:30 被阅读0次

    参考:极客时间-Kafka核心技术与实战

    kafka术语

    img

    消息(Record):kafka要处理的主要对象。

    主题(Topic):承载消息的逻辑容器,实际使用中多用来区分具体的业务。

    分区(Partition):一个有序不变的消息序列,每个主题下有多个分区。

    消息位移(Offset):分区中每条消息的位置信息,是一个单调递增且不变的值。

    副本(Replica):分为领导者副本和追随者副本,每个分区可配置多个副本实现高可用。

    生产者(Producer):向主题发布新消息的应用系统。

    消费者(Consumer):从主题订阅新消息的应用系统。

    消费者位移(Consumer Offset):消费者消费进度。

    消费者组(Consumer Group):多个消费者实例共同组成的一个组,同时消费多个分区以提高吞吐量。

    重平衡(Rebalance):消费者组某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。

    kafka线上集群方案

    操作系统:

    1. I/O模型的使用
    2. 数据网络传输的效率
    3. 社区支持度

    磁盘:

    多使用顺序读写,在软件层面实现了高可用和负载均衡,所以用普通磁盘即可。

    磁盘容量:

    使用率控制在70%。

    新增消息数、平均消息大小、消息留存时间、备份数、是否开启消息压缩。

    **带宽:****

    使用率控制在70%。

    每分钟消息数、平均消息大小。

    生产者消息分区机制

    作用:

    提供负载均衡的能力。

    策略:

    轮询策略、随机策略、按消息键保序策略、其他策略。

    生产者压缩算法

    生产者压缩,Broker保持,消费者解压。

    何时压缩:

    生产者端和Broker端。

    何时解压:

    消费者端和Broker端。

    Broker端压缩:

    1. Broker端指定了和Producer端不同的压缩算法。
    2. Broker端发生了消息格式转换

    如何保证消息不丢失

    kafka只对“已提交”的消息做有限度的持久化保证。

    已提交:若干个Broker接收并写入了这条消息。

    1. 使用producer.send(msg, callback)
    2. 设置acks=all
    3. 设置retries>0
    4. 设置unclean.leader.election.enable=false
    5. replication.factor>=3
    6. min.insync.replicas>1

    消息交付可靠性保证

    三种承诺方式:最多一次、至少一次、精确一次。

    幂等生产者:保证单分区单会话的精确一次交付。

    事务生产者:保证所有分区所有会话的精确一次交付。

    消费者组

    kafka提供的可扩展且具有容错性的消费者机制。

    特性:

    1. Consumer Group下可以有一个或多个Consumer实例
    2. Group ID标识唯一个Consumer Group
    3. Consumer Group订阅主题的分区和Consumer是多对一的关系

    消费者位移

    位移管理机制:

    将消费者位移作为一条条普通的kafka消息,提交到__consumer_offsets中。

    创建位移主题:

    启动第一个Consumer时。

    删除过期信息:

    使用Compact策略删除位移主题中的过期消息。

    消费者组重平衡

    重平衡时机:

    1. 组成员数量发生变化
    2. 订阅主题数发生变化
    3. 订阅主题的分区数发生变化

    重平衡的弊端:

    1. Consumer停止消费
    2. 重平衡过程慢
    3. 重平衡效率低

    避免不必要的重平衡:

    1. Consumer心跳超时
    2. Consumer消费时间过长

    CommitFailedException异常处理

    出现原因:

    消费者组重平衡期间,要提交位移的分区已经分配给了另一个消费者实例。

    预防方法:

    1. 减少单条消息的处理时间
    2. 增加单位时间处理的消息数
    3. 减少一次性消费的消息数
    4. 增加消费一批消息的最大时长

    相关文章

      网友评论

          本文标题:kafka学习笔记-kafka基础

          本文链接:https://www.haomeiwen.com/subject/tvxbmktx.html