热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

玩转数据中心:Twitter复制谷歌成名秘密武器

[导读]谷歌和Twitter将数据中心当做一个超大型的计算机来看待,最终全世界也会这样做。Twitter的本海因德曼腾讯科技讯(林靖东)北京时间3月7日消息,《连线》周二刊登了一篇

[导读]谷歌和Twitter将数据中心当做一个超大型的计算机来看待,最终全世界也会这样做。

伯格的回归:Twitter如何重建谷歌秘密武器

Twitter的本海因德曼

腾讯科技讯(林靖东)北京时间3月7日消息,《连线》周二刊登了一篇署名为卡德梅茨(Cade Metz)的评论文章,借谷歌网络帝国最核心的软件系统伯格(Borg)分析了Twitter如何重建谷歌的秘密武器。

原文如下:

约翰威尔克斯(John Wilkes)说,加入谷歌就象是《黑客帝国》中的尼欧(Neo)吞下红药丸一样,那就是选择了觉醒。

4 年前,威尔克斯只是知道谷歌这家公司而已。他与芸芸众生一样,每天的生活都与谷歌的各种服务如谷歌搜索、Gmail、谷歌地图等息息相关。随后,他加入了 谷歌网络帝国最核心的工程技术团队,那个技术团队就相当于谷歌的大脑,支持谷歌所有的网络服务所需的最基本的硬件和软件系统都是由他们设计的。

这些系统横跨在一个全球性的数据中心网络之上,每一秒处理的网络指令高达数十亿条。威尔克斯第一次看到那些系统工作时的场景时,他感觉自己就象是吞下了红药丸之后的尼欧一样,摆脱了矩阵(Matrix)创造的虚拟世界,突然就看到了一个由无数机器组成的庞大网络。

看着庞大的网络,他变得不知所措了。要知道,他可是一位在惠普试验室工作了25年的资深研究员,多年来一直在从事现代计算最先进技术的研究工作。

威 尔克斯说:“我是过去时代的人,我认为兆级容量就已经很大了。但是等我到了谷歌之后,我必须在所有的数据后面都加上3个0。”他解释说,那种感觉就象是一 个人从生活了很多年的小地方突然来到一个全新的广阔天地一样。在谷歌,某个存储数据的系统剩余的空间还剩几个PB(存储容量单 位,1PB=1000GB=1000000MB)时,系统就会向管理员发出警报。换句话说,只要几个小时,谷歌数据中心里的一组设备就会被海量的数据填 满。

当他还在绞尽脑汁地想象谷歌的数据中心帝国到底有多大时,威尔克斯接到任务,负责开发支持谷歌整个网络帝国的软件系统。

这 个软件系统被称作“伯格”(Borg)系统,它也是谷歌之所以能够迅速成为互联网上最强大的力量背后的最隐秘的机密之一。威尔克斯甚至都不愿叫它“伯 格”。他说:“我宁愿称之为不会被命名的系统。”但他透露,谷歌使用该系统已有9、10年的光景了。他和他的团队正在开发一个新版本的工具,产品代码为 “欧米茄”(Omega)。

伯格系统可以非常高效地将任务分配到谷歌数量庞大的计算机 服务器中去。威尔克斯称,这个系统的效率非常高,它可能帮谷歌省下了足以再多建一个数据中心的成本。没错,一个完整的数据中心。那也许看起来就象是天外来 客一样,从某种角度来说,它确实是天外来客。但是,谷歌为了运行其庞大的网络帝国而开发的新时代硬件和软件通常会慢慢地渗透到互联网的各个角落。伯格系统 也不例外。

在Twitter,有一个小规模的工程师团队利用加州伯克莱大学的研究员们开发出来的一个名为“Mesos”的软件平台开发出了一款类似的系统。由于“Mesos”平台是一款开源软件,因此任何人都可以免费使用它,这个平台也逐渐在向其他领域扩展。

伯 格这个名称非常贴切。谷歌的这个系统就是一个中央大脑,可以控制谷歌所有数据中心上的全部任务。谷歌不用为每一个软件系统如谷歌搜索、Gmail、谷歌地 图等各搭建一组独立的服务器,它只需搭建一组服务器来同时执行各种不同的任务就行了。所有的任务都会被分割成细小的任务,然后由伯格系统将那些任务发送到 它能找到空闲计算资源的地方。

