Bootstrap

Kafka架构介绍

Kafka基本组成

生产者 —  将消息发送给以Topic命名的消息队列Queue中

消费者 — 订阅以Topic命名的消息队列Queue中的消息

Kafka集群由多个Broker组成,Topic由多个Partition组成,每个Partition里的消息通过Offset来获取。

    1)Broker:一台kafka机器就是一个Broker,一个集群由多个Broker组成,一个Broker可以容纳多个Topic,每个Broker之间地位平等。

    2)Topic:物理上不同Topic的消息分开存储,逻辑上一个Topic虽然保存在一个或多个Broker上,但是用户指定Topic即可生成或消费,而不需要关心数据存放何处;

    3)Partition:为了可扩展性,一个大的Topic会被分为多个Partition,从而分布到多台Broker上。Partition中的每条消息都会被分配一个自增Id(offset),Kafka只保证按一个Partition中的顺序将消息发送给消费者,但不保证单个Topic中的多个Partition间的顺序;

    4)Offset:消息在Topic的Partition中的位置。同一个Partition中的消息随着消息的写入,其对应的Offset也自增

    

    5)Replica:副本。Topic的Partition含有N个Replica,N为副本因子。其中一个Replica为Leader,其他都为Follower,Leader处理Partition的所有读写请求,Follower会定期同步Leader上的数据。

    6)Message:消息,通信的基本单元。每个Producer可以向一个Topic发布一些消息。

    7)Producer:消息生产者

    8)Consumer:消息消费者

    9)Consumer Group:消费者组,每个Consumer属于一个Consumer Group;反过来,每个Consumer Group中可以包含多个Consumer。一个Partition中的消息只会被相同的Consumer Group中的某个Consumer消费,每个Consumer Group消息消费是相互独立的。

    10)Zookeeper:存放kafka集群相关元数据的组件。会保存Topic的状态信息,例如:分区个数,分区组成,分区的分布情况等;保存Broker的状态信息;保存消费者的消费信息。通过这些,kafka可以很好的将消息生产、存储、消费过程结合起来。