如何将 Google 神秘的数据中心管理系统搬回家
大家知道,云计算技术、分布式技术为Google提供了巨大的价值,并已成为其核心竞争力之一。现在,越来越多的人开始通过互联网获取服务,越来越多的互联网公司像Google一样需要成百上千的服务器来支撑他们的在线业务。
曾在Google工作三年的王璞坚信,享用云计算技术、分布式计算技术和大数据处理技术是每个企业的权利,而不再是Google等互联网巨头的特权。为了帮助每个企业开启云的力量,王璞在2014年毅然决定放弃硅谷的高薪和舒适的工作环境,回国创立了数人科技,希望帮助企业简便、高效地享用云平台的高性能、高可靠服务,以创造属于他们的价值。
王璞,数人科技创始人兼CEO, 2011年获得美国George Mason大学计算机博士学位,在美国硅谷先后供职于StumbleUpon、Groupon和Google等互联网公司,期间负责海量数据处理、分布式计算以及大规模机器学习等相关工作,并在Google互联网广告部门负责每秒请求量高达60万次的数据处理服务器。擅长分布式计算、大规模机器学习、海量数据处理,在众多专业期刊会议上发表论文十余篇。
如何复制Google的秘密武器
在Google就职期间,王璞最大的收获是接触到业界到最强大、最先进的分布式计算技术,为他回国创业积累宝贵的资本。Google这个互联网帝国拥有几千万台服务器,而业务运维团队不过几千人,平均每人要运维差不多一万台服务器上的业务。反观国内市场,大家却被分布式集群的高运维成本和压力所束缚。为什么在Google,工程师可以很容易的将一个任务跑在几千台服务器上?究竟它的秘密武器是什么呢?
图注:由于使用了伯格和后续的Omega系统,谷歌可以将所有的东西放在一个服务器群组上运行,摆脱在不同的服务器群组上运行各自的软件系统。
答案就是Borg。Google通过Borg对其数据中心几千万台服务器进行统一管理,Borg能让工程师像使用一台电脑一样使用数据中心的所有服务器,这样每个工程师都能很方便地从Google数据中心获取庞大的计算资源并应用起来,极大地提高了工程师的生产力。Borg被视为Google最为强大的技术,使得Google可以持续地获得商业竞争优势。但是,或者说当然,Google不会愿意将Borg与外界分享。
提升业务效率、降低IT管理复杂度和维护成本,对于任何一个企业来说都是最为切实的需求。王璞希望把从Google学到的关于云计算、分布式计算理念带回国,推动中国企业级云展。虽然不可能把Google的技术原封不动照搬回来,但王璞一直在探索,如何利用开源技术打造类似Borg的产品。终于,王璞将目光锁定在Apache旗下的开源技术Mesos。
Mesos:生产环境下Docker的“黄金搭档”
Mesos诞生于UC Berkeley的一个研究项目,与Google内部的数据中心管理平台Borg有异曲同工之妙,并对Docker提供原生支持,现已成为Apache旗下顶级开源项目。目前已经有很多知名互联网公司在使用Mesos管理其数据中心,比如国外的Twitter、Airbnb,国内的爱奇艺,等等。
2014年开始,借着Docker的大火,Mesos也越来越多地走入人们的视线。Docker解决的最直接问题是方便企业的应用开发、测试、部署,它的秘诀在于极大的增强了容器的易用性,让开发人员极其容易地打包、封装、分发容器应用。现在,是否部署Docker对企业来说已经不再是一个问题。当Docker越来越热,可用性、规模和性能等方面面临非常深层次的挑战,使其在生产环境大规模部署并不容易,这已逐渐成为企业使用Docker的刚性需求。而这恰好是Mesos的用武之地。虽然Mesos起初并不只为Docker而生,但它几个显著的特性决定了Mesos势必成为如Docker公司CTO所说的“生产环境大规模运行Docker的黄金搭档” 。
Mesos特性
1.资源管理策略Dominant Resource Fairness (DRF),这是Mesos的核心。Mesos 专注的是对分布式集群资源进行分配,从而保证所有用户平等地使用集群内的资源,比如CPU、内存、磁盘等等。
去年夏天,Google开源了Docker容器集群管理系统Kubernetes,经常有人将Mesos和Kubernetes放在一起加以比较。王璞告诉我们,实际上二者还是有差异的。通常,集群管理平台需要负责资源分配和任务管理。Kubernetes最擅长的是管理Docker任务,对Docker任务进行调度,比如处理多个Docker任务之间的依赖、编排,自动容错恢复Docker任务,等等,这些是Kubernetes的强项。当然Kubernetes也可以来分配集群资源。相比Kubernetes,Mesos只负责集群资源分配,Mesos本身没有任务管理功能,需要靠其他模块来实现任务管理。Kubernetes可以基于Mesos,由Mesos来分配资源,然后Kubernetes来负责任务管理。
2.轻量级。因为Mesos只负责分配资源,并不涉及到任务管理层面,因此Mesos从自身构架到实现都很轻量。分布式环境一般由大量软硬件模块集合而成,是非常庞杂的系统,涉及大量关于容错、可靠性、稳定性的考虑。轻量的模块容易维护,不易出错,更加稳定。这也是在云计算、分布式环境下,大家推崇轻量级设计的原因所在。
因此,对于现在有人提出的Docker+Yarn的方案,王璞并不认为是一个好的方向。虽然Yarn在企业的使用比Mesos广泛,但Yarn在功能设计之初是为了支持Hadoop的任务管理需求。随着Hadoop的发展壮大,内部组件越来越多,这使原本就非常庞大的Hadoop体系变得越来越重,所以基于重量级的Hadoop运行轻量级的Docker结合,不是个明智的选择。
基于Mesos和Docker之上构建的分布式系统的每个组件量级更轻,这种构架比较容易实现高可靠,降低维护成本,也符合现在“微服务”的流行趋势。与Mesos的结合使Docker在生产环境下的大规模部署变得非常容易实现。开发人员可以通过Mesos将Docker容器轻松地部署到云端,而不给运维人员增添负担,降低云端开发和运维复杂度。
3.通用的集群管理、资源管理平台。目前来讲,与Kubernetes特定面向Docker、Yarn特定面向Hadoop不同的是,Mesos是比较通用的平台。到现在为止,Mesos支持的分布式软件平台是最多的,这个也是王璞为什么选择Mesos的原因。数人科技希望能基于Mesos给客户提供一个比较丰富的分布式软件平台,而如果只基于Yarn和Kubernetes,目前还做不到。
所以,数人科技区别于其他围绕Docker技术的服务商之处在于,数人科技的产品不仅支持Docker,还支持其常见开源分布式软件,诸如Hadoop、Spark、Kafka、Cassandra,等等,目的是为了满足企业生产环境各种各样不同的需求。
最适合的应用场景
王璞将Docker+Mesos最适用的应用场景总结为以下三个方面:
1. 容灾备份。没有企业不愿意做容灾备份。然而,大多企业的开发运维实力本就捉襟见肘,维护一个数据中心的压力都会很大,更不要说来维护多个数据中心,并实现数据中心之间自动容灾切换。Docker与Mesos结合可以为企业提供统一的软件基础构架,具体来说,企业利用Docker和Mesos搭建多个数据中心,就可以方便地把业务部署、更新到多个数据中心,极大减轻灾备维护工作量。
2.基于云计算、基于分布式计算的弹性场景。比如秒杀、抢购、抢票等,这些场景的特点是瞬时突发,流量非常大。在企业IT实力有限的前提下,数据中心很难承担这样的负载压力。Mesos加Docker可以很方便地做到秒级扩容:企业为了应对这些突发的大流量,可以提前准备好数据中心加公有云上的计算资源;当流量高并发时,先将Docker任务进行扩展,当计算资源限制Docker任务无法扩张时,再通过调用公有云API再、添加计算资源,应对突发流量的场景。
3. 混合云的场景。很多客户出于数据安全和弹性计算的考虑,都有混合云的需求,然而异构的计算环境使混合云管理起来非常痛苦。而且,由于用户对业务安全稳定的顾虑,基本不敢深度绑定一家云,而是根据自己的业务需求来切分:存储放在A云,后台计算放B云,离线数据业务处理放在C云……这不仅增加维护的技术难度,也增加成本。有了Docker加Mesos之后,无论是在多个公有云上的环境,还是私有的IDC计算环境,企业都可以获得同样的使用体验,降低开发、运维的复杂度。持续推动开源技术的发展
没有完美的技术。由于最初Mesos设定的场景是管理在同一个局域网内的集群,所以Mesos节点间的设计是主结点管理从结点,呈现强耦合的关系。这一点Kubernetes就比较新颖,Kubernetes节点之间是松散耦合的,这样对于容错、管理广域网的集群都更方便。目前Mesos也在借鉴一些Kubernetes的理念,最新一版Mesos也做了一些改动,把Mesos之前各个结点之间的紧密耦合变成松散耦合,很方便的管理跨物理结点,广域网的集群。目前,王璞也在带领数人科技尝试将Mesos和Kubernetes的优势结合。随着Kubernetes越来越成熟,未来数人可能会将所有的Docker任务的调度管理用Kubernetes来做,让Mesos只负责资源分配。
开源技术的发展离不开商业模式的推动;一款开源软件的成功,也为商业公司创造了巨大的利润和价值。以Mesos为例,较高的技术门槛使开发人员从入门学习带来不小的难度,王璞希望通过数人科技自身的技术优势,在为企业用户带来便利的同时,推动Mesos技术不断完善发展。