Kubernetes:下一代分布式系统的护戒使者

Kubernetes中的一些设计初衷,完全以弥补传统分布式架构的不足出发,背后体现了我们在向未来进发时,必须完全割舍那些在传统架构设计中固有经验与过时理念的吸引与诱惑的决绝。

至顶网CIO与应用频道 08月22日 北京消息:

I would rather share on lifetime with you,

宁愿与你共度凡人的一生

than face all the ages of this world alone.
也不愿一个人看尽沧海桑田

作者简介:刘国辉,EasyStack联合创始人兼CTO,Linux专家、极客。15年跨国大型IT企业研发、咨询和管理经验,资深架构师。曾任IBM、HP等公司解决方案与云计算专家,主导设计并实施了国内最早的金融、能源等核心领域生产系统的云计算平台。本文为《云计算地理学报告:Kubernetes三部曲》之一。

指环王的作者托尔金在创作指环王时坦陈,从早年就对自己所爱之乡土没有属于自己的故事而感到悲伤,从而立誓要为故土写一则神话,一则遥远的传奇,以精灵的视野来看天地初开以降的一切,从此其一生都在致⼒力于描述这个从来不曾存在的世界。

无疑这份执着为这个世界带来了这部波澜壮阔的传说,其中最为气势磅礴的指环王三部曲被搬上荧幕也有十几年的时间了,横跨笔者的整个职业生涯,剧中的点点滴滴激励并鼓舞了一代人。

回首过去的十年,云计算的发展历程同样英雄辈出、精彩非凡,动辄由几十万人构成的巨头之间的对抗,虽然没有硝烟,但是生死存亡的紧迫程度同样令人惊心动魄。 如同所有的艺术,小说中的绝大部分设定也一定源自于生活,却以间接的方式反映出对信念与真理的坚持与追寻。同样现实中的诸多场景我们也一样可以在小说中找到缩影,唯一不同的是,现实中全部来自于现实,我们就以间接的方式来推演云计算下半场的争夺何去何从。

开源体系的崛起与云计算格局的形成

在中土世界的早期,从宝钻战争算起历经四次大的战争,最后一次危在旦夕之时,人类与精灵混血埃兰迪尔借前人取得的一块宝石西航到亚曼搬来主神率领的精灵三族救兵,大败莫高斯军队,一些炎魔逃到地底,莫高斯被禁于世界之外的虚空中(公有云),中土西北方贝尔兰(虚拟化)沉入大海,第一纪结束,中土世界的格局初步形成。

在面对以AWS为代表的闭源云计算技术体系将要统治整个世界的挑战时,以OpenStack为代表的开源与开放体系萌芽并且讯速崛起,最终通过在大型客户的部署中成为首选从而统治了私有云领域并奠定了整个云计算竞争格局。但是这一切只是开始而不是结束。

竞争的焦点逐步由数据中心的控制平面转向应用架构,唯一的变数聚焦于如何更好的构建并支撑云原生应用(下一代分布式系统),一方面借先发优势AWS以支撑Netflix全业务系统树立了基于云平台的大规模分布式系统标杆,另一方面,Google毫不示弱,以其倾注10年之力打造并支撑其核心系统的Borg架构为原型推出Kubernetes平台,并通过开源在短短两年时间内平息了容器调度平台入口的争夺,开放与封闭的竞争格局重新回归到势均力敌。

魔戒:传统分布式架构注定要被毁灭

霍比特人佛罗多•巴金斯从他的叔叔比尔博•巴金斯那里继承了一个戒指,这是一个充满魔力的戒指,它拥有奴役全世界的力量,但只有黑暗魔君可以使用。可是邪恶的黑暗魔君索伦知道了这个消息。他集结无数的半兽人,准备以大军夺取魔戒,并且征服全世界。为了不让魔戒落入索伦之手。佛罗多和他的朋友们决定摧毁魔戒,但是 要摧毁魔戒,一定要将它投入原先铸造它的烈焰中,那也就是位于索伦老巢的末日山脉。

