写点什么

流式基础设施 -- 云基础设施的未来

用户头像
俞凡
关注
发布于: 1 小时前
流式基础设施--云基础设施的未来

软件正在吞噬一切,云正在吞噬一切。作为云服务基础设施供应商,灵活性将成为第一原则,整个云基础设施将围绕提供更强的灵活性而架构。无论是中心云还是边缘云,其目标都是为了提高资源(计算、存储、网络)的有效利用和调度,让应用可以随时随地随需的访问到所需的资源,真正实现 IT 资源的基础设施化。这篇文章介绍了对于未来更灵活的基础设施的一些思考和可能的原则,原文链接:THE FUTURE OF INFRASTRUCTURE IS FLUID


以下为正文:


灵活性就是力量,一种比蛮力更巧妙的力量。


当今所有系统(无论是运输系统、食品生产系统,还是世界上数百万公司的数据中心)几乎都会被一件事情所困扰,那就是静态资源规划。系统架构师必须进行容量规划,并提前以不同的形式和规模提供冗余容量。

如果我们不用再这么做了呢?如果从应用程序的角度来看,服务器是真正逻辑化的、可扩展的、几乎是无限可配置的,那会怎么样呢?那意味着我们不单单可以将一些大型业务逻辑切分成小块的(就像服务器虚拟化和容器化那样),并以不同的工作负载跑在不同的机器上,从而提升整个系统的利用率,而且可以在需要的时候动态组合出一台大型机器。如果计算、网络和存储资源都可以提供这种可组合性,那会怎么样呢?


这就是我们所期待的未来——也许在下一个下一代平台,或者下下个下一代平台,但距离已经足够近了,我们甚至可以看到它模糊的身影已经出现。


过去,人们不谈论服务器。在互联网商业化以及它所代表的分布式计算技术以及信息技术出现之前,数据处理行业的人谈论的是系统,主要是指一个单一的、拥有完整计算、存储、网络资源的、可以完成一项或多项任务的系统。这个系统也许在白天运行一个数据库管理系统、处理在线事务,在晚上大家都睡着的时候,运行批量账单报表或分析报告。服务器这个术语是恰当的,它通常被理解为通用系统的一部分,当然对于很多小企业来说,一个服务器就可以是整个公司的所有系统。


这种物理服务器是完全独立的,具有确定数量和种类的计算、存储和网络能力。虽然可以在一定范围内调整资源数量,但仍然受限于服务器支持的 CPU 插槽和 I/O 通道的数量,只能在一个相对固定的范围内调整。另外,我们也可以把这些东西和 NUMA 芯片组绑定在一起来创建一个大型系统,从而拥有更多资源,但这仍然是有限制的,而且创建大型共享内存系统的成本是非常高的。很多高性能计算(HPC)、人工智能和数据存储应用需要创建或消费数量巨大的数据集,这些数据集是如此之大,只能被分散在集群中的多台机器上,通过 MPI 或其他一些应用服务或内存共享机制以一种相当松散的方式组合在一起。还有一些工作负载,如 Web 服务和移动应用服务,在并行处理上稍微有点尴尬,因为这种工作负载虽然可以在计算层面上并行,但却需要在存储或数据库访问层进行耦合。最终,IT 企业试图确定运行特定工作负载需要的一台(或者多台)物理服务器的特定规格和容量。


将来,我们就不需要在乎这些了。我们通过可切割、可组合的基础设施,像搭乐高玩具一样将系统的不同模块连接在一起,就像画一个带有自己数据结构的流程图一样。


将来,我们不需要在服务器级别提供冗余资源(但可能在数据中心级别还需要一些冗余),甚至不会像现在的公有云那样创建预先配置的虚拟机实例类型。以前,我们有来自 OEM 和 ODM 的数千种可用的物理服务器配置,现在,我们有来自大型公有云的数千种实例类型,天知道在本地云设备中有多少 VM 类型。这是一种进步,因为多云基础设施有助于将组件的利用率提升到峰值的 60%甚至 70%,既留有一定冗余,同时还节约了 30%到 40%的经费,可以买点别的东西,比方说冷却系统啥的。


在我们梦想的理想世界里,宇宙的中心将是一个 DPU,它将计算和存储引擎的网络访问虚拟化。不,我们没有说反。挂在 DPU 上的是串行处理器,内存大但处理速度慢,我们称之为 CPU。这些串行 CPU 将混合使用内存插槽中的 DDR 和 PMEM 内存,甚至会混合使用小容量、快速的 HBM 内存,以加速某些功能。这些 DPU 拥有 PCIe 接口,甚至 PCIe 交换机,可以和一组串行 CPU 或者并行 GPU 直连,访问它们的 HBM 内存,或者连接到 FPGA 数据流加速器以及访问它们的 DDR、HBM 内存。PCIe 交换机可以将这些设备链接到本地存储,比如 NVMe 闪存、Optane 或其他 PCM 持久化存储器。在理想情况下,本地存储或者跨节点存储都可以通过 PCIe 网络访问。大量存储设备可以组成存储池,或者称之为内存服务器,可以通过不同的存储协议(快速光交换互联协议、Gen-Z 协议或者类似 IBM 正在做的 Powqer10 处理器及其内存区域网络)远程访问。


让我们再稍微探讨一下。我们大多数人谈到可分割和可组合时,考虑一下 CPU、内存、存储和 I/O 的物理分割,可以用位于固件和中间件之间的某个模块对它们进行重组。解耦 CPU 和内存是很有用的,但由于一些复杂的原因,这是最难完成的任务。


我们已经意识到,也许所有这些组件都可以像以前一样塞到一个服务器中,或者可以通过 PCIe、高速 InfiniBand 或以太网进行组合,提供类似在一个服务器中的使用体验。例如,使用 NVMe 闪存,我们可以访问服务器内具有与本地闪存相同延迟的任何外部闪存。所以谁会在乎它到底在哪儿呢?同样的道理也适用于其他设备和各种互联设施。也许你可以创建一个只有 CPU 的应用服务器,一个有一些 CPU 和闪存的存储服务器,一个有很多 GPU 或 FPGA 的加速服务器,然后使用软件(比如 GigaIO、Liquid 和 TidalScale 提供的在网络上创建任何大小和各种类型的加速节点的 NUMA 系统)把这些服务器组合起来。这台逻辑“服务器”可以很好地将所有元素都囊括在一个物理服务器中,或者分布在多个物理服务器上。这就像把所有 CPU 和它们的内存都放在一个机架中,所有 GPU 放在另一个机架中,所有 FPGA 放在它们自己的机架中,所有闪存放在另一个机架中,然后通过四个机架组成一台服务器。只要 PCIe 总线能把它们在逻辑连接在一起,谁又在乎它们在物理上的位置呢?


当我们思考流式基础设施的未来时,我们看到了一些原则。


通用性很重要,只是不再局限于 X86 CPU。没有什么比买一件非常昂贵但只适合一种用途的东西更糟糕的了。我们坚信任何设备都可以用于多种不同的工作,只不过有时候对于某种工作的表现可能不是最好的。系统架构师必须根据运行时间、开销和工作负载进行优化,拥有最快、最专用的 ASIC 可能不如拥有一个更通用的设备来的更重要,通用设备可以适应不断变化的场景。一个设备能做的事情越多越好,这就是为什么我们喜欢 CPU 和 FPGA,以及为什么我们也喜欢 Nvidia 的 Ampere A100 加速器,它可以很好地进行可视化、虚拟桌面、机器学习推理、机器学习训练、数据库加速,以及高性能计算仿真和建模。


只在有必要时使用硬件,否则尽量使用软件。只要可能,计算、网络和存储功能都应该在能够提供合理性能的软件中实现。如果你必须要加速某些东西,那就使用最通用、可塑性最强的计算引擎或 ASIC 来完成。这可能意味着我们要坚持使用 CPU、GPU 甚至 FPGA 来实现某些功能。


不要在数据中心里部署任何私有设备。这是上述原理的必然结果。在任何可能的地方,将控制面与应用面和数据面分离。使用存储层、网络层、虚拟化层或容器层,尽可能多地跨越架构。不要鼓励私有行为,也不要把自己锁定在私有设备里。


确保每个计算和存储设备都可以访问网络。无论把设备放在哪里,都不要孤立的是用那个它们。支持各种各样的网络连接协议可以扩大设备的实用性,提高设备的利用率。不要吝惜联网,要意识到联网的成本应该是一个完整系统价值的四分之一,因为联网将使利用率从 25%或 30%提高到接近 60%或 70%。如果你能正确的连接,你将会购买更少的硬件并在更短的时间内完成更多的工作。


现在就可以开始验证,尽早向可组合基础设施供应商提供反馈。这也许是最重要的事情。虽然可分割和可组合性仍处于起步阶段,但正在迅速成熟,现在是在竞争对手之前开始掌握这项技术的时候了。我们可以帮助推动系统架构往我们想要的方向发展,在这过程中我们也可以有所收获。


封面图片来自https://unsplash.com/@sortino

用户头像

俞凡

关注

还未添加个人签名 2017.10.18 加入

俞凡,在上海、达拉斯生活的技术人,关注高可用架构、高性能服务、5G、人工智能、区块链、DevOps、Agile等。公众号:DeepNoMind

评论

发布
暂无评论
流式基础设施--云基础设施的未来