RabbitMQ-高级篇
消息队列在使用过程中,面临着很多实际问题需要思考:
1.消息可靠性
消息从发送,到消费者接收,会经理多个过程:
其中的每一步都可能导致消息丢失,常见的丢失原因包括:
- 发送时丢失:
- 生产者发送的消息未送达exchange
- 消息到达exchange后未到达queue
- MQ宕机,queue将消息丢失
- consumer接收到消息后未消费就宕机
大约 19 分钟
消息队列在使用过程中,面临着很多实际问题需要思考:
消息从发送,到消费者接收,会经理多个过程:
其中的每一步都可能导致消息丢失,常见的丢失原因包括:
微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。
如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时,其它不依赖于服务I的业务似乎不受影响。
本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则:
分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如: