集群搭建理论

目录

数据复制与刷盘策略

复制策略

刷盘策略

RAID磁盘阵列(扩展)

RAID等级

关键技术

镜像技术

数据条带技术

数据校验技术

RAID分类

软RAID

硬RAID

混合RAID

常见的RAID等级

标准RAID等级

JBOD

RAID0

RAID1

RAID10

 RAID01

Broker集群关系

单Master

多Master

多Master多Slave模式-异步复制

多Master和多Slave模式-同步复制

最佳实践


数据复制与刷盘策略


复制策略

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

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

刷盘策略

刷盘策略指的是broker中消息的落盘方式,即消息发送到Broker内存后消息持久化到磁盘的方式。

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

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

RAID磁盘阵列(扩展)

RAID磁盘阵列:廉价冗余磁盘阵列

由于当时大容量磁盘比较昂贵,RAID的基本思想就是将多个容量较小、相对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵大容量磁盘相当的容量、性能、可靠性。由于磁盘价格和成本的不断降低,‘廉价‘已经毫无意义。因此后来决定用’独立‘代替’廉价’,于是RAID变成了独立磁盘冗余阵列。但是内容没有改变。

总结:磁盘阵列(RAID)是一种由多个磁盘组成的存储系统,通过将数据分散存储在多个磁盘上,从而提高了数据的冗余和可用性

RAID等级

RAID这种设计思想很快被业界接纳,RAID技术作为高性能、高可靠的存储技术,得到了非常广泛的应用。

RAID主要利用镜像数据条带数据校验三种技术来获取高性能、可靠性、容错能力和扩展性,根据对这三种技术的使用策略和组合架构,可以把RAID分为不同的等级,以满足不同数据应用的需求。
D.A.Patterson等的论文中定义了RAID0 ~ RAID6原始RAID等级。随后存储厂商又不断推出

  • RAID7
  • RAID10
  • RAID01
  • RAID50
  • RAID53
  • RAID100等RAID等级,但这些并无统一的标准。

目前业界与学术界公认的标准是RAID0 ~ RAID6,而在实际应用领域中使用最多的RAID等级是

  • RAID0
  • RAID1
  • RAID3
  • RAID5
  • RAID6
  • RAID10

RAID每一个等级代表一种实现方法和技术,等级之间并无高低之分。在实际应用中,应当根据用户的数据应用特点,综合考虑可用性、性能和成本来选择合适的RAID等级,以及具体的实现方式。

关键技术

  • 镜像
  • 数据条带
  • 数据校验
镜像技术

镜像技术是一种冗余技术,为磁盘提供数据备份功能,防止磁盘发生故障而造成数据丢失。

对于RAID而言,采用镜像技术最典型地的用法就是,

  1. 同时在磁盘阵列中产生两个完全相同的数据副本,并且分布在两个不同的磁盘上。(镜像提供了完全的数据冗余能力) 
  2. 当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。
  3. 而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。
  4. 镜像技术可以从多个副本进行并发读取数据,提供更高的读1/0性能,但不能并行写数据(并发写存在一个缺点:数据一致性问题),写多个副本通常会导致一定的1/0性能下降。

镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要至少双倍的存储空间。高成本限制了镜像的广泛应用,主要应用于至关重要的数据保护,这种场合下的数据丢失可能会造成非常目大的损失。


数据条带技术

数据条带化技术是一种自动将1/O操作负载均衡到多个物理磁盘上的技术。更具体地说就是,将一块连续的数据分成很多小部分并把它们分别存储到不同磁盘上。这就能使多个进程可以并发访问数据的多个不同部分,从而获得最大程度上的1/0并行能力,极大地提升性能。

数据校验技术

数据校验技术是指,RAID要在写入数据的同时进行校验计算,并将得到的校验数据存储在RAID成员磁盘中

校验数据可以集中保存在某个磁盘或分散存储在多个不同磁盘中。当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据。

数据校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,且必须使用硬件RAID控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。

RAID分类

从实现角度上来看,RAID主要分为

  • 软RAID
  • 硬RAID
  • 以及混合RAID三种。
软RAID

所有功能均由操作系统和CPU完成,没有独立的RAID控制处理新皮纳和I/O处理芯片,效率自然最低

