我们为何很难对超大规模应用与分布式架构进行备份?
简而言之:在任何拥有最终一致性特征的非关系数据库架构当中,我们几乎都不可能捕捉到具备一致性状态的备份副本。而以此为基础实现成功的数据恢复更是几近不可能。
究其原因,首先应考虑到分布式架构的基本性质。此类架构旨在扩展并抵御节点故障,尽可能降低停机机率。而在对分布式架构进行备份时,主要存在以下几项挑战:
- 数据被写入至某一可用节点。数据的首个着陆点无法预测,因此无法在数据被写入节点的同时对其进行捕捉。
- 此后,数据被复制到至少一个其它节点当中,而后方进行验证。这确保了有效写入,同时亦立即为数据创建副本。
- 接下来将数据复制到更多节点中以实现可用性。这一步完成后,同一数据可快速连续进行更新。
- 意味着任意时段同一数据都至少拥有3到4套副本。
- 且各节点始终不存在即时一致性。
- 如果对各套副本进行分别备份,则效率明显极为低下。
- 而在任一节点发生故障时,其拓扑结构也将立即发生变化。
在理论上,出色的DevOps团队能够编写对应脚本,确保在80%到90%的时段内成功实现数据库备份(不过考虑到多节点故障、拓扑变更、数据库压缩等情况的存在,脚本编写难度极大)。
相关推荐
地平线 2020-11-02
richermen 2020-10-15
ahaoGG 2020-09-24
sushuanglei 2020-11-12
ptmagic 2020-10-31
jaryle 2020-10-13
深圳克林斯曼 2020-10-10
koko0c 2020-09-26
互联网架构之路 2020-09-17
阿义 2020-09-11
Cheetahcubs 2020-09-07
互联网架构之路 2020-09-03
憧憬 2020-08-21
zyshappy 2020-08-16
loviezhang 2020-08-08
xayddxjsjxywuhui 2020-07-20
唐亚杰 2020-07-17
ZHANGYONGHAO0 2020-07-05
枫叶上的雨露 2020-07-04