复制策略是broker的master与slave间的数据同步方式,分为同步复制和异步复制
- 同步复制:消息写入master后,master会等slave同步数据成功后才向procedure返回ACK
- 异步复制:消息写入master后,master会直接向procedure返回ACK,无需等待slave同步完成
刷盘策略是broker中的消息落盘方式,即消息发送到broker内存后消息持久化到磁盘的方式,分为同步刷盘和异步刷盘
- 同步刷盘:消息持久化到broker磁盘后才算消息写入成功
- 异步刷盘:消息写到broker内存(PageCache)后就算写入成功,无需等待持久化到磁盘。PageCache达到一定的量后会自动落盘。
只有一个Broker,通常在测试环境使用,可靠性较低
1.2.2 多MasterBroker集群由多个Master组成,不存在Slave。同一个Topic的各个Queue会平均分布在各个Master节点上
- 优点
配置简单,单个Master宕机或重启对应用无影响,在磁盘配置为RAID10的时候,即使宕机,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘可能会丢失少量消息,同步刷盘不会丢),性能最高。如果磁盘不是RAID10,则会丢失大量消息 - 缺点
单台机器宕机期间,这台机器上未消费的消息不可订阅,消息实时性会受影响
Broker集群由多个Master组成,每个Master又配置多个Slave(磁盘配置为RAID10的时候一般一个Slave即可)。Master和Slave关系是主备关系,即Master负责处理消息的读写请求,Slave仅负责消息备份与宕机后的角色切换
该模式的最大特点是master宕机后slave可以自动切换为master,不过由于slave从master同步具有短暂的延迟(毫秒级),所以当master宕机后异步复制可能存在少量消息丢失的问题
和异步复制相比,优点是消息可靠性较高,不存在消息丢失的情况。缺点是单个消息RT略高,整体性能要略低(约10%)
另外,该模式有一个最大的问题,就是master宕机后slave不会自动切换到master
一般采用多Master多Slave-异步复制模式,同时为master配置RAID10磁盘阵列,配置一个slave。既利用了RAID10磁盘阵列的高效,安全,又解决了可能影响订阅的问题



