定义
Apache Kafka 是一款开源的消息引擎系统。 Kafka 这一类的系统被称为 Messaging System(而仅仅翻译成消息系统不够恰当,仅片面强调了消息主体的作用,而忽视了其消息传递属性)。
两个重要事实:
- 消息引擎传递的对象是消息。
- 如何传输消息属于消息引擎设计机制的一部分。
传输消息的格式
Kafka 使用的是纯二进制序列。
消息传输模型
常见的有两种:
- 点对点模型:也叫消息队列模型,系统 A 发送的消息只能被系统 B 接受,其他任何系统都不能读取 A 发送的消息。
- 发布/订阅模型:它有个 Topic 的概念,可以理解成语义相近的消息容器。该模型,发送方称为发布者(Publisher),接收方称为订阅者(Subscriber)。与点对点模型不同的是,这个模型可以存在多个发布者向相同 Topic 发送消息,而订阅者也可能存在多个,它们都能接收到相同 Topic 的消息。
Kafka 同时支持上面两种消息引擎模型。
JMS
Java Message Service ,一组 API 规范,很多主流消息引擎系统都支持 JMS 规范,不如 ActiveMQ, RabbitMQ IBM 的 WebSphere MQ 和 Apache Kafka 。但 Kafka 并未完全遵照 JMS 规范,而是另辟蹊径探索了一条特有的道路。
为什么用
- “削峰填谷”,即缓冲上下游瞬时突发流量,使其更平滑。
- 松耦合,一定程度简化应用的开发,减少系统间不必要的交互。例如:秒杀系统中的应用。