赞
踩
为了解决高可用和负载问题。
节点分为内存节点和磁盘节点,磁盘节点用来做持久化,内存节点做应用访问。
集群的互相通信端口为25672。
普通集群中,只有一个节点会存储一个队列的全部消息,其他节点将只存储该队列的元数据,当有请求发送至其他节点时,其他节点将把消息转发过去,向存储消息的节点继续请求,以此获得消息。
镜像队列中,所有的节点都会存储所有队列的元数据与消息,此做法的优缺点和普通集群刚好相反。
当有多个主机节点需要选择时,需要负载均衡选择连接哪一个节点,但负载均衡只单机运行是不够的,因为一旦这个负载均衡挂掉,就无法对任何节点提供连接,那么只能集群部署负载均衡,但是集群部署的负载均衡也无法决定到底连接哪一个节点,于是又回到了第一个问题,陷入死循环。好在HAProxy为我们提供了一个解决方案。
在如下的结构图中,应用访问一个固定的IP地址,Keepalived的集群将会竞争这个IP,竞争到IP的Keepalived就会和应用连接,同时Keepalived和HAProxy保持心跳连接,HAProxy做负载均衡,可以和任意一个RabbitMQ的内存节点进行连接,注意,HAProxy不一定非要和RabbitMQ节点部署在同一台服务器上,分开部署也是可以的。最后,应用节点与磁盘节点有镜像复制数据,实现持久化。
可以增加一张消息表,以此来对所有的消息进行记录和重发。
FireHose和Tracing GUI功能可以实现消息的全流程追踪,
在通常情况下,一条消息发送一次就够了,但大量的消息发送会导致连接数过多,这时可以考虑批量发送消息,比如将多条消息拼接,然后一次性发送,减少连接数消耗。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。