威尔克斯说,这就好像是一大堆积木一样,每块积木的外形和大小都是不同的。伯格系统的任务就是找到一种将所有的积木都装入木桶中的方法。这里所说的积木就好比是计算机任务,木桶就好比是服务器,关键是不能浪费木桶中的任何空间。

威尔克斯说:“如果你只是简单地将积木丢到木桶里,那么你要么会剩下很多积木装不进去,要么会造成有的木桶装得满,有的木桶装不满的情况,因为积木与积木之间贴合得并不紧密,那样就会浪费掉不少的空间。但是如果你细心去安排如何装积木的话,你就可以减少木桶的需用量。”

还有其他的方法可以做到这一点。你可以利用服务器虚拟化技术来达到相同的目的。但是虚拟化会额外增加不必要的复杂性,如果去掉这个因素,谷歌就可以将数据中心基础设施的规模减小几个百分点。考虑到谷歌数据中心网络的规模,那几个百分点对应的可能就是一个完整的数据中心。

威尔克斯说:“那就相当于另外再建一个数据中心,这里增加一点,那里增加一点,最后汇总起来,那就是一大笔开支。”

在 Twitter,Mesos并不具备与伯格系统一样规模的影响力。Twitter的业务规模比谷歌的业务规模要小得多,但是Twitter的业务总是在不 断的发展壮大,Mesos可以更好地控制业务规模的增长速度。伯格和Mesos并不只是从服务器群中提取计算能力。它们可以让谷歌和Twitter那样的 公司将数据中心当做一台设备来对待。

谷歌和Twitter可以象你在你的台式机电脑上运行软件那样在这些计算设备上运行软件。这样就可以简化Gmail、谷歌地图和Twitter应用的开发人员的工作。

曾经在加州伯克莱大学创立Mesos项目、目前在Twitter担任Mesos项目总监的本海因德曼(Ben Hindman)称:“Mesos可以简化Twitter工程师的工作,他们只需考虑在一个数据中心的平台上运行他们开发的应用软件就行了。那真的是很棒。”

它是一个数据中心,但它看起来就象是一块芯片

伯格和Mesos都是规模庞大的项目。但是为了更好地理解它们,最好还是先从英特尔提供给海因德曼的测试用计算机芯片来说起。

大约在5年前,当时海因德曼还在加州巴克莱大学攻读计算机科学博士学位,计算机芯片还处于多核时代。处理器是计算机的中央大脑,以前的处理器一次只能执行一条指令。但是多核处理器出现后,处理器一次就可以处理多条指令。从本质上来说,它是一个包括了许多个处理器或核心的芯片。

在 加州伯克莱大学,海因德曼的研究目标是将计算任务尽可能有效地分布到那些芯片中。英特尔为他提供试验用的芯片,他将那些芯片连接在一起,制作出拥有64个 核心或128个核心的计算机样品。然后他开发了一套系统来运行多种应用软件,并且将计算负载平均地权分配给所有的处理器核心,不管哪里出现闲置的计算能 力,都可以马上发送一条指令过去。

海因德曼说:“我们发现,应用程序在将它们的计算任 务分配给这些计算资源时做得非常巧妙,但是它们仍然想要获得尽可能多的计算资源。他们忽略掉其他可能正在运行的应用程序,将所有的计算资源都抓在手里。因 此我们开发了一套系统,只让一个应用程序使用一定数量的处理器核心,然后将其他的核心分配给其他的应用程序。而且,这种计算资源分配模式是可以随着时间的 推移而发生变化的。”

海因德曼一直是在一台计算机上做研究。但是当他的研究完成后,他 就可以将那个本质性的系统应用到整个数据中心里。他说:“在一块芯片上安装64个核心或128个核心看起来就好像是一个数据中心里的64台计算机或128 台计算机。”他就是那么做的,但是并非有意为之,只是巧合罢了。

海因德曼一直在研究多 核心处理器,而他的朋友和同事安迪孔维因斯基(Andy Konwinski)和马泰扎哈里亚(Matei Zaharia)一直在研究能够跨多个庞大的数据中心运行的软件平台。这些被称作“分布式系统”,它们构成了目前的大多数大型网络服务的支柱。它们包括很 多组件,比如利用海量服务器来处理数据的Hadoop、在很多台设备上储存信息的各种NoSQL数据库等。

