分布式系统基础---副本与数据分布
上一篇数据分布方式没有考虑副本问题,副本是分布式系统容错、提高可用性的基本手段,数据副本的分布方式主要影响系统的可扩展性。
一、基本的数据副本策略是以机器为单位,若干机器互为副本,副本间的数据完全相同。这种策略适用于上一篇介绍的各种数据分布方式,优点是简单,缺点主要有以下几点:
1、副本恢复效率低。假设3台副本机器,其中一台磁盘损坏丢失数据,此时用新机器代替,需要恢复数据,全盘拷贝数据一般较为消耗资源,一般采用的方式有下面两种但效率都不高。
(1)一台副本机器下线,专门作为数据源拷贝数据:实际正常副本只有一个,数据安全隐患大,而且如果服务由于分 布式协议或压力的要求必须2个副本时,该做法行不通。
(2)以较低的资源使用限速的方法从两个正常副本上拷贝数据,这样不停服务,可以选择服务压力较小的时段进行。 但这种方法速度慢,如果要恢复巨大数据(T),限度较小(10MB/s),需要数天完成
2、不利于提高系统扩展性。极端的例子,假设系统有三台机器,互为副本,在只增加两台机器的情况下,会由于机器无法组成新的副本组而无法扩容。
3、不利于系统容错。当出现一台机器宕机时,该机器上的原有压力只能被剩下的副本机器承担,假设有3个副本,剩下的2台机器压力将增加50%,可能直接超过单台机器的处理能力,理想状态是,若集群有N台机器,宕机一台后,该机器的压力可以均匀分散到剩下的N-1台机器上,每台机器的压力仅仅增加1/N-1
二、改进策略,将数据拆分成较合理的数据段,以数据段为单位作为副本。一般使每个数据段大小尽量相等切控制在一定的大小内。一旦将数据分为数据段,则可以以数据段为单位管理副本,副本与机器不再硬相关,每台机器可以负责一定数据段的副本。
例如,某系统共有3个数据段o、p、q,每个数据段都有三个副本,系统中有4台机器,个机器的副本如下图

1、副本分布与机器无关,使数据丢失后恢复效率非常高。一旦某台机器的数据丢失,其上数据段的副本将分布在整个集群的所有机器中,而不是仅在几个副本机器中,从而可以从整个集群同时拷贝恢复数据,而集群中每台数据源机器都可以以非常低的资源做拷贝。
2、副本分布与机器无关,有利于集群容错。如果出现机器宕机,由于宕机机器上的副本分散于整个集群,其压力也自然分散到整个集群。
3、副本分布与机器无关也利于集群扩展。理论上设集群规模为N台机器,当加入一台新机器时,只需从各台机器上迁移1/N - 1/(N+1)比例的数据段到新机器即实现了新的负载均衡。由于是从集群中各机器迁移数据,与数据恢复同理,效率也较高。
工程中,完全按照数据段简历副本会引起需要管理的元数据的开销增大,副本维护的难度也相应增大。一种折中的做法是将某些数据段组成一个数据段分组,按数据段分组为力度进行副本管理。这样可以讲副本力度控制在一个较为合适的范围内。

浙公网安备 33010602011771号