通过桥接增加消息服务器的负载和可靠性
·使用MQ桥接,隔离消息的生产和消费服务,增加吞吐量和稳定性.
·在消息生产服务应用主从,解决单点故障,提高可用行,也避免对依赖消息服务器的应用产生影响
·消息服务器使用了基于磁盘的消息交换,减少了对内存的压力,但IO会出现瓶颈,这里物理机器使用了企业级的SSD,解决此问题。
·应用端使用了连接池,降低应用和MQ服务器之间的网络开销。
使用大小 8K 的文本消息测试了一下:
MQ生产速率: 1500条/秒
MQ消费速率: 4000条/秒
在配置20G的情况下,在Consumer端可承载未消费消息数量: 260万条.
Master收到消息会即时的同步到Consumer端,Master异常宕机时会切换到Slave.这个过程对应用是透明的,使用Failover协议可以再次重连。
这个配置目前已经应用在了生产环境,使用了Avtivemq的5.9版本.
大多数时候是稳定的,还是遇到了些问题:
·Master-Consumer之间的假死,和网络、持久订阅会有一些联系,具体原因还在进一步的排查中。
·本身的Bug导致Master服务停止。ref:https://issues.apache.org/jira/browse/AMQ-4923