推拉模式
| 特性 | 推模式(Push) | 拉模式(Pull) |
|---|
| 消息传递方式 | 生产者主动推送消息给消费者 | 消费者主动从消息队列拉取消息 |
| 实时性 | 高 | 较低 |
| 消费者负载控制 | 消费者被动接收,可能导致过载 | 消费者主动控制拉取速度,负载更均衡 |
| 适用场景 | 实时通知、事件驱动 | 批量处理、消费者处理能力有限的场景 |
| 典型消息队列 | RabbitMQ、ActiveMQ | Kafka、RocketMQ |
各种优先队列
| 队列类型 | 特点 | 应用场景 |
|---|
| 优先级队列 | 消息根据优先级被消费,高优先级的消息先被处理。 | 订单处理、任务调度等需要区分消息重要性的场景。 |
| 延迟队列 | 消息在指定的延迟时间后被消费。 | 订单超时取消、定时任务等需要延迟处理的场景。 |
| 死信队列 | 存储无法被正常消费的消息,用于处理异常消息。 | 订单处理失败、消息重试失败等需要人工介入处理的场景。 |
| 重试队列 | 存储需要重试的消息,消费失败的消息会被重新投递。 | 支付失败重试、服务调用失败重试等需要处理临时性错误的场景。 |
银弹
银弹是指一种能够显著提高软件开发效率或解决复杂技术问题的技术或方法。
顺序一致性与强一致性的区别
| 特性 | 顺序一致性(Sequential Consistency) | 强一致性(Strong Consistency) |
|---|
| 全局顺序 | 所有节点的操作看起来像是按照某种全局顺序执行的 | 所有节点的操作看起来像是按照真实时间顺序执行的 |
| 实时性 | 不要求操作的顺序与真实时间一致 | 要求操作的顺序与真实时间一致 |
| 实现难度 | 较容易实现 | 较难实现 |
| 性能 | 性能较高 | 性能较低 |
| 适用场景 | 分布式缓存、消息队列 | 分布式数据库、金融系统 |