之后,海因德曼和他的朋友们决定共同开发一个项目,当然原因可能并不仅仅是他们彼此都很欣赏对方。但是他们很快意识到,他们研究的领域是完全不同的,而且竟然是互补的。

以 前,象Hadoop那样的分布式系统是运行在一个庞大的服务器群组上的。然后,如果想运行另一个分布式系统,就必须再搭建一个新的服务器群组。但是海因德 曼和他的朋友们很快发现,如果他们可以借鉴海因德曼研究的芯片项目的经验,他们就可以更高效地运行分布式系统。就象海因德曼去研究如何在一个多核心处理器 上运行多种应用程序一样,他们可以建立一个平台来,让很多个分布式系统在一个服务器群组上运行。

结果就有了Mesos系统。

“我们怀念伯格”

2010 年3月,Mesos项目启动后大约过了一年的时候,海因德曼和他的朋友们去Twitter讲座。起先,他感到非常失望。因为只有8个人来听他的讲座。但是 Twitter的首席科学家对他说,8个人已经很多了,占到公司员工总数的10%左右。当他演讲完之后,还有3个人与他进行了交谈。

那 3个人是Twitter的工程师约翰西罗伊斯(John Sirois)、特拉维斯克劳福德(Travis Crawford)和比尔法尔纳(Bill Farner),他们以前都曾在谷歌工作过。他们对海因德曼说,他们很怀念伯格系统,而且Mesos似乎可以通过一种完美的方式来重建它。

不 久之后,海因德曼担任了Twitter的顾问,与上面提到的3名工程师密切地共事,以拓展Mesos项目。之后他作为临时员工加入了Twitter。一年 后,海因德曼成为Twitter的一名正式员工。海因德曼回忆说:“我的老板当时说,如果你在一年前就加入公司的话,你可能已经获得了一年价值的 Twitter股票,你当时在想什么呢?”之后,他和他的同事们继续将Mesos作为一个开源软件项目来开发,但他同时还在努力将Mesos平台搬到 Twitter的数据中心里去使用,情况跟谷歌的伯格系统非常相似。

伯格的回归:Twitter如何重建谷歌秘密武器

(图注:由于使用了伯格和后续的欧米茄系统,谷歌不用在不同的服务器群组上运行各自的软件系统,而是将所有的东西放在一个服务器群组上运行。)

谷 歌并未正式参与那个项目。但是它为巴克莱AMP试验室提供了资金,而AMP试验室正是Mesos项目的主要研究机构。而且,那些参与了Mesos项目的研 究人员也经常与威尔克斯那样的谷歌员工交换想法。威尔克斯称:“我们发现他们正在开发它,我开始安排自己的日程表,以便每6个月就可以跟他们碰一次头,有 时只是为了在一起聊聊。”

孔维因斯基也在谷歌临时工作了一段时间,并且还在威尔克斯手 下干了一段时间。孔维因斯基说:“我们从未针对谷歌内部运行的某些特定的系统交换过想法,因为谷歌在那些项目的保密性上面管得非常严。但是我们还是得到了 很多有用的反馈信息,都是在很高层面上的,比如具体的问题是什么,我们应该关注哪些问题等等。”

Mesos项目与伯格系统有一点不同,后者的历史要比前者长一些。但是它们本质性的问题是一样的。据海因德曼称,谷歌的新版伯格系统即欧米茄与Mesos的模式更为接近。

这 些系统被称作“服务器群组管理系统”,它们与多年以前就在开发的很多被用来运行超级电脑和Sun Grid Engine等服务的工具很相似。欧米茄和Mesos都可以让你在同一个服务器群组上运行多套分布式系统。你不需要专门为Hadoop分配一个服务器群 组,然后为Storm(一种可以实时处理多条数据流的工具)分配另一个服务器群组,你可以将它们放在同一个服务器群组上运行。威尔克斯称:“这就是我们开 发的方向,它可以提高效率,这也就是我们开发这些系统的原因。”

那些工具还提供了一个 接口,软件设计师们可以利用那个接口在伯格或Mesos平台上运行他们自己的应用程序。在Twitter,这个接口被称作“Aurora”。例如,一组工 程师可以利用Aurora来运行Twitter的广告系统。海因德曼当时说,公司大约20%的服务都是以这种方式运行在Mesos平台上的。

