之前写了一篇关于RabbitMQ的入门文章,深入了解和使用后,更多的人会关注其在生产上的应用,我结合工作中的项目,总结了关于RabbitMQ在生产上的架构方案,
我画了一个关于RabbitMQ HA(高可用性)的使用架构图:
图中的MQ集群结点分为两类,一类是内存结点(RAM Node),另一类是磁盘结点(Disc Node),内存结点是性能高但没有持久化,磁盘结点则负责数据的持久化功能。
由于集群中每个结点中的数据都相同,所以不结点过多时数据同步会给系统的总体性能带来影响,所以不建议集群中使用过多的结点。
关于内存结点的负载均衡,采用的是HAProxy,相对于LVS和Nginx来说,HAProxy是最合适。
由于RabbitMQ的集群依懒于Erlang的集群功能,本文暂时不做深入分析。