Life with teacher Lemon.

Kafka 入门

2020.05.14 | 共 928 字,阅读需约 2 分钟.

概述

  • 定义

    • Kafka 是一个分布式流处理框架。
  • 特性

    • 实现消息的发布/订阅
    • 存储流消息
    • 实时流处理
  • 核心 API

    • The Producer API:允许生产者发布消息到一个或者多个 TOPIC
    • The Consumer API:允许消费者消费一个或者多个 TOPIC,并对接收到的消息进行处理
    • The Streams API:允许应用程序作为一个流处理器,消费一个或者多个TOPIC产生的输入流,然后生辰一个新的输出流到一个或者多个TOPIC中去。
    • The Connector API:允许构建并运行可重用的生产者或者消费者,将Kafka topics连接到已存在的用用程序或者数据系统上。例如连接到关系型数据库,捕捉表的变更。
  • 协议

    • TCP
  • TOPIC

    • TOPIC是数据记录的主题,多订阅模式,每个TOPIC有一到多个消费者。
    • 每个TOPIC就会有一个分区日志,每个分区都是有序不可变的记录集,每条记录都会分配一个 ID 来表示顺序,即 offset,用来唯一区分每一条记录。
    • Kafka 集群会保留所有发布的消息记录,可以通过保留期的可配置参数来控制消息保留多久。
    • offset,消费者唯一保存的元数据就是偏移量 offset,消费者读取消息后限行增加偏移量,消费者可以重置偏移量,读取之前的数据进行重新处理
  • 分区

    • 日志的分区分布在Kafa集群上,每个服务器在处理数据和请求时,共享分区。每个分区都有备份,确保容错性。
    • 每个分区都有 1 台服务器作为Leader,0 到 N 台服务器作为FollowersLeader 负责对分区的读写请求,Followers只需同步Leader的数据,当Leader 宕机,其中 1 个Followers会成为新的Leader,每台服务器都会成为某些分区的Leader或者Followers,因此集群的负责可以保持平衡。
  • 生产者

    • 生产者负责将消息记录分配到TOPIC的某个分区中,可以使用循环的方式实现负载均衡,也可以根据某些语义分区函数来完成,例如设置消息记录的Key
  • 消费者

    • 消费者使用一个 消费组 来进行标识区分,消息记录被分配给订阅消费组的其中一个消费者实例,消费者实例可以分布在不同的进程上
    • 如果所有的消费者实例在同一个消费组,消息记录会负载平衡到每一个消费者实例
    • 如果消费者实例分布在不同的消费组,每条消息记录会广播到所有的消费者进程
    • 消费组的消费者新增或者移除,由Kafka协议动态处理
    • 每个消费者实例都是某个分区的唯一消费者
发表评论
今日诗词