威尔克斯称,现在谷歌提供了很多工具,帮助工程师们将各项资源分配给他们的应用程序。但是欧米茄的目的是处理更多这样的任务,因此工程师们不必担心细节问题。他说:“你可以将它看作是自动挡汽车与手动挡汽车的对比,你想要跑得更快,你没必要去调整压缩比或进口歧管。”

欧米茄项目仍处于开发状态,但是公司已经开始在实际数据中心中进行样品测试了。

伯格的回归:Twitter如何重建谷歌秘密武器

Twitter的本海因德曼

克隆的攻击

据威尔克斯称,谷歌打算发布一份关于伯格系统的研究报告。谷歌通常不愿意透露其支撑着它的网络帝国的各种系统的资料。从竞争的角度来说,那些技术具有非常重要的意义;但是一旦这些工具达到一定的成熟阶段,谷歌就会向外公布。

在 发布那样一份研究报告和Mesos在Twitter的兴起期间,伯格模式将在网络上得到进一步扩散。其他一些公司如AirBNB、Conviva和另外一 家与加州伯克莱大学关系密切的公司已经开始使用Mesos系统,威尔克斯相信,Mesos项目背后的基本构想可能会极大地改变企业运行分布式系统的方式。

是的,还有很多其他方式可以高效地将工作负载分配到服务器群组中去。你可以使用虚拟化解决方案,在物理服务器上运行虚拟服务器,然后把你想要加载的任何软件加载到虚拟服务器上去。但是在伯格和Mesos平台上,你不用担心去担心那些虚拟机。

海因德曼称:“接口是最重要的东西。虚拟化解决方案给你的接口是一个新的虚拟机,我们不想那样,我们要想一种更简单的解决方案。我们希望人们可以管理数据中心,就象他们管理笔记本电脑一样。”

威尔克斯称:“如果你是一名工程师并建立起一个虚拟机,你会得到一个看起来象是另一台硬件的东西。你必须在它上面运行一款操作系统,你必须去管理它,你必须升级它,你必须去做需要对一台物理设备做的所有工作。”

他接着说:“但那并不是一名工程师利用他的时间的最好方式。他们真正想要做的是运行他们的应用程序。我们为他们提供了一种实现那个目标的方法,而且不需要去使用虚拟机。”

显然,很多工程师宁愿使用原始的虚拟机。这就是他们从亚马逊EC2服务中获得到的东西。亚马逊的云计算服务已经成为运行软件应用程序最流行的方式,以致于无数公司都在努力为开发人员和企业用户提供相似的工具。

毕业于加州巴克莱大学、同样在威尔克斯手下干过一段时间临时工的查理雷斯(Charles Reiss)并不认为现在的这个系统能够提供比其他可比解决方案更大的优势。但是他同时也补充说,欧米茄就不同了。

谷 歌打算通过欧米茄项目让整个流程变得更加顺畅,就象Twitter利用Mesos平台和Aurora实现的目标一样。从长期角度来说,其他公司肯定会模仿 它们。谷歌和Twitter将数据中心当做一个超大型的计算机来看待,最终全世界也会这样做。计算机科学总是利用这样的方式向前发展。我们从一种复杂的接 口起步,慢慢地开发出一种不再复杂的接口。这样的事情在台式机电脑、笔记本电脑和服务器领域都已经发生过了。现在,轮到数据中心了。

来自:http://tech.qq.com/a/20130307/000005.htm

玩转数据中心:Twitter复制谷歌成名秘密武器

推荐阅读
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • 本文深入探讨了如何选择适合业务需求的MySQL存储引擎,详细解析了不同存储引擎的特点、适用场景及其在数据存储和管理中的优势。通过对比InnoDB、MyISAM等主流引擎,为读者提供了全面的技术指导和专业建议,帮助开发者在实际应用中做出明智的选择。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • (1)前期知识:1. 单机架构:单一服务器计算机——其处理能力和存储容量有限。2. 集群架构(负载均衡器与多节点服务器)——通过增加节点数量来提升系统性能和可靠性,实现高效的任务分配和资源利用。 ... [详细]
author-avatar
男人还是闷骚点好
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有