硬RAID

配备了专门的RAID控制处理芯片和I/O处理芯片以及仅列缓冲,不占用CPU资源。效率很高,但成本也很高。

混合RAID

具备RAID控制处理芯片,但没有专门的I/O处理芯片,需要CPU和驱动程序来完成。性能和成本在软RAID和硬RAID之间。

常见的RAID等级

标准RAID等级

SNIA、Berkeley等组织机构把

  • RAID0
  • RAID1
  • RAID2
  • RAID3
  • RAID4
  • RAID5
  • RAID6

七个等级定为标准的RAID等级,这也被业界和学术界所公认。

标准等级是最基本的RAID配置集合,单独或综合利用数据条带、镜像和数据校验技术。标准RAID可以组合,即RAID组合等级,满足对性能、安全性、可靠性要求更高的存储应用需求。       Q

JBOD

JBOD,Just a Bunch of Disks,磁盘簇。表示一个没有控制软件提供协调控制的磁盘集合,这是RAID区别与JBOD的主要因素。JBOD将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘。
JBOD的数据存放机制是由第一块磁盘开始按顺序往后存储,当前磁盘存储空间用完后,再依次往后面的磁盘存储数据。

JBOD存储性能完全等同于单块磁盘,而且也不提供数据安全保护。
JBOD常指磁盘柜,而不论其是否提供RAID功能。不过,JBOD并非官方术语,官方称为Spanning

其只是简单提供一种扩展存储空间的机制,JBOD可用存储容量等于所有磁盘的存储空间之和
RAID0

RAID0是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的RAID,因为它并不提供任何形式的冗余策略。

RAIDO将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。
理论上讲,一个由n块磁盘组成的RAID0,它的读写性能是单个磁盘性能的n倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。由于可以并发执行1/0操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0的性能在所有RAID等级中是最高的。
RAID0具有低成本、高读写性能、100%的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。

RAID0与JBOD形同点

  • 存储容量:都是所有成员磁盘容量的总和
  • 磁盘利用率,都是100%,其都没有做任何的数据冗余备份

RAID0与JBOD不同点:

  • JBOD:数据是吮吸存放的,一个磁盘存满后才会开始存放到下一个磁盘
  • RAID:各个磁盘中的数据写入时并行的,是通过数据条带技术写入的。其读写性能是JBOD的N倍。

应用场景:对数据的顺序读写要求不高,对数据的安全性和可靠性要求不高,但对系统性能要求很高的场景。

RAID1

RAID1就是一种镜像技术,它将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为50%

RAID1在数据写入时,响应时间会有所影响 (需要同步数据),但是读数据的时候没有影响。RAID1提供了最佳的数据保护,一旦工作磁盘发生故障,系统将自动切换到镜像磁盘,不会影响使用。

RAID1是为了增强数据安全性使两块磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。RAID1拥有完全容错的能力,但实现成本高。

应用场景:对顺序读写性能要求较高,或对数据安全性要求较高的场景。

RAID10

RAID10是一个RAID1与RAID0的组合体,所以它继承了RAID0的快速和RAID1的安全。
简单来说就是,先做条带,再做镜像。发即将进来的数据先分散到不同的磁盘,再将磁盘中的数据做镜像。 

 RAID01

RAID01是一个RAID0与RAID1的组合体,所以它继承了RAID0的快速和RAID1的安全。
简单来说就是,先做镜像再做条带,即将进来的数据先做镜像,再将镜像数据写入到与之前数据不同的

RAID10要比RAID01的容错率要高,因此在生产环境中一般是不使用RAID01的

Broker集群关系

单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,无需等待salve同步数据成功
该模式的最大特点之一是,当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的RAID磁盘阵列,一个是针对Broker集群关系,两者结合优缺点最佳实践)

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

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

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

  • 多Master+RAID阵列
    • 可以保证数据不丢失即不影响消息写入
    • 但其可能会影响到消息的订阅。
    • 但其执行效率要远高于多Master多slave集群
  • 多Master多Slave集群
    • 其不仅可以保证数据不丢失
    • 也不会影响消息写入。
    • 其运行效率要低于多Master+RAID阵列
  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值