RocketMq的数据刷盘策略和复制策略以及RAID介绍

一 RocketMq的数据刷盘策略和复制策略

1.1 数据刷盘

刷盘策略指的是 broker 中消息的 落盘 方式,即消息发送到 broker 内存后消息持久化到磁盘的方式。分为
同步刷盘与异步刷盘:
同步刷盘:当消息持久化到 broker 的磁盘后才算是消息写入成功。
异步刷盘:当消息写入到 broker 的内存后即表示消息写入成功,无需等待消息持久化到磁盘。

1.2 复制策略

复制策略是 Broker Master Slave 间的数据同步方式。
分为同步复制与异步复制:
同步复制:消息写入 master 后, master 会等待 slave 同步数据成功后才向 producer 返回成功 ACK
异步复制:消息写入 master 后, master 立即向 producer 返回成功 ACK ,无需等待 slave 同步数据成
功。

二 Broker的集群模式

2.1 集群模式

Master
只有一个 broker (其本质上就不能称为集群)。这种方式也只能是在测试时使用,生产环境下不能使
用,因为存在单点问题。
Master
broker 集群仅由多个 master 构成,不存在 Slave 。同一 Topic 的各个 Queue 会平均分布在各个 master 节点
上。
优点:配置简单,单个 Master 宕机或重启维护对应用无影响 ,在磁盘配置为RAID10时,即使机器
宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步
刷盘一条不丢),性能最高;
缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅(不可消费),
消息实时性会受到影响。
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 宕机后,这种异步复制方式可能会存在少量消息的丢失问题。
Master Slave 模式 - 同步双写
该模式是 Master Slave 模式 同步复制 实现。所谓 同步双写 ,指的是消息写入 master 成功后,
master 会等待 slave 同步数据成功后才向 producer 返回成功 ACK ,即 master slave 都要写入成功后才会 返回成功ACK ,也即 双写
该模式存在一个大的问题:对于目前的版本, Master宕机后,Slave不会自动切换到Master。

三 RAID矩阵

3.1 RAID矩阵

廉价冗余磁盘阵列 ( Redundant Array of Inexpensive Disks ), RAID 主要利用 镜像、数据条带和数据校验 三种技术来获取高性能、可靠性、容错能力和扩展 性,根据对这三种技术的使用策略和组合架构,可以把 RAID 分为不同的等级,以满足不同数据应用的 需求。
RAID10 是一个 RAID1 RAID0 的组合体,所以它继承了 RAID0 的快速和 RAID1 的安全。
简单来说就是,先做 条带 ,再做 镜像 。发即将进来的数据先分散到不同的磁盘,再将磁盘中的数据做镜像。

你可能感兴趣的:(RocketMq,java-rocketmq,rocketmq,服务器)