RocketMQ(六)——集群搭建理论

image.png

1.数据复制与刷盘策略

image.png

复制策略
复制策略是Broker得Master与Slave间得数据同步方式。分为同步复制与异步复制:

  • 同步复制:消息写入master后,master会等待slave同步数据成功后才向producer返回成功
  • 异步复制:消息写入master后,master立即向producer返回成功,无序等待slave同步成功

异步复制策略会降低系统得写入延迟,RT变小,提高系统吞吐量。

刷盘策略
刷盘策略指的是broker中消息的落盘方式,即发送到broker内存后消息持久化到磁盘的方式。分为同步刷盘与异步刷盘。

  • 同步刷盘:当消息持久化到broker的磁盘后才算是消息写入成功。
  • 异步刷盘:当消息写入到内存后即表示消息写入成功,无需等待消息持久化到磁盘。

1)异步刷盘会降低系统的写入延迟,RT变小,提高了系统的吞吐量
2)消息写入到Broker的内存,一般是写入到了PageCache
3)对于异步刷盘策略,消息会写入到PageCache后立即返回成功ACK。但并不会立即做落盘操作,而是当PageCache到达一定量时会自动落盘

2.Broker集群模式

根据Broker集群中各个节点间关系的不同,Broker集群剋分为以下几类:
单Master
只有一个broker。这种方式只能在测试时使用,会存在单点问题

多Master无Slave
broker集群仅由多个master构成,不存在Slave。同一Topic的各个Queue会平均分布在各个master节点上。

  • 优点:配置简单,单个Master宕机或重启对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢失,性能最高
  • 缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会收到影响。

多Master多Slave模式-异步复制
broker集群由多个master构成,每个master右配置了多个slave(在配置了RAID10磁盘阵列的情况下,一个master一般配置一个slave即可)。master与slave的关系使主备关系,即master负责处理消息的读写请求,而slave仅负责消息的备份与master宕机后的角色切换。
该模式的最大特点之一是,当master宕机后slave能够自动切换为master。不过由于slave从master的同步具有短暂的延迟(毫秒级),所以当master宕机后,这种异步复制方式可能会存在少量消息的丢失问题

多Master多Slave模式-同步双写
同步双写,指的是消息写入master成功后,master会等待slave同步数据成功后才向producer返回成功ACK。该模式与异步复制模式相比,优点是消息的安全性更高。但单个消息的RT略高,从而导致性能略低。
该模式最大的一个问题:Master宕机后,Slave不会自动切换到Master。

最佳实践
一般会为Master配置RAID10磁盘阵列,然后再为其配置一个Slave。即利用了RAID10磁盘阵列的高效、安全性,又解决了可能会影响订阅的问题。

你可能感兴趣的:(RocketMQ(六)——集群搭建理论)