关于 Kafka 分布式消息系统的概述(第 1 部分)

主要观点

  • 原本想将文章命名为“设置 Kafka 消息队列集群”,但因 Kafka 不像 RabbitMQ 那样实现消息队列协议,所以决定改为“Kafka 分布式消息系统概述”。
  • Kafka 由 LinkedIn 开发,2011 年开源,2012 年成为 Apache 软件基金会顶级项目,2014 年部分创始人成立 Confluent 公司专门从事 Kafka 相关业务。
  • Kafka 旨在为实时数据处理提供统一、高吞吐量、低延迟的系统平台,具备发布订阅、处理、存储等功能。
  • 消息系统可解决微服务架构中的问题,如减少服务间耦合、方便扩展等,Kafka 引入后可解决之前直接连接模式的诸多问题。
  • Kafka 有生产者/消费者模型和发布者/订阅者模型两种,前者可实现负载均衡,后者广播事件。
  • 流处理应用与批处理应用不同,Kafka 提供 Kafka Streaming 组件处理流数据,处理时间可区分流处理和批处理。
  • Kafka 可在分布式容错集群中安全存储数据,默认存储周期为一周,可方便添加或减少机器及指定数据副本。
  • Kafka 在数据中心项目中可作为缓冲池,实现“平滑升级”,且引入后应用虽不相互依赖但依赖 Kafka,需确定使用模式及注意代码复杂度。

关键信息

  • Kafka 相关公司及时间节点:LinkedIn 开发,2011 年开源,2012 年成为 Apache 项目,2014 年部分创始人成立 Confluent。
  • Kafka 功能:发布订阅、处理、存储。
  • 消息系统解决的问题:减少服务耦合、方便扩展等。
  • 两种消息系统模型特点:生产者/消费者模型可实现负载均衡,发布者/订阅者模型广播事件。
  • 流处理与批处理区别:处理边界及时间不同。
  • Kafka 存储特点:分布式容错集群存储,默认存储周期一周,可方便管理。
  • Kafka 在数据中心的作用:缓冲池、实现“平滑升级”。

重要细节

  • 直接连接模式存在服务耦合度高、接口修改困难、版本管理复杂、性能受限等问题。
  • 消息系统引入后可解决这些问题,如组件间无需关心接口定义等。
  • 在生产者/消费者模型中,无消费者时消息暂存,多消费者时可实现负载均衡。
  • 在发布者/订阅者模型中,无订阅者时事件丢失,多订阅者时事件广播。
  • Kafka 可通过 Kafka Streaming 处理流数据,Spark 用 Spark Streaming 处理流数据,Storm 专门处理流数据。
  • 在数据中心项目中,Kafka 可作为缓冲池应对数据量波动,实现“平滑升级”时无需修改原有应用。
  • 引入 Kafka 后应用虽不相互依赖但依赖 Kafka,需注意使用模式及代码复杂度。
阅读 3
0 条评论