Larry Yang

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

kafka架构

 

 

 

Kafka基本概念
Broker

  • Kaka集群中的一台或多台服务器称为Broker。Broker存储Topic的数据。
  • 如果某topic有N个partition,集群有N个broker,那么每个broker存储该topic的一个partition。
  • 如果某topic有N个partition,集群有(N+M)个broker,那么其中有N个broker存储该topic的一个partition,剩下的M个broker不存储该topic的partition数据。
  • 如果某topic有N个partition,集群中broker数目少于N个,那么一个broker存储该topic的一个或多个partition。在实际生产环境中,尽量避免这种情况的发生,这种情况容易导致Kafka集群数据不均衡。

Topic

  • 发布到Kafka的每条消息都有一个类别,是个逻辑概念。
  • 物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上,但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处

Partition

  • 物理上的Topic分区,一个Topic可以分为多个Partition,至少有一个Partition。
  • 每个Partition中的数据使用多个segment文件存储,每个Partition都是一个有序的队列,不同Partition间的数据是无序的。
  • Partition中的每条消息都会被分配一个有序的ID(即offset)。

Producer

  • 消息和数据的生产者。Producer将消息发布到Kafka的topic中。
  • Broker接收到Producer发布的消息后,Broker将该消息追加到当前用于追加数据的segment文件中。
  • Producer发送的消息,存储到一个Partition中,Producer也可以指定数据存储的Partition。

Consumer

  • 消息和数据的消费者。Consumer从Broker中读取数据。
  • Consumer可以消费多个topic中的数据。

Consumer Group

  • 每个消费者都属于一个特定的消费者组。
  • 可为每个Consumer指定group name,若不指定group name则属于默认的group。
  • 一个Topic可以有多个消费者组,Topic的消息会被复制到所有的消费者组中,但每个消费者组只会把消息发送给该组中的一个消费者。
  • 消费者组是Kafka用来实现一个Topic消息的广播和单播的手段。

Leader

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

Follower

    • Follower跟随Leader,所有写请求都通过Leader路由,数据变更会广播给所有Follower,Follower与Leader保持数据同步。
    • 如果Leader失效,则从Follower中选举出一个新的Leader。
    • 如果Follower与Leader挂掉、卡住或同步太慢,Leader会把这个Follower从"in sync replicas"## 高吞吐量的分布式消息组件Kafka是如何工作的

 

posted on 2021-01-06 19:24  Larry Yang  阅读(121)  评论(0)    收藏  举报