RabbitMq Cluster 和 High Availability


一、RabbitMq Cluster



  • 所有节点两两相连
  • users, virtual hosts, exchanges, bindings,queue metadata会自动镜像到所有Node
  • 连接任意一个Node都能看到集群中的所有Queue
  • 在集群中的所有节点必须是相同的Erlang cookie
  • Queue消息只在一个节点中存储
  • 如果Consumer连接Node2,获取Queue1消息,Node2会从Node1获取消息然后返回给Consumer


二、RabbitMq High Availability


  • 镜像队列包括一个Master和多个Mirrors,如果Master挂掉时,最老的Mirror晋升为Master,还没有从Master复制到Mirrors的消息会丢失
  • Consumer连接到Mirror节点时会让Consumer重定向到Master,Consumer最终只和Master交互,这样保证了消息的先进先出
  • 镜像队列只是提升了高可用性,没有分担负载
  • 新晋升的Master会把没有收到ack的消息重新放入队列,包括旧Master没有收到的ack消息,Master收到ack,但是就是Master广播到Mirrors时丢失ack的消息。所以Consumer可能会收到重复消息。

猜你喜欢

转载自ncs123.iteye.com/blog/2407942