跳至主要內容
RabbitMQ-高级篇

RabbitMQ-高级篇

消息队列在使用过程中,面临着很多实际问题需要思考:

image-20210718155003157

1.消息可靠性

消息从发送,到消费者接收,会经理多个过程:

image-20210718155059371

其中的每一步都可能导致消息丢失,常见的丢失原因包括:

  • 发送时丢失:
    • 生产者发送的消息未送达exchange
    • 消息到达exchange后未到达queue
  • MQ宕机,queue将消息丢失
  • consumer接收到消息后未消费就宕机

Mr.Jh大约 19 分钟高级微服务RabbitMQ
微服务保护

微服务保护

1.初识Sentinel

1.1.雪崩问题及解决方案

1.1.1.雪崩问题

微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。

1533829099748

如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时,其它不依赖于服务I的业务似乎不受影响。

1533829198240

Mr.Jh大约 30 分钟高级微服务Sentinel
分布式事务

分布式事务

1.分布式事务问题

1.1.本地事务

本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则:

image-20210724165045186

1.2.分布式事务

分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如:

  • 跨数据源的分布式事务
  • 跨服务的分布式事务
  • 综合情况

Mr.Jh大约 20 分钟高级微服务
分布式缓存

分布式缓存

-- 基于Redis集群解决单机Redis存在的问题

单机的Redis存在四大问题:

image-20210725144240631

1.Redis持久化

Redis有两种持久化方案:

  • RDB持久化
  • AOF持久化

1.1.RDB持久化

RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。


Mr.Jh大约 17 分钟高级微服务Sentinel