传统式分布式架构并非一无是处,就像魔戒一样,所有人都想得到,但只有在少数强者手中才能体现出其巨大的威力,在多数人手中则完全无法被驾驭。传统分布式架构曾经有其辉煌的时代,奈何随着时间的推移,在支撑复杂大规模系统时过于复杂,以及难以扩展与维护使其毫无悬念地成为了云计算时代的魔戒,强大但是黑暗。

传统分布式架构缺乏统一标准、不够灵活、需要有成建制的工程技术团队才能很好支撑,开发往往与运维分离,难以使应用开发者把足够的注意力聚焦于业务,传统分布式架构的技术的黑暗面:

1. 传统分布式架构缺乏新标准

主宰计算机工业近半个世纪之久的最重要法则就是标准,缺乏统一标准一切都将陷入混乱与无序之中,资源难以整合,共识无法凝聚,力量难以展现。长久以来在软件设计领域我们对统一标准的追求也从未停止过,只不过历史从来都不是简单的重复,新标准的建立过程既不能简单的重复过去的经验,也无法一蹴而就,尝试一次性解决所有问题从来都将无功而返,集中精力解决最关键问题,搁置争议成为最佳选择。

2. 传统分布式架构过于复杂难以被掌握

当历史走到今天,我们更加认识到人自身的局限性和不足,容易疲劳,容易受情绪支配,容易出错,做重复性工作时效率低下,当然最重要的一点是成本越来越高昂。考虑到全球拥有驾驶汽车资格的人数达到数以十亿计,即使这一现状已经持续并成功运行了超过一个世纪之久,但是我们在尝试由机器来取代人这一点上从未停止过,根源在于,人的价值在于其创造性上,而不在重复性上,多数人类难以管理并维护复杂系统,即使经过充分训练完全可以做到对复杂系统的管理和维护,从效率层面出发,这也是相当不经济的一件事情,换句话说,让机器去做机器该做的事情,让人去做人该做的事情驱动着我们去以此为最高指导原则重新构建复杂系统,重构支撑大规模分布式系统的架构既是其中之一,当我们能够成功构建出可供机器去管理的分布式系统时,下一代分布式架构的雏形就呼之欲出了。

3. 传统分布式架构与所要支撑的应用之间职责过度解耦

长久以来解耦是计算机工业从硬件设计到软件设计中所遵循的关键原则,解耦的设计带来了良好的可扩展性,但是过度的遵循这一原则也会带来另外一些极端,所幸工业界不仅仅擅长于遵循标准,同时对实用主义的运用也烂熟于胸,两者之间的边界我们称之为在设计上的权衡与折衷,例如:用于支撑分布式系统的核心组件RabbitMQ 在吞吐量上完败于新一代的消息系统Kafka,实际上来自于Kafka在设计上就把一部分职责从Broker中挪到了Comsumer,以此来换取处理能⼒力上的提升。另外一个例子是分布式数据库在多中心多活场景中通过把关键资源上的竞争由RDBMS上提到业务中处理来换取总体更好的处理能力以及数据一致性也是一个例子。毕竟技术最终是为业务服务的,在摩尔定律完全失效的今天,识别哪些是必须要接受的,而哪些是可以改变的成为当务之急,而基于这一原则对我们可采用的技术进行重新审视成为构建下一代分布式架构标准的关键。

4. 传统式分布式架构缺乏面向机器的控制平面

5.传统分布式架构缺乏所必需的软件基础设施

6.传统分布式架构的核心支撑组件是面向主备设计的

7.传统分布式架构缺乏面向机器的控制平面

业务平面与控制平面的分离是云计算背后的最核心思想之一,隐藏复杂度带来了更好的可扩展性,同时具备可编程的控制平面也为接入统一的监控告警系统铺平了道路,而最重要的一点,基于一个可编程的控制平面整个分布式系统将很容易实现弹性可伸缩这一在有限资源的前提下应对大规模负载的杀手锏能力,未来多数系统都将具备至少两个平面,一个是面向人或业务的Comsume平⾯面,另外一个是面向机器或其它系统的控制平面,当具备一个面向机器的控制平面后,在一个超大规模的系统中,监控系统的作用将真正从为运维⼈人员提供充足干预时间窗口转变为提供分析与诊断能力, 为更好的优化整个系统提供数据支撑,毕竟当每天都需要启动与销毁数十亿计的进程时,人工是绝无可能进行干预的。

