JAVA面试题 --- RabbitMQ篇(三)RabbitMQ集群

1.RabbitMQ 集群有什么用?

两个用途:

  • 高可用:某个服务器出现问题,整个 RabbitMQ 还可以继续使用
  • 高容量:集群可以承载更多的消息量

2.RabbitMQ 节点的类型有哪些?

  • 磁盘节点:消息会存储到磁盘
  • 内存节点:消息都存储在内存中,重启服务器消息会丢失,性能高于磁盘类型。

3.RabbitMQ 集群搭建需要注意哪些问题?

  1. 各个节点之间使用“-link”连接,此属性不可忽略。
  2. 各个节点使用的 erlang cookie 值必须相同,此值相当于“密钥”的功能,用于各节点的认证
  3. 整个集群中必须包含一个磁盘节点。

4.RabbitMQ 每个节点是其他节点的完整拷贝吗?为什么?

不是,原因如下:

  • 存储空间的考虑:如果每个节点都拥有所有队列的完整拷贝,这样新增节点不但美柚新增存储空间,反而增加了更多的冗余数据
  • 性能的考虑:如果每条消息都需要完整拷贝到每一个集群节点,那新增节点并没有提升消息处理能力,最多是保持和单节点相同的性能甚至更糟。

5.RabbitMQ 集群中唯一一个磁盘节点崩溃了会发生什么?

唯一磁盘节点崩溃了,不能进行以下操作

  • 不能创建队列
  • 不能创建交换器
  • 不能创建绑定
  • 不能添加用户
  • 不能修改权限
  • 不能添加和删除集群节点

节点崩溃了,集群可以保持运行,但不能更改任何东西

6.RabbitMQ 对集群节点停止顺序由要求吗?

RabbitMQ 对集群的停止的顺序是有要求的,应该先关闭内存节点,最后在关闭磁盘节点,如果顺序颠倒,可能会造成消息丢失

你可能感兴趣的:(java)