1. Kafka定义

  1. 传统定义:kafka是一个分布式的基于发布/订阅模式的消息队列
  2. 发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息
  3. 最新定义:kafka是一个开源的分布式事件流平台,被多家公司用于高性能、流分析、数据集成和关键任务应用

2. 传统消息队列应用场景

  1. 缓存/消峰
    有助于控制和优化数据流经系统的速度,解决生产者和消费者处理速度不一致的情况
  2. kafka 订阅中心 kafka 发布订阅_kafka 订阅中心


  3. kafka 订阅中心 kafka 发布订阅_kafka 订阅中心_02

  4. 解耦
    允许独立的扩展和修改两边的处理过程,只要确保它们遵守同样的接口约束
  5. 异步通信
    允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候去处理它
  6. kafka 订阅中心 kafka 发布订阅_kafka_03

3. 消息队列的两种模式

  1. 点对点模式
    消费者主动拉取数据,消息收到后清除消息
  2. 发布/订阅模式
    (1)可以有多个topic主题
    (2)消费者消费数据后,不删除数据
    (3)每个消费者相互独立,都可以消费到数据

4. kafka名词说明

  1. producer: 消息生产者
  2. consumer: 消息消费者
  3. consumer group: 消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内的一个消费者消费;但消费者组中的一个消费者可以消费多个分区;消费者组之间互不影响。
  4. Broker: 一台kafka服务器就是一个broker,一个集群由多个broker组成。
  5. topic:可以理解为一个队列,生产者和消费者面向的都是同一个topic
  6. partition(分区): 为实现扩展性,一个非常大的topic可以分布到多个broker(服务器)上,一个topic可以分为多个分区(partition),每个分区是一个有序的队列
  7. replica(副本):一个topic的每个分区都有若干个副本,即一个leader和若干个follower
  8. leader:每个分区多个副本的"主",生产者发送数据和消费者消费数据的对象都是leader
  9. follower:每个分区多个副本的"从",实时从leader中同步数据。保持和leader数据的同步。leader发生故障时,某个follower会成为新的leader