Cowling说,2012年他有幸目睹了Google监管Spanner(一个主导了这家互联网巨头很多在线操作的全球数据库)的工程团队。Spanner或许是世界上最大的、也是最复杂的单个数据库,也是分布最广的分布式系统之一。然而,Cowling选择了在Dropbox工作。「我希望可以创造些什么。」Cowling说。Spanner已经建立了,而Dropbox的帝国却还没有。
从目前来看,Dropbox的一部分业务在亚马逊上运行,而另一部分则没有。如果很多用户通过Dropbox分享文件,那么该公司就会选择将文件储存在亚马逊的简单存储服务中,而这些文件的元数据则存储在自己的服务器中。
通过和负责基础设施建设的副总裁Akhil Gupta以及其他人一起工作,Cowling设计了一种软件系统,该系统允许Dropbox存储数百PB的数据——这些数据足以填满数亿个U盘,且存储效率远远高于亚马逊的简单存储服务。他们将这个系统称为「Magic Pocket」。「Dropbox被认为是一个你可以放置所有文件的地方,你不用担心它会消失,而且你还可以随时访问它。这就像是一个充满魔法的口袋。」Gupta说。
从本质上说,他们构建了自己的「亚马逊的简单存储服务」,只是他们根据自己的技术问题调整了软件而已。「我们还没有建造出一个可以替换掉亚马逊简单存储服务的系统,我们只是建立了一个供我们自己使用的系统。」
甚至当Dropbox仍然在亚马逊上的时候,亚马逊就开始表现出会成为Dropbox的一个强有力的竞争者——亚马逊推出了自己的文件分享服务。尽管亚马逊推出的这个版本并不是那么适合用户使用,且缺少Dropbox独特的蓝色文件夹那样的品牌知名度,但是却着实让小型公司非常担心。但是据Agarwal讲述,促使Dropbox撤离亚马逊云服务的主要原因是经济原因而非政治原因。「你需要将这些大型科技公司看做不同的国家,或者友好的邻居,虽然偶尔会出现一些小冲突。亚马逊有非常多的业务,但是我认为亚马逊的首要任务不是成为一个像我们一样的云存储服务供应商。Dropbox已经建立了为自己服务的软件系统,而如今他们又往前迈进了一步,他们建立了自己的硬件系统——Dropbox重新设计了自己的电脑。
规模化难题经过数年的时间,互联网巨头Google、Facebook、微软和亚马逊等都已经设计了自己的数据中心硬件系统——计算机服务器、网络交换机以及大数据存储硬件等。这些公司没有其他选择,只能是构建全部的硬件系统:他们的互联网帝国太过巨大,从而使得使用传统方式太过昂贵,也太过困难。他们需要一种新的更便宜、更精简、且可塑性更强的硬件。因此他们与全球的硬件制造商和供应商共同合作建造了云服务系统。
今天,Google是世界上建造服务器最多的公司,而它几乎不出售服务器。亚马逊和微软也几乎采用了相同的战略。由于这些公司也会运行云计算服务,因此许多其他的商业也会在传统硬件厂商之外的设备上运行他们的软件。当Facebook对其用户定制服务进行开源以后这一点变得尤其明显。现在大量的供应商(包括一些亚洲制造商如Quanta)开始出售基于Facebook硬件的产品。Rami Aljamal亲眼见证了这一发展过程。如今,他在Dropbox中也设计了这样的机器。和Google、亚马逊、微软一样,Dropbox设计了这种满足其独特需求的设备。
Dropbox储存了大量的数据,因此它需要适合这项任务的设备,而这也正是Aljamal及其团队在该公司的总部——位于旧金山的Dropbox总部的实验室中完成的工作。他们将这台机器称为「Diskotech」。「我们最关心的部分是磁盘,这是所有数据存储的地方。」Aljamal说。每一个Diskotech盒子都储存有PB级的数据。50台这样的设备就可以储存人类迄今为止所写的所有数据。
更换轮胎Cowling及其同事从2013年夏天开始研发Magic Pocket软件,花费了大约6个月的时间来建立初始代码。但是这只是开始的很小一步。一旦该系统建立,他们还必须确保系统能正常工作。他们需要将这套系统应用于多个数据中心的设备内部。他们也需要将软件应用于最新的硬件产品上。不仅如此,他们也需要将所有的数据撤离亚马逊。
这整个过程持续了大约两年的时间。毫不夸张地说,这样的项目是一个非常大的技术挑战。但是这同时也是一个物流挑战。在互联网上转移大量的数据是一件事,而将许多设备转移到数据中心又是另一件事,而Dropbox必须要完成这两件事,以便其可以继续为数亿人服务。「这就像是一辆移动汽车,你希望在更换轮胎的同时汽车仍然在运行。」前Facebook网络工程师Dan Williams说。换句话说,在进行数据转移的时候,Dropbox并不能停下来。他不能告诉自己的用户他们的文件暂时不可用。因此,衡量这项工作完成得是否出色的标准就是用户是否有察觉到异样。
当Cowling及其同事完成了初始代码的时候,他们在一个标准化的硬件网络上进行了测试,该硬件是Dropbox的缩略版,其中大约20%的数据放置在亚马逊的服务器上。他们希望能够连续测试180天而不发现大型错误,甚至在测试房间的墙上挂上了时钟。两个月后,他们发现了一个程序错误——可以看到储存在错误地方的数据,然后他们重新设置了时钟。整个测试持续了大约8个月。
确认该系统可以运行所有的Dropbox以后,该团队进一步将该代码应用在了越来越多的系统上,从而从亚马逊云服务器中复制了越来越多的数据。为了顺利完成该过程,Dropbox与亚马逊的合同延期了6个月。「整个过程其实时间非常紧张。」Cowling说。
事实上,仅仅是将数据从亚马逊迁移出到其他数据中心就是一个非常浩大的、堪称史诗级的任务。将大小为PB级别的数据从一台机器转移到另一台机器和下载一首歌曲完全不是一个量级。事实证明,转移4PB的数据需要花费一天的时间。「光速就是我们转移数据的极限速度。」Agarwal说。
与此同时,电脑也需要转移到数据中心,以便接收数据。想象一下你的办公室中的IT精英正在努力为新雇员搭建一台新电脑——但是这个过程是在Dropbox这个规模完成的。所有的这些过程还有时间的限制。如果他们将该系统应用到数据中心的速度不够快,那么他们就不能很快地从亚马逊迅速获得数据。Dropbox平均每天要搭载40至50台机柜,每个机柜大约搭载8台机器。每一天,卡车都将机器从世界各地运送到Dropbox的数据中心。
为了能够顺利完成数据转移任务,Dropbox设定了最后的期限。与此同时,由于其欧洲业务不断增长,因此他们选择了在欧洲继续使用亚马逊云服务,但是该公司90%的数据已经从亚马逊转移到了Dropbox数据中心。紧接着,更加紧张的工程开始了。
蓄势待发当所有的数据都撤离亚马逊云服务以后,硬件工程师Rami Aljamal相中了程序员Jamie Turner。Magic Pocket仍然只是在普通的机器上运行,接下来就是将其转移到客户定制的硬件上。Aljamal和Turner强强联手,以确保该软件可以在新的硬件上成功运行。Aljamal和硬件工程师
本文来源:不详 作者:佚名