消息中间件分类
(1)(push)推消息模型:消息生产者将消息推送给消息传递服务,消息传递服务又将消息推送消息消费者
(2) (pull) 拉消息模型:消费者请求消息服务接收消息,消息生产间者在从消息中间件拉消息
| 模型 | push | pull |
| 服务端 | 消息存储,处理请求 保存推送机制,保存订阅关系 消费者负载均衡,集中式 |
消息存储 处理请求 分布式
|
| 客户端 | 处理响应和请求 | 处理响应和请求 保存pull状态,如拉取位置的偏移量offset 异常状态情况下的消息暂存和recover |
| 实时性 | 较好,收数据后立即发送到客户端 | 取决于pull的间隔时间 |
| 消费者故障 | 消费者故障下,服务端堆积消息,重复推送耗资源 保存推送轨迹压力很大 |
消费者故障对客户端无影响 |
| 其他 | 对消息推送有更多控制,能实现多样化的推送机制,当消费者数量增多时,推送压力大,性能天花板,消费者处理能力差异,导致堆消息 | 需要客户端实现消息过滤,浪费资源。 需要不同客户之间协调,做负载均衡 |