1.RabbitMQ 集群有什么用?
两个用途:
- 高可用:某个服务器出现问题,整个 RabbitMQ 还可以继续使用
- 高容量:集群可以承载更多的消息量
2.RabbitMQ 节点的类型有哪些?
- 磁盘节点:消息会存储到磁盘
- 内存节点:消息都存储在内存中,重启服务器消息会丢失,性能高于磁盘类型。
3.RabbitMQ 集群搭建需要注意哪些问题?
- 各个节点之间使用“-link”连接,此属性不可忽略。
- 各个节点使用的 erlang cookie 值必须相同,此值相当于“密钥”的功能,用于各节点的认证
- 整个集群中必须包含一个磁盘节点。
4.RabbitMQ 每个节点是其他节点的完整拷贝吗?为什么?
不是,原因如下:
- 存储空间的考虑:如果每个节点都拥有所有队列的完整拷贝,这样新增节点不但美柚新增存储空间,反而增加了更多的冗余数据
- 性能的考虑:如果每条消息都需要完整拷贝到每一个集群节点,那新增节点并没有提升消息处理能力,最多是保持和单节点相同的性能甚至更糟。
5.RabbitMQ 集群中唯一一个磁盘节点崩溃了会发生什么?
唯一磁盘节点崩溃了,不能进行以下操作
- 不能创建队列
- 不能创建交换器
- 不能创建绑定
- 不能添加用户
- 不能修改权限
- 不能添加和删除集群节点
节点崩溃了,集群可以保持运行,但不能更改任何东西
6.RabbitMQ 对集群节点停止顺序由要求吗?
RabbitMQ 对集群的停止的顺序是有要求的,应该先关闭内存节点,最后在关闭磁盘节点,如果顺序颠倒,可能会造成消息丢失