RabbitMQ

异步发送/数据同步/分布式事务/削峰填谷

消息丢失

   生产者确认机制: 及时重发/记录日志/保存数据库定时重发

   消息持久化:交换机/队列/消息持久化

      默认内存储存消息,开启持久化功能可以确保缓存在MQ消息不丢失

   消费者确认

      处理消息后ack回执,manual手动/auto自动/none关闭

   消费者retry机制,消费者异常本地重试n次,仍然失败将消息投递到异常交换机,人工

重复消费:

    网络抖动/消费者挂了

       唯一标识/幂等(分布式锁/数据库锁)

延迟队列:进入队列的消息被延迟消费 

     超时订单/限时优惠(当天签到)/定时发布(当天推送消息)

    死信交换机+TTL

   死信交换机(dead-letter-exchange=dl.direct属性)

     消费者用basic.reject和basic.nack声明消费失败,且消费的requeue参数=false

     消息过期超时无人消费

     要投递的队列消息堆积满了,最早的消息可能成为死信

 ttl :消息ttl结束仍未消费,死信(队列)

    队列/消息本身 设置了存活时间;短的时间设置为准

  延迟队列插件

消息堆积:

   增加消费者

  消费者内部开启线程池加快处理速度(服务器cpu资源)

  扩大队列容积,提高堆积上限

     惰性队列:x-queue-mode=lazy数据储存在磁盘,消费时才从磁盘中读取到内存,百万条数据储存,性能稳定,受限于磁盘IO,时效性低

高可用机制:

  普通集群:标准 节点共享部分数据:交换机/队列元信息   

  镜像集群:主从,交换机 队列 队列中消息在各节点间同步备份

      创建队列的节点为该队列的主节点,备份到其他节点(镜像节点)

       一个队列的主节点可能是另一个队列的镜像节点

      主宕机后镜像节点代替新的主

  仲裁队列3.8开始 ,主从模式 支持数据强同步raft协议

   

你可能感兴趣的:(rabbitmq,分布式)