• rabbitmq的内存节点和磁盘节点


    RabbitMQ集群里有内存节点与磁盘节点之分。

    所谓内存节点,就是将元数据(metadata)都放在内存里,磁盘节点就是放在磁盘上。(内存节点将全部的队列,交换器,绑定关系,用户,权限,和vhost的元数据信息保存在内存中。)

    如果RabbitMQ是单节点运行,默认就是磁盘节点。

    在RabbitMQ集群里,至少有一个磁盘节点,它用来持久保存元数据。
    新的节点加入集群后,会从磁盘节点上拷贝数据。但是,集群里也不必要每个节点都是磁盘节点,这主要是性能问题。例如,压力大的RPC服务,每秒都要创建和销毁数百个队列,如果集群里都是磁盘节点,意味着队列定义在每个节点上,都要写入磁盘才算成功,这样就会非常慢。

    如果集群里只有一个磁盘节点,这个节点挂了,会发生什么?此时消息路由机制仍可正常进行(可以正常投递和消费消息),但是不能做如下事:

    • create queues
    • create exchanges
    • create bindings
    • add users
    • change permissions
    • add or remove cluster nodes

    所以,考虑到高可用性,推荐在集群里保持2个磁盘节点,这样一个挂了,另一个还可正常工作。但上述最后一点,往集群里增加或删除节点,要求2个磁盘节点同时在线。

    创建内存节点

    基于这篇文章来进行:https://www.cnblogs.com/sanduzxcvbnm/p/13912980.html

    绑定集群

    重置myrabbit1节点
    $ docker exec -it myrabbit1 /bin/bash
    $ rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl start_app
    
    加入myrabbit2节点到集群中
    $ docker exec -it myrabbit2 /bin/bash
    $ rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster --ram rabbit@rabbit1 && rabbitmqctl start_app
    
        加入myrabbit3节点到集群中
    
    $ docker exec -it myrabbit3 /bin/bash
    $ rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster --ram rabbit@rabbit1 && rabbitmqctl start_app
    
    主要参数:
    --ram 表示设置为内存节点,忽略此参数默认为磁盘节点
    
  • 相关阅读:
    大话设计模式读书笔记--4.代理模式
    大话设计模式读书笔记--3.装饰模式
    大话设计模式读书笔记--2.策略模式
    大话设计模式读书笔记--1.简单工厂模式
    redis分片
    redis主从同步
    用Jedis连接Redis
    redis的数据类型和指令
    使用可视化工具redisclient连接redis
    《深入浅出通信原理》参考资料
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/15346710.html
Copyright © 2020-2023  润新知