为什么要使用集群
在生产环境中,经常会有意外的情况发生,对于rocketmq也不例外,单节点情况下,如果出现网络闪断,服务器掉电或宕机之类的,如果服务器不能及时恢复,很可能造成丢消息的情况,因此,集群环境下可以保证服务的高可靠用性。
rocketMq集群模式
RocketMQ的集群部署方式有多种,其中包括单个Master、多个Master、多Master多Slave模式(异步复制)以及多Master多Slave模式(同步双写)。在实际运用中,使用的比较多的是部署主从,即master-slave模式,但在rocketMq的主从模式下,暂时还不支持主从的自动切换,如果需要实现切换需要人工干预,比如写shell脚本,或者宕机之后邮件或短信预警等。
rocketMq的主从模式下,master负责提供读写,根据方式不同,如果配置的是同步,则可以保证消息的高可靠性,即主从节点的消息基本上是实时同步的,异步情况下,在宕机情况下,可能会出现少量的消息丢失,但一旦master宕机,slave节点只能提供消息的读取,不能写入,这个模式下基本上可以满足业务需求;
为什么使用双master模式
另一种比较可靠的集群模式是双master双slave,但是这种模式运维稍微麻烦点,服务器的资源开销会比较大点,个人认为,性能最好,也能够比较好的适应一定的不确定环境下的方式就是双master模式额,在这种模式下,集群中没有slave,集群的中的任何一台机器都可以提供读写服务,根据服务器性能不同可以配置一定的算法进行路由,同时在某一台出现故障了,另一台还能立即提供读写服务不需要人工