EvIsX

荧 · 维思

消息队列 Kafka 是什么?

Apache1 Kafka2 is an open-source distributed event streaming3 platform.

分布式事件流平台 Kafka 目前主要应用场景是:日志收集系统消息系统4,可简单理解为消息队列的一种实现框架。

该视频5简单快速地回答了以下几个问题:

  1. 消息队列是什么
    1. 队列:缓存待处理消息的队列(数据结构)
    2. 进程:抽离成单独进程(解耦)
  2. 消息队列中的 生产者/消费者 (Producer/Consumer)
  3. 高性能:提高消息队列的吞吐量6
    1. 增加生产者和消费者
    2. 解决队列争抢问题
      1. topic
      2. partition
  4. 扩展性:broker 代表具体部署了 partion 的机器
  5. 高可用:解决 broker 当机的数据丢失
    1. 解决某个 broker 当机问题:给 partition 增加副本(replicas,leader/follower)
    2. 解决 broker 集群挂掉的问题:持久化和过期策略(retention policy)
  6. Consumer Group
    1. 每个消费者组维护自己的队列消费情况:方便消费者加入或退出
  7. ZooKeeper
    1. 定期和 broker 通信,获取整个 Kafka 集群的状态
  8. 消息队列 Kafka 起到对流量削峰填谷作用

Kafka 术语

kafka broker

kafka topic

kafka partition

kafka replica

kafka producer/consumer

kafka consumer group

kafka controller

常用 MQ 对比

  • RabbitMQ
  • RocketMQ
  • Kafka

🚧 施工中

References

Footnotes

  1. 历史:Kafka是最初由Linkedin公司开发,Linkedin于2010年贡献给了Apach

  2. Apache Kafka

  3. https://kafka.apache.org/intro#intro_streaming

  4. 消息系统可以包括消息队列、发布/订阅模型、消息代理(Broker)等多种组件和模式

  5. 消息队列Kafka是什么?架构是怎么样的?5分钟快速入门

  6. 高并发性能指标:QPS、TPS、RT、吞吐量