• 消息中间件篇之RabbitMQ-高可用机制


    一、怎么保证高可用性

            在生产环境下,使用集群来保证高可用性,一般我们采用普通集群、镜像集群、仲裁队列。

    二、普通集群

    普通集群,或者叫标准集群(classic cluster),具备下列特征:

            1. 会在集群各个节点间共享部分数据,包括:交换机、队列元信息。不包含队列中的消息。

            2. 当访问集群某节点时,如果队列不在该节点,会从数据所在节点传递到当前节点并返回。

            3. 队列所在节点宕机,队列中的消息就会丢失。(缺点)

    三、镜像集群

    镜像集群:本质是主从模式,具备下面的特征:

            1. 交换机、队列、队列中的消息会在各个mq的镜像节点之间同步备份。

            2. 创建队列的节点被称为该队列的主节点备份到的其它节点叫做该队列的镜像节点

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

            4. 所有操作都是主节点完成,然后同步给镜像节点。

            5. 主宕机后,镜像节点会替代成新的主。(缺点:可能数据丢失)

    四、仲裁队列

    仲裁队列:仲裁队列是3.8版本以后才有的新功能,用来替代镜像队列,具备下列特征:

            1. 与镜像队列一样,都是主从模式,支持主从数据同步。

            2. 使用非常简单,没有复杂的配置。

            3. 主从同步基于Raft协议,强一致。

    五、面试题

    面试官:RabbitMQ的高可用机制有了解过嘛?

    候选人:我们当时项目在生产环境下,使用的集群,当时搭建是镜像模式集群,使用了3台机器。

    镜像队列结构是一主多从,所有操作都是主节点完成,然后同步给镜像节点,如果主节点宕机后,镜像节点会替代成新的主节点,不过在主从同步完成前,主节点就已经宕机,可能出现数据丢失。

    面试官:那出现丢数据怎么解决呢?

    候选人:我们可以采用仲裁队列,与镜像队列一样,都是主从模式,支持主从数据同步,主从同步基于Raft协议,强一致。并且使用起来也非常简单,不需要额外的配置,在声明队列的时候只要指定这个是仲裁队列即可。

  • 相关阅读:
    AI在创造还是毁掉音乐?
    vue项目js原生属性IntersectionObserver实现图片懒加载
    腾讯云服务器标准型S5实例CPU性能如何?配置特性说明
    Vue3 源码阅读(6):响应式系统 —— ref
    Mysql字符集-Mysql进阶(一)
    数据仓库面试总结大全,深度解析底层逻辑
    TNet 中 JoinChannel 场景名可写可不写
    无需更换vue-cli 脚手架 uniapp-搭建项目-H5-低版本安卓IOS兼容问题(白屏)(接口请求异常)
    shell编程初级
    通讯网关软件013——利用CommGate X2ORACLE实现Modbus RTU数据转储ORACLE
  • 原文地址:https://blog.csdn.net/weixin_53094999/article/details/136272436