微信号:infoqchina

介绍:有内容的技术社区媒体

Google视频:Google如何备份互联网?

2014-02-21 18:11 马国耀

近日,在视频“How Google Backs Up the Internet”中,Raymond Blum介绍了许多值得互联网公司学习的有关备份、恢复方面的技术与思想。Blum的演讲幽默诙谐,信息量巨大,洋洋洒洒地讲了一个多小时,处处闪现智慧的光芒,非常值得一听。


Blum用典型的Google式说法解释了为何常规的备份策略对Google不起作用:它们在实现容量倍增的同时需要付出倍增的付出(成本和资源)。若备份两倍的数据需要两倍的资源(时间、能源、空间等),那就没什么用,这不叫扩展。当要备份的数据量从1艾字节(exabyte)增长到2艾字节时,你需要一份不同的工作计划。


感谢Todd Hoff ,他对该视频做了非常详尽的梳理与总结(原文在这里),并归纳出演讲的几大主题:

  • 永不丢失数据:即便Gmail的确发生过臭名远播的服务不可用事件,但它却能永不丢失数据,这一点远非单纯地通过许多个磁带备份和跨多个数据中心就可以实现,实际工作要复杂得多。每次读取数据都需要经过技术栈的多个层级,而每一层都要做许多工程工作,包括人力。

  • 仅备份是不够的:你更需要的是恢复(restore)而非备份(backup)。备份只是在消费奢侈的恢复时所缴的税。可以使备份足够复杂,以保证恢复变得足够简单。

  • 不应让消耗资源与获得容量线性扩展:不能说数据增长100倍,就需要100倍的人力和机器资源。应该寻找力量倍增的方法。自动化是改善利用率和效率的主要方法。

  • 万物皆需冗余:Google的东西也不断失效,就像人体内的细胞不断死去一样。Google并不奢望它的东西能够永远不死,相反,Google做好应对计划。

  • 万物皆需多样化:若担心站点本地出事,就把数据在多个站点存放;若担心用户操作错误,就对用户的交互进行多层隔离;若希望免遭某个软件bug的破坏,就换一个软件,把东西存在不同的厂商介质上以降低严重的软件bug产生的影响。

  • 把人从决策环路中解放出来:一份邮件被Gmail保存了几个备份?诸如此类事情,就不应是人该操心的,它由Gmail和系统通过某些参数进行配置和管理的。设定高层策略,由系统来负责。只有在异常情况下才去打扰人。

  • 不断地验证:不断对备份和恢复进行测试,以验证其正确性。不对其进行尝试,它就不可能正确工作。


下面,根据Todd Hoff 的整理,对演讲中的相关观点进行详细描述,由于篇幅较大,为简化阅读,笔者对内容做了部分删节,并对若干条目进行了转译。


保证100%的数据可用性,永不丢失数据

从统计学角度看,一个2G的文件丢失200K听起来不错,但是文件却可能已经失效了。所以,数据的可用性远比可访问性重要;Google通过位置隔离、应用层问题隔离、存储问题隔离、存储介质问题隔离等多种混合手段保证数据的可用性。


冗余不同于可恢复性

多份备份不足以保证数据不丢失(软件的错误会导致所有副本都是坏数据);但是备份在某些情况下是有用的,比如一个数据中心不可用时可用另一个异地的数据中心的备份进行恢复;冗余有益于引用局部性,而当希望使所有的数据引用尽可能是本地访问时,拷贝就很好用。


从整体上看,Google系统非常健壮,因为有太多的备份 

Google的东西始终在出错,就像人体内的细胞不断地死亡一样。冗余就是应对之策,通过冗余可得到了比单台高质量机器更可靠的聚集可靠性。


大规模并行系统更容易出错 

若没有bug的情况下,运行在3万台机器上的MapReduce看起来很棒,但是一旦有bug,所有机器都等着运行此bug,其影响就会放大。


本地拷贝不能防止站点失效 

如果机房被水淹了,RAID也无力回天;GFS(Google File System)采用RAID的概念,通过编码技术一次性将数据写到多个数据中心,你只需要使用n-1个备份就可以重构数据。所以,当你有三个数据中心时,其中一个数据中心失效,还可以通过另外两个来进行数据重构。


更多精彩内容,请点击阅读原文。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 搞机器学习要哪些技能 元数据核心架构解析(PPT) 最流行的编程语言JavaScript能做什么? 阿里巴巴基于Java容器的多应用部署技术实践 The Swift Programming Language--语言附注--特性