多Master多Slave模式-异步复制
broker
集群由多个
master
构成,每个
master
又配置了多个
slave
(在配置了
RAID
磁盘阵列的情况下,一 个master
一般配置一个
slave
即可)。
master
与
slave
的关系是主备关系,即
master
负责处理消息的读写 请求,而slave
仅负责消息的备份与
master
宕机后的角色切换。
异步复制即前面所讲的
复制策略
中的
异步复制策略
,即消息写入
master
成功后,
master
立即向
producer
返回成功
ACK
,无需等待
slave
同步数据成功。
该模式的最大特点之一是,当
master
宕机后
slave
能够
自动切换
为
master
。不过由于
slave
从
master
的同 步具有短暂的延迟(毫秒级),所以当master
宕机后,这种异步复制方式可能会存在少量消息的丢失问题。
Slave
从
Master
同步的延迟越短,其可能丢失的消息就越少
对于
Master
的
RAID
磁盘阵列,若使用的也是异步复制策略,同样也存在延迟问题,同样也可能
会丢失消息。但
RAID
阵列的秘诀是微秒级的(因为是由硬盘支持的),所以其丢失的数据量会
更少。
多
Master
多
Slave
模式
-
同步双写
该模式是
多
Master
多
Slave
模式
的
同步复制
实现。所谓
同步双写
,指的是消息写入
master
成功后,
master
会等待
slave
同步数据成功后才向
producer
返回成功
ACK
,即
master
与
slave
都要写入成功后才会 返回成功ACK
,也即
双写
。
该模式与
异步复制模式
相比,优点是消息的安全性更高,不存在消息丢失的情况。但单个消息的
RT
略 高,从而导致性能要略低(大约低10%
)。
该模式存在一个大的问题:对于目前的版本,
Master
宕机后,
Slave
不会自动切换
到
Master
。