kafka-系列-1基本概念

9次阅读

共计 1388 个字符,预计需要花费 4 分钟才能阅读完成。

前言

思考的过程往往比间接失去论断更加重要

kafka 利用场景

  1. 利用监控
  2. 网站用户行为追踪
  3. 流数据
  4. 持久性日志

基本概念

在说基本概念前,先看一下 kafka 的零碎架构

  1. Broker
    一般而言,一台机器就是一个 broker,当然 1 台机器上能够部署多个 broker
  2. Producer
    音讯的生产者
  3. Consumer
    音讯的消费者
  4. Consumer Group
    消费者组,组内能够有多个消费者,共享同一个 groupid。生产组内的消费者,个别状况下为同一个消费者部署多个实例。
  5. Topic
    topic 在 kafka 中是一个逻辑上的概念,用于将 partition 分类。1 个 topic 有多个 partition。生产者将音讯发送到指定的 topic 中,消费者从指定的 topic 进行生产。
  6. partition
    一个可追加的日志存储文件。kafka 的分区能够散布在不同的 broker 上
  7. 多正本机制
    kafka 为 partition 引入了多正本机制,能够通过减少正本数量来晋升容灾能力。同一分区中的不同正本保留雷同的音讯。正本之间个别是 一主多从。如下图,每个分区有 3 个正本

    1. AR
      集群中的正本,统称 AR(Assigned Replication),AR = ISR + OSR
    2. ISR
      与 leader 正本放弃肯定同步的正本,称为 ISR(in-sync-replication)。音讯需先发送到 leader 正本,follower 能力从 leader 正本中拉取音讯
    3. OSR
      与 leader 正本同步滞后过多的正本,称为 OSR(out-sync-replication)。
    4. leader 正本
      leader 正本负责保护 follower 正本的状态,当 ISR 正本中滞后 leader 正本过多,会被移除到 OSR 正本中。当 OSR 正本跟上了 leader 正本,会被挪动到 ISR 正本。只有在 ISR 汇合的正本,才有机会选举 leader
    5. HW、LEO
      HW(Hight Watermark)俗称高水位,标识一个特定的偏移量,消费者只能拉取该偏移量之前的音讯
      LEO(Low End Offset)日志最初偏移量。标识日志文件中待写入音讯的偏移量
    6. 关系图
      图 2: HW、LEO 的关系

      图 3 – 图 4: leader 正本、follower、HW、LEO 关系

      音讯写入之后,LEO 变成 5,follower,会从 leader 中拉取音讯,进行同步

      当 ISR 汇合的正本都写入 3 后,HW 就会变成 4,示意 0-3 的音讯为可生产

      当 ISR 汇合都写入 3、4 之后,HW、LEO 值都变成 5
    7. 总结
      kafka 音讯的写入,是可靠性和可用性的衡量。当 ISR 正本均写入音讯时,不必期待 OSR 正本也写入音讯。这里防止了 OSR 滞后太多,从而导致不可用性,且音讯被写入到多个正本,也保障了音讯的可靠性。
      当 leader 写入完音讯立刻挂掉后,ISR 正本因未能同步到音讯,从而导致音讯失落。

与 RocketMQ 区别

  1. partition 在 RocketMQ 中为 队列。生产模型也简直统一,基于生产组进行生产
  2. RocketMQ 有自带的注册核心,无需 zookeeper。
  3. kafka partition 有多正本机制,RocketMQ 队列没有多正本机制
  4. kafka 多正本机制有丢音讯问题,RocketMQ 则没有
  5. 从设计上来看,RocketMQ 与 kafka 的解决的利用场景不一样。RocketMQ 重视音讯的可靠性,而 kafka 在这一方面比拟弱,kafka 更重视零碎吞吐量。因而 kafka 不适宜要求音讯不能丢的场景。
正文完
 0