Apache Kafka 初识

 2019-09-020 Comments

基本组成:

  1. Broker:一台服务器就是一个Broker,一个集群由多个Broker组成,一个Broker可以有多个Topic,之间没有主从关系。
  2. Topic:每条消息都属于某个主题,称为Topic。物理上不同Topic分开存储,逻辑上一个Topic可以保存再一个或多个Topic上,而用户消费无需关心。
  3. Partition:为了实现可扩展性,Topic被分为多个Partition,分到多台Broker上,Partition中每条消息有自增ID(offset)。Kafka保证一个Partition中消息按顺序发送,不保证多个Partition之间的顺序。
  4. Offset:消息再Topic的Partition中的位置,随着消息的写入同一个Partition中的offset自增。
  5. Replica:副本。Topic的Partition包含N个Replica,N为副本因子。一个为Leader,其他为Follower,Leader处理Partition所有的读写请求,同时Follow定期同步Leader上的数据。
  6. Message:消息,是通信的基本单位每个Producer可以向一个 Topic(主题)发布一些消息。
  7. Producer:消息生产者,即将消息发布到指定的 Topic 中,同时Producer也能决定此消息所属的Partition:比如基于Round-Robin(轮询方式或者 Hash(哈希)方式等一些算法。
  8. Consumer :消息消费者,即向指定的 Topic 获取消息,根据指定 Topic 的分区索引及其对应分区上的消息偏移量来获取消息。
  9. Consumer Group :消费者组,每个 Consumer 属于一个 Consumer Group ; 同一个Consumer Group 下采用负载均衡,而消息会广播给不同的Group。
  10. Zookeeper :存放 Kafka 集群相关元数据的组件。在 Zoo keeper 集群中会保存 Topic的状态信息,例如分区的个数、分区的组成、分区的分布情况等;保存 Broker 的状态信息;保存消费者的消费信息等 通过这些信息, Kafka 很好地将消息生产、 消息存储、消息消费的过程结合起来。