你此刻看到的这篇文章,上个月借在微信好友的1000块钱、昨晚送出的五个人头、存在网盘里的学习资料,以及任何网络数据的传输、运算和储存,都需要以服务器作为载体。如果数据出错,机房断电、洪水、地震、外星人入侵,那么你留在网络上的数据会彻底消失吗?怎么保护你在服务器里的数据呢?
简单的来说服务器就是提供各种特殊服务的电脑,一旦数据出错或者遭遇不可抗力,就会导致游戏停服、买不到票或者耽误你点外卖等严重后果。面对这些突发情况,一个体面的厂商需要做到两点数据容错和数据容灾。再精密的设备也会难免出现故障,一台有容错能力的服务器,需要做到在个别数据出错时也能正常工作,同时重建数据实现。纠错想要实现这一点,最常用的方法是建立独立硬盘冗余阵列,简称RAID ID。假设一份文件由ABCD四份数据组成,那么可以把这四份数据可以分成两块硬盘存储,这种方案叫做READ 0,它的空间利用率和读写速度都很高,但容错率是零。关注码知道
任何一块硬盘出错都会导致数据丢失。要想容错,就必须把ABCD都复制一份,分别存储在两个硬盘里,互为备份,这种方案叫RAID ID1,安全性最高就算一块硬盘发生故障,数据依然完整,但代价就是牺牲了空间利用率和读取速度。那么怎样才能兼顾安全性和空间利用,获取双份的快乐呢?答案是把这两种阵列方案结合组成复合阵列。第一种组合方案叫RAID 01,在这个阵列里,假设一号硬盘故障,那么一号、二号硬盘组成的RAID 0阵列就会失效。
如果下次坏的是三号或四号,那么整个阵列就报废了,丢失数据的风险为2/3。另一种方案叫RAID 10,同样假设是一号硬盘故障,那么在这个RAID ID1阵列中,二号盘就起到了备份一号盘的作用,就算下次三号或四号盘坏了也没事儿,只有当二号盘也损坏的时候,才会让整个阵列报废,丢失数据的风险是1/3。所以如今的服务器大多都会选择RAID 10阵列作为容错方案。同时,一旦某个硬盘出现故障,服务器就会自动激活空白硬盘,写入备份数据进行恢复重建,这个过程叫热备份。除了RAID 01,现实中的服务器容错方案还有很多,一般来说,商用服务器至少要实现99.99%的平均无故障运行时间,相当于全年只停机52分钟才算足够可靠。关注码知道
其实相比于服务器本身的出错风险,更大的风险往往来。来自于服务器外部。比如2017年1月,由于供电中断,网易炉石传说的数据库服务器和备用服务器同时故障,导致三天之内所有玩家的游戏数据全部丢失,无法挽回,最终只能调取更早的备份数据,把游戏内容回荡至事故发生之前,让所有玩家前功尽弃。面对各种猝不及防的突发事故,只有数据容错能力是远远不够的。一个拥有超能力的服务器运营商还需要想到第二层数据容灾。数据容灾的作用是即便发生天灾人祸,服务器无法工作,也能保护数据安全。最简单的容灾方法是冷备份,也就是在拷贝数据后不接电也不联网,它的主要作用就是存档,以防万一。
但不同存储介质的寿命不同,所以用冷备份容灾时需要选择合适的介质,维持适宜的环境温度和湿度,避免服务器还没坏,冷备份就先报废了的情况。以著名的代码托管平台GitHub为例,为了确保副本材料的可用寿命,他们选择用胶片作为介质,并把档案室设置在北极地下250米深的永动土层中,希望实现1000年的数据存储寿命,不管未来发生什么灾难,都能把今天的BUG流传给子孙后代。关注码知道
除了冷备份服务器,运营商往往还会涉及更多的容灾。应急预案以电力供应为例,一座A级数据中心至少要有两处发电设施作为供电来源,还要有一处独立的备用电源。容灾级别更高的数据中心还会设置应急配电的UPS室,用这一屋子的电池维持至少15分钟的电力供应,为柴油发电机组留出启动的时间。同时,数据中心还会和最近的加油站达成供油协议,确保储油罐能随时得到补充,直到电力恢复为止。但这还不够,如果遇上台风、海啸、火山地震、小行星撞地球、外星人入侵等不可抗力,单个数据中心的容灾方案再多也无能为力。所以,更高级的容灾策略是在不同地区、不同城市建立多个数据中心,相互连通,互相备份。
目前常用的商用容灾方案是两地三中心加双活,也就是一处生产数据中心,一处同城栽培中心,一处异地栽培中心,同时建设并且保证至少两个数据中心。同时处于运行状态。在911事件中,纽约银行位于世贸大厦的数据中心被毁,所有用户数据丢失,最终只能破产清算。而在同一栋楼里遭受同样打击的摩根士丹利却在半小时内启动了新泽西的容灾备份中心,没有损失任何数据,立刻恢复了正常营业。关注码知道
对于金融服务公司而言,数据容灾方案能在关键时刻决定企业的生死存亡,而对于你来说,有了这些容错容灾方案的保障,你的微信余额和花呗账单绝对不可能凭空消失。当然了,并不是所有的互联网公司的服务器都有如此高级别的容错和容灾能力。除了数据安全,服务器的容量成本、运行效率也都是厂商们考虑的因素。更何况服务器经常延迟、卡顿、掉线,说不定还能成为一家公司的传统特色。关注码知道