Kafka_基础


Kafka_基础

Kafka的定义

一个分布式、分区的、多副本的、多订阅者,基于 Zookeeper 协调的分布式日志系统。采用发布-订阅模式。

模式

Kafka的优点

  • 解耦。
  • 冗余(副本)。
  • 扩展性。
  • 灵活性&峰值处理能力。
  • 可恢复性。
  • 顺序保证。
  • 缓冲。
  • 异步通信。

Kafka中的术语

  • 整体

整体框架

  • Broker
    Kafka 集群包含一个或多个服务器,服务器节点称为 Broker

Broker 存储 Topic 的数据。如果某 TopicNPartition,集群有 NBroker,那么每个 Broker 存储该 Topic的一个 Partition

如果某 TopicNPartition,集群有(N+M)个 Broker ,那么其中有 NBroker 存储该 Topic 的一个 Partition ,剩下的 MBroker 不存储该 TopicPartition数据。

如果某 TopicNPartition ,集群中 Broker数目少于 N个,那么一个 Broker 存储该 Topic 的一个或多个 Partition。在实际生产环境中,尽量避免这种情况的发生,这种情况容易导致 Kafka集群数据不均衡。

  • Topic

每条发布到 Kafka集群的消息都有一个类别,这个类别被称为 Topic

  • Partition

Topic 中的数据分割为一个或多个 Partition。每个 Topic 至少有一个 Partition。每个 Partition 中的数据使用多个 Segment 文件存储。Partition 中的数据是有序的,不同 Partition间的数据丢失了数据的顺序。如果 Topic 有多个 Partition,消费数据时就不能保证数据的顺序。在需要严格保证消息的消费顺序的场景下,需要将 Partition数目设为1。

  • Producer

生产者即数据的发布者,该角色将消息发布到 KafkaTopic中。Broker 接收到生产者发送的消息后,Broker 将该消息追加到当前用于追加数据的 Segment文件中。生产者发送的消息,存储到一个Partition 中,生产者也可以指定数据存储的 Partition

  • Consumer

消费者可以从 Broker中读取数据。消费者可以消费多个Topic 中的数据。

  • Consumer Group

每个 Consumer 属于一个特定的 Consumer Group(可为每个 Consumer 指定 Group Name,若不指定 Group Name则属于默认的 Group)。

  • Leader

每个 Partition有多个副本,其中有且仅有一个作为 LeaderLeader是当前负责数据的读写的 Partition

  • Follower

Follower跟随 Leader,所有写请求都通过 Leader路由,数据变更会广播给所有 FollowerFollowerLeader 保持数据同步。如果 Leader失效,则从 Follower 中选举出一个新的 Leader。当 FollowerLeader 挂掉、卡住或者同步太慢,Leader会把这个 Follower 从“in sync replicas”(ISR)列表中删除,重新创建一个 Follower


文章作者: L Q
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 L Q !
  目录