在云时代,X86架构无戏可唱!
虽然如今有着40年历史的x86架构是公共云领域的王者,但它在未来的应用程序部署中很可能成为一种过气的遗留系统。
虽然计算机行业发展史上有好多里程碑,但很少有哪几个像推出英特尔8086微处理器这么重要,这种16位CPU为客户端/服务器多层系统架构奠定了基础,这种架构如今主导着几乎每个IT环境。现在离这款微处理器在1976年投放市场整整已过去了40年。
除了IBM大型机外,没有哪一种计算系统架构能够这么长久地持续而广泛地使用:IBM大型机由System/360在1964年首次亮相,它使用的代码采用仿真机制,可以在2017年的现代IBM System z系统上运行。
用行业术语来说,重大的模式往往每过5年或10年就转变一次,x86是名副其实的恐龙。
虽然英特尔x86架构是伴随1976年8086微处理器的推出而首次发布的,但是直到1981年,8088这款8位衍生产品才被选择用于第一代的IBM PC。
随着一代代PC不断演进,x86架构催生出了286、386(这是第一款32位版本)、486、奔腾、奔腾Pro、奔腾II、奔腾III和奔腾4等等。
通常认为,我们现在面临的是第七代Intel x86架构。
自1981年以来,IT行业已发生了很大的变化。仅举几个例子:工作组局域网、PC服务器、企业服务器、多层应用程序、广域网、广泛使用的互联网、虚拟化,以及现在的云。
更不用说数量呈爆炸式增长的移动设备了,我还没有提到开源革命以及与软件开发方法和多代编程语言有关的另外诸多变化。
在云端,x86仍然是王者。这个现象的原因是,如今在公共云上运行的工作负载主要基于基础设施即服务(IaaS)。
在日益基于云的超大规模、容器化的世界,x86是否仍然是一种有效的系统架构?
一些企业组织正在将本地工作负载迁移到云端,或者处理混合型工作负载,对它们来说,使用IaaS模式最明智,因为这不需要对应用程序进行全面的重新设计或重新开发架构。
在IaaS中,你完全可以像在数据中心中那样对云架构上的整个操作系统映像进行虚拟化处理,还可以设置虚拟网络和存储,以模拟现有的本地环境。
可能需要进行某些改变,才能采用用来优化资源使用的自动化技术以及安全和身份管理,不过总体而言,云端运行的工作负载在IaaS中处理起来就像在传统数据中心中那样。这就是IaaS的魅力所在。
可问题是,IaaS是运行云工作负载的一种极其低效的方法。它是资源非常密集型的,换句话说,最终客户的计费成本很高,除非进行上述的针对资源使用的工作负载优化。并不是每个应用程序都可以以这种方式来优化。
公共云对每个打开并运行的虚拟机计费,不管CPU的利用率怎样。虽然“基本”的存储异常便宜,按GB数量计费,但高性能的“高级”存储(比如Azure中提供的那种存储)按固态硬盘(SSD)计费,无论你有没有使用全部资源。
然而,平台即服务(PaaS)工作负载的成本要低得多,那是由于云服务提供商让你可以在应用编程接口(API)层面、而不是在虚拟机层面来访问。按照你使用了多少API调用或事务来计费,因此这种计费模式更像基于公用计算(utility-based)。
但是PaaS确实需要全面重新考虑如何编写应用程序,它是一种“诞生在云端”的方法,而不是一种依葫芦画瓢的应用程序迁移方法。于是眼下,运行的PaaS工作负载大多数是云厂商或SaaS提供商编写的交钥匙应用程序和服务,而不是最初在企业环境中编写的应用程序。
它们是全新的东西。
我认为,客观地说,只要IaaS存在,x86平台就会存在。如果在x86系统上运行的工作负载在企业环境中保持相对不变,x86可能在未来会存在很长一段时间。
容器化
然而当下出现了变化。比较热议的技术之一是容器化,这是介于完全虚拟化/IaaS和PaaS之间的一种过渡技术。容器实际上是用来构建PaaS应用程序的基本模块。
容器的效率之所以比虚拟机高得多,是由于它允许用户以极其细化的方式来使用云/服务器资源。容器允许许多应用程序实例在单个操作系统内核实例里面运行,同时使用共享资源和安全构件的克隆实例(以及单独的存储帐户)来构建云多租户环境,这种环境否则需要虚拟机来执行隔离机制。
容器的另一大好处是,容器化的应用程序像zip文件或JAR文件那样“打包”。它们含有运行所需要的一切;只要主机操作系统支持容器化,这些应用程序就可以在无需另外修改、另外配置极少的情况下运行。此外,由于容器主机共享操作系统的单个实例,因此简化了补丁管理及配置方面的其他问题。
容器和主机需要的唯一共同之处是,容器与其开发所依赖的操作系统的类型联系起来,不过就连这个可能也不是一个障碍。
这方面多说一点。
容器可以在虚拟机中或在“裸机上”以虚拟化方式运行。公共云(比如Google Compute、微软Azure和Amazon Web Services)目前使用各自的容器服务和编排引擎,提供了在虚拟机中运行的选项。
从计费和使用的角度以及从配置的角度来看,裸机上运行的容器可能最终比虚拟机更可取,因为你不需要运行一个完备的操作系统映像就可以配置容器。架构(基础设施)由云服务提供商来运行,一直具体到操作系统层面。你只要操心应用程序。
如果它是PaaS或真正的SaaS,作为最终用户,你甚至不用操心/维护应用程序;只要购买订阅服务,即可使用那些资源。
不像如今的公共云IaaS实施方案――除了维护网络和存储外,用户还要负责维护操作系统,SaaS提供商或公共云中的企业最终要管理的将是打包应用程序中的实际代码,它们将在容器实例上运行,而这些容器实例可以根据需要,由编排引擎中设置的规则来增加或减少。
你的基础设施变成了一种真正的设备。
Linux和Unix长期以来针对容器进行了优化,它们可以运行刚刚足够的操作系统(JeOS),以便使用Docker之类的技术,支持容器化的应用程序。除了Hyper-V和Windows Containers外,Windows Server 2016还为Nano Server 虚拟机提供了部署配置,让你可以将操作系统缩减至无外设、轻量级的JeOS实例。
x86变得无足轻重?
这对于x86在云时代的江湖地位来说意味着什么?这意味着一切!
在企业中运行的许多应用程序是针对在架构上依赖x86指令集的旧代码编写的。现代应用程序则不然。
相反,它们是用高级抽象编程语言编写的,使用的API并不直接引用系统架构。这方面的例子包括.NET、Java和许多脚本语言,比如Ruby、Python,当然还有Javascript。
如果应用程序与架构无关,为什么要在x86上运行?我想我们现在要问这个问题:在日益基于云的超大规模、容器化的世界,x86是否仍然是一种有效的系统架构?为什么要继续把所有那些与遗留系统兼容带来的麻烦与我们一同进入到下一种计算模式?
九年前,我开始为ZDNet撰稿时,就提出了同样这个问题,那时候,我认为考虑同时为PC和数据中心开发一种新的系统架构是个好主意。
英特尔当时与惠普合作,确实为企业计算开发出了一种替代的系统架构,那就是IA-64:安腾。
虽然IA-64是一种高性能的CPU架构,但生不逢时――全世界仍然靠使用Win32平台的依赖x86的代码来运作,面向IA-64的Linux移植版和工具链缺乏许多功能,没有与开源社区步调很一致地共同开发。
开源社区而是团结在x86-64周围,这种架构是随AMD皓龙处理器一并推出的。最终,英特尔发布了自己的64位x86,拥有几乎完全相同的指令集,业界对IA-64的兴趣日渐减弱。
更何况,IA-64芯片相比至强和皓龙芯片来得非常昂贵,没有针对大多数常规工作负载进行优化。IA-64今天只是一种小众处理器,用于使用惠普Superdome服务器的高端UNIX计算环境。
然而,有一种替代的系统架构完全针对低成本云计算进行了优化,那就是ARM Cortex。它还拥有许多架构许可证,包括三星、台积电、苹果、高通和华为,没错,还包括微软和英特尔。
长期以来,Linux一直在ARM上运行。如果你使用Android手机,它很可能有ARM处理器,在Linux内核上运行。除了Windows Mobile/Windows Phone外,对注定要失败的Surface 1和Surface 2平板电脑而言,Windows 8.1和NT内核被移植到了ARM;微软最近宣布,Windows Server也将被移植到高通片上系统(SoC)上的ARM架构,用于其Azure公共云。
如果你将即便速度最快的ARM SoC的性价比和总体拥有成本与价格最便宜的英特尔i3或Atom相比较,没法比,更不用说将它们与服务器级的英特尔或AMD芯片相比较了。
虽然英特尔PC和服务器芯片近些年来已经变得节能多了,但是打造性能相当的服务器的ARM芯片组在部件成本和相对性能方面却击败英特尔芯片。
你有可能将成千上万个针对数据中心优化的ARM CPU安装到云架构上,而成本只有性能相当的低功耗英特尔芯片的一小部分,如果你在谈论像微软、谷歌或亚马逊这些以超大规模数量来购买芯片的云服务提供商,更有可能这样。
更高的密度和更低的数据中心成本意味着可以大幅降低计算成本,如果最终客户只需要管理应用程序容器代码,而不是主机操作系统,这方面的优势来得更明显。
如今,云是IaaS和x86的天下。明天,很可能是容器、PaaS和ARM当道。一旦ARM上的容器服务器实例其成本变成只有性能相当的x86虚拟机的四分之一,甚至八分之一,这种模式将发生变化,到时x86将会沦为只用于处理小众的遗留工作负载,其境遇就像现在的IBM System z一样。
云头条编译、未经授权谢绝转载
相关阅读:
Gartner:2016年服务器虚拟化基础设施魔力象限|「云头条」