Kafka 架构

Apache Kafka 入门

Mike Metzger

Data Engineering Consultant

Kafka 组件

  • Kafka 服务器
    • 一个或多台计算机构成的集群
    • 存储数据
    • 管理通信
    • 也可与其他系统集成(数据库、日志等)
  • Kafka 客户端
    • 通过 Kafka consumer 读取
    • 通过 Kafka producer 写入
    • 按需处理数据
Apache Kafka 入门

Kafka 服务器

  • 存储(Kafka Broker)
    • 生产者写入的数据按主题存储与组织
    • 主题被分区,即分片存储
    • 消息/事件按事件 ID 写入到某个分区
    • 读取顺序与写入顺序一致

Kafka 存储与分区

1 图片来源 https://kafka.apache.org/intro
Apache Kafka 入门

分区与副本

  • Kafka 具备容错能力
  • 一台离线,其他可提供所需数据
  • 最大可承受故障数 == 副本因子 - 1
  • 最大副本因子 == 服务器数量
  • 通过复制分区实现副本

Kafka 集群、代理和主题.png

Apache Kafka 入门

示例

Kafka 集群、代理和主题.png

  • 含 3 个代理的 Kafka 集群
  • 定义了 3 个主题
  • 2 倍副本 == 可容忍 1 台故障
  • 代理 1 存有主题 1 和主题 2 的副本
  • 代理 2 存有主题 2 和主题 3 的副本
  • 代理 3 存有主题 1 和主题 3 的副本
  • 每个主题在集群中分布于 2 个代理
Apache Kafka 入门

1 个故障示例

Kafka 集群、代理和主题 - 1 个代理故障.png

  • 代理 2 故障
  • 副本因子 2x
    • 2 - 1 == 可承受 1 台故障
  • 每个主题仍至少在集群中有一份副本
Apache Kafka 入门

2 个故障示例

Kafka 集群、代理和主题 - 2 个代理故障.png

  • 2 个代理故障
  • 副本因子 2x
  • 故障数超出支持(1 台)
  • 主题 2 在集群中不可用
    • 主题 1 和 3 仍可用,非完全宕机
Apache Kafka 入门

开始练习吧!

Apache Kafka 入门

Preparing Video For Download...