ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

04第二章:03_集群搭建理论

2022-07-24 18:03:50  阅读:148  来源: 互联网

标签:异步 Slave 04 03 写入 Master 消息 master 第二章


一、集群

二、数据复制与刷盘策略

复制策略

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

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

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

刷盘策略

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

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

1)异步刷盘策略会降低系统的写入延迟,RT 变小,提高了系统的吞吐量

2)消息写入到 Broker 的内存,一般是写入到了 PageCache

3)对于异步刷盘策略,消息会写入到 PageCache 后立即返回成功 ACK。但并不会立即做落盘操作,而是当 PageCache 到达一定量时会自动进行落盘。

三、Broker 集群模式

根据 Broker 集群中各个节点间关系的不同,Broker 集群可以分为以下几类:

单 Master

只有一个 broker(其本质上就不能称为集群)。这种方式也只能是在测试时使用,生产环境下不能使用,因为存在单点问题。

多 Master

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

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

以上优点的前提是,这些 Master 都配置了 RAID 磁盘阵列。如果没有配置,一旦出现某 Master 宕机,则会发生大量消息丢失的情况。

多 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。

最佳实践

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

1)RAID 磁盘阵列的效率要高于 Master-Slave 集群。因为 RAID 是硬件支持的。也正因为如此, 所以 RAID 阵列的搭建成本较高。

2)多 Master+RAID 阵列,与多 Master 多 Slave 集群的区别是什么?

  • 多 Master+RAID 阵列,其仅仅可以保证数据不丢失,即不影响消息写入,但其可能会影响到消息的订阅。但其执行效率要远高于多 Master 多 Slave 集群

  • 多 Master 多 Slave 集群,其不仅可以保证数据不丢失,也不会影响消息写入。其运行效率要低于多 Master+RAID 阵列

标签:异步,Slave,04,03,写入,Master,消息,master,第二章
来源: https://www.cnblogs.com/niujifei/p/16514961.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有