Kafka -- 消息引擎系统
术语
- Apache Kafka是一款开源的消息引擎系统
- 消息队列:给人某种暗示,仿佛Kafka是利用队列实现的
- 消息中间件:过度强调中间件,而不能清晰地表达实际解决的问题
解决的问题
- 系统A发送消息给消息引擎系统,系统B从消息引擎系统中读取A发送的消息
- 消息引擎传输的对象是消息
- 如何传输消息属于消息引擎设计机制的一部分
消息格式
- 成熟解决方案:CSV、XML、JSON
- 序列化框架:Google Protocol Buffer、Facebook Thrift
- Kafka:纯二进制的字节序列
消息引擎模型
- 点对点模型
- 即消息队列模型,系统A发送的消息只能被系统B接收,其他任何系统不能读取A发送的消息
- 发布订阅模型
- 主题(Topic)、发布者(Publisher)、订阅者(Subscriber)
- 多个发布者可以向相同的主题发送消息,多个订阅者可以接收相同主题的消息
- Kafka同时支持上面两种消息引擎模型
JMS
- JMS:Java Message Service
- JMS也支持上面的两种消息引擎模型
- JMS并非传输协议,而是一组API
- JMS非常出名,很多主流的消息引擎系统都支持JMS规范
- ActiveMQ、RabbitMQ、IBM WebSphere MQ、Apache Kafka(并未完全遵照)
优点
- 削峰填谷
- 解耦
参考资料
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.