kafka基础

kafka基础

  • Producer:Producer 即生产者,消息的产生者,是消息的入口。
  • Kafka Cluster: Broker:Broker 是 Kafka 实例,每个服务器上有一个或多个 Kafka 的实例,我们姑且认为每个 Broker 对应一台服务器。 每个 Kafka 集群内的 Broker 都有一个不重复的编号,如图中的 Broker-0、Broker-1 等…… Topic:消息的主题,可以理解为消息的分类,Kafka 的数据就保存在 Topic。在每个 Broker 上都可以创建多个 Topic。 Partition:Topic 的分区,每个 Topic 可以有多个分区,分区的作用是做负载,提高 Kafka 的吞吐量。 同一个 Topic 在不同的分区的数据是不重复的,Partition 的表现形式就是一个一个的文件夹! Replication:每一个分区都有多个副本,副本的作用是做备胎。当主分区(Leader)故障的时候会选择一个备胎(Follower)上位,成为 Leader。 在 Kafka 中默认副本的最大数量是 10 个,且副本的数量不能大于 Broker 的数量,Follower 和 Leader 绝对是在不同的机器,同一机器对同一个分区也只可能存放一个副本(包括自己)。
  • Message:每一条发送的消息主体。
  • Consumer:消费者,即消息的消费方,是消息的出口。
  • Consumer Group:我们可以将多个消费组组成一个消费者组,在 Kafka 的设计中同一个分区的数据只能被消费者组中的某一个消费者消费。 同一个消费者组的消费者可以消费同一个 Topic 的不同分区的数据,这也是为了提高 Kafka 的吞吐量!
  • Zookeeper:Kafka 集群依赖 Zookeeper 来保存集群的的元信息,来保证系统的可用性。

消息队列通信的两种模式

点对点模式

kafka基础

发布订阅模式

kafka基础

kafka使用点对点模式

kafka消费数据后不会删除,kafka使用的mmap,消费后只记录了偏移量offset,这个offset保存在zookeeper的root上,所以你用同一个groupid永远只能得到当前的offset,无法消费之前的数据

kafka的leader和follower存储着同样的数据,leader负责读写,follower只负责预防leader挂掉,防止数据丢失