消息队列
- 解耦合
耦合的状态表示当你实现某个功能的时候,是直接接入当前接口,而利用消息队列,可以将相应的消息发送到消息队列,这样的话,如果接口出了问题,将不会影响到当前的功能。
- 异步处理
异步处理替代了之前的同步处理,异步处理不需要让流程走完就返回结果,可以将消息发送到消息队列中,然后返回结果,剩下让其他业务处理接口从消息队列中拉取消费处理即可。
- 流量削峰
高流量的时候,使用消息队列作为中间件可以将流量的高峰保存在消息队列中,从而防止了系统的高请求,减轻服务器的请求处理压力。
kafka | rabbitmq | rocketmq | mysql | |
---|---|---|---|---|
优点 | 是一个高吞吐量的消息队列系统,可以处理大量数据。支持实时数据存储和大规模数据处理。具有高度可靠性和可扩展性,可以轻松地扩展到更大的规模。 | 是一个相对简单的消息队列系统,易于使用和部署。支持多种消息协议,例如 AMQP、MQTT 和 STOMP 等。具有高度可靠性和可扩展性,可以轻松地扩展到更大的规模。 | RocketMQ 是一款由阿里巴巴开发的分布式流处理平台和消息队列软件。它支持多种消息协议和存储模式,可以处理大规模的数据事件。RocketMQ 具有高可靠性、高可用性和高性能的特点,可以在多个节点之间进行复制和负载均衡。 | 是一个非常流行的数据库系统,具有强大的查询和存储能力。支持事务处理和 ACID 属性 (原子性、一致性、隔离性和持久性)。可以存储大量数据,并且可以快速检索和更新数据。 |
对比 | 只支持主要的MQ功能,以高吞吐量闻名。并没有类似延迟队列,死信队列相关场景,吞吐量 百万级 | 支持多种消息模式和大规模场景,社区完善,吞吐量上不如kafka跟rocket。吞吐量 万级 | 支持分布式事务,mq的优点它几乎都有,最大的缺点:商业版收费。一些功能不对外提供。社区可能有突然黄掉的风险,吞吐量10万级 | 不适合处理大量并发请求,因为它的事务处理和 ACID 属性可能会限制其性能。 |
kafka基本介绍
基本概念
- Producer:消息生产者,向Kafka中发布消息的角色。