此外,传统分布式架构不是为云设计的,而且缺乏所必需的软件基础设施,核心支撑组件是也是面向主备设计的,这些都是传统分布式架构的缺陷。

通向末日山之路:构建下一代分布式架构

2

伫立在安都因河上的阿苟那斯雕像,刻画的就是伊西尔铎、安纳瑞安二人。精灵和人类组成最后联盟,向索隆开战。最后一战中,索隆杀死吉尔-加拉德和伊伦迪尔,伊伦迪尔之剑碎裂,也是的阿拉贡的佩剑,当时由埃尔隆德重铸,其子伊西尔铎用断剑斩断索隆戴魔戒之王的手指,索隆战败,伊西尔铎受至尊魔戒蛊惑,没有将其摧毁。第二纪结束。

Kubernetes中的一些设计初衷,完全以弥补传统分布式架构的不足出发,背后体现了我们在向未来进发时,必须完全割舍那些在传统架构设计中固有经验与过时理念的吸引与诱惑的决绝。未来的当属未来,过去的就让它过去。回顾Kubernetes的架构,引⼈人注目的地方很多,例如:

1. 构建一个适合于被机器管理的控制平面

这个控制平面用于保障整个应用系统的可用性、确保总体计算资源处于期望中的利用率,以及为计算资源建立抽象接口从而解放开发者,众所周知这个控制平面的前身是Borg,而在Borg之前,这种设计思想仅存在于论文与少数原型系统中,并没有一个能够运行并支撑如此大规模的生产系统的先例,这种设计思想过于前瞻,以至于在10年之后仍然是一种惊艳的设计:强化机器控制从而简化工程复杂度,从技术上可以另行构建一个分布式系统做为支撑分布式系统的分布式系统,从而达到使多数工程师(夸张了一点)都能够开发运行其上的大规模复杂分布式系统的能力。从Borg的架构设计上我们能够一眼看出来Google与亚马逊在总体工程技术上的风格差异,两者都具备顶尖的工程技术能力,但是两者企业基因的差异又使其在技术风格上截然不同,

AWS长于快速构建大规模面向用户的商业系统,无论是ToB还是ToC,随后逐步优化,毕竟曾经建立了全球最大的电商平台,运营能力更为领先。Google善于构建面向机器与工程师的大规模分布式系统,等成熟之后再挖掘商业支撑能力,平台架构能力更加突出。在进入未知领域,没有任何固有经验可循时,两者都擅长于另辟蹊径,具 备当仁不让、舍我其谁的气魄与自信,在这一点上不分伯仲。

2. 采用一种技术架构风格统一控制平面与业务平面

那就是集群的架构风格,不再采纳数据库系统来持久化数据,而是通过社区生态构建ETCD这样的服务来负责持久化状态数据。

3. 从设计之初就考虑控制平⾯面的可用性与业务平面的可用性

护戒使者:凝聚开源社区力量、而不是孤身犯险

3

安格玛巫王向埃阿努尔提出单挑,但埃阿努尔拒绝。七年后,安格玛巫王再次发出单挑请求,这一次,埃阿努尔答允。埃阿努尔单骑到达位于魔都的米那斯魔窟,自他走进米那斯魔窟的大门后,就再也没有人看见过他。葛罗芬戴尔曾经阻止过他,并预言道: “没有任何男子能击倒他“,但是显然,埃阿努尔没有牢记在心。多年以后回过头来Google在面临AWS的挑战的时候并没有丧失理智尝试以一己之力去对抗,而是在Kubernetes周围聚集了一批护戒使者。

于很多人来说,魔戒永远是奇幻文学中不可逾越的史诗巅峰,Kubernetes是否能在分布式架构中荣拥同样的荣耀?我们将在接下来的三部曲中揭晓。

来源:业界供稿

0赞

好文章,需要你的鼓励

2017

08/22

20:21

分享

点赞

邮件订阅
白皮书