RocketMQ的集群模式
错误的集群部署方式
在生产环境中,RocketMQ常被用于集群化部署,但是有一种部署方式却是错误的。即多主无从
如图,有2个主broker。如果2个broker中都已经存储了不同的消息,这时其中一个broker崩了,那么这个broker里面的数据就会丢失,消费者无法从其他的broker中获取所需的数据
正确的集群部署方式
多主多从
这种方式避免了Master损坏导致的数据丢失
多主多从的实现有两种方式
- 异步复制
数据总是先存入到Master,再经过几毫秒的延迟后存入到对应的Slave。这个过程不需要人工干预,性能很高。但这样也存在缺点,Master宕机可能会丢失少量的数据。
- 同步双写
每次写入数据要么主从都写成功,要么都不写入成功。这样的做法大大减少了异常情况下数据的丢失量,但缺点是性能会比异步复制略低