无服务器Severless计算尽管在不断发展,但是在定义其抽象和实现方面都存在许多悬而未决的问题。我们(大胆地)总结了下一个十年对无服务器计算的五种预测:
如果这些预测成立,则无服务器计算将成为云时代的默认计算范例,在很大程度上取代有服务器的计算,从而结束客户端-服务器C/S时代,就像智能手机带动了PC时代的终结一样。
无服务器计算的抽象模型
无服务器提供一种隐藏服务器的抽象,从而简化了编程和运营模型。
传统现有的云计算几乎没有改变程序员的工作方式,尤其是与它对运营商的影响相比,在云中运行的许多软件与在传统数据中心中运行的软件完全相同。将当今最需要的编程技能与10年前所需的编程技能进行比较,您会注意到,即使随着特定技术的出现和发展,核心技能集的变化也很小。
相比之下,运维工作发生了巨大变化。安装和维护服务器,存储和网络已经成为过去,而不再是通过云提供者API来管理虚拟化基础架构,而是被DevOps运动所取代,后者着重于变更管理的技术和组织方面。
是什么使得在云中进行编程变得困难?
大多数云编程实际变成了分布式系统编程。在编写分布式系统时,程序员必须考虑数据中心的空间范围,各种局部故障模式以及所有安全威胁。这些关注表示“意外复杂性”,它是由实现环境引起的,与“基本复杂性”形成对比,后者是应用程序提供的功能中固有的。
当初高级语言正在取代汇编语言,从而使程序员无需再考虑复杂的机器详细信息,例如寄存器分配或内存中的数据布局。就像高级语言隐藏了CPU工作方式的许多细节一样,无服务器计算也隐藏了构建可靠,可伸缩且安全的分布式系统所需要花费的许多细节。
云计算的两个阶段
简而言之,云计算第一阶段的目标是简化系统管理员工作,第二阶段的目标应该是针对程序员。这一变化要求云提供商承担良好运行应用程序所需的许多运营职责。
在无服务器计算中,程序员使用云提供商提供的高级抽象来创建应用程序。例如,他们可以定义云函数,一种“无状态”函数,可以选择语言如JavaScript和Python编程,然后指定函数如何运行,无论是在响应Web请求或触发事件。他们还可以使用无服务器对象存储、消息队列、键值存储数据库或移动客户端数据同步等等,这些服务集合称为后端即服务(BaaS)。托管云函数服务也称为函数即服务(FaaS),如今统称为无服务器云计算= FaaS + BaaS
无服务器抽象模型的应用
让我们研究大数据处理中的一个示例:一个可能在电子商务环境中出现的简单查询:使用从一百万个类别派生的权重计算平均超过100亿条记录。这种工作负载具有大量并行性的潜力,因此它受益于无限资源的无服务器。
我们提供了两种适合该示例的特定于应用程序的无服务器产品,并说明了该类别如何提供多种方法:
为我们的大数据示例提供高性能解决方案的通用无服务器抽象尚不存在。云函数似乎可以提供一种解决方案,因为它们允许用户编写任意代码,并且对于某些工作负载,但由于限制,它们的性能有时会比其他方法差很多。
如果我们使用云函数,而不是使用特定应用的框架,例如云数据流实现我们的榜样。借助云函数,提供商无需考虑应用程序的通信模式即可在各种VM实例之间分配工作,从而简化了自动扩展,但增加了网络流量。
云函数增强
我们建议了两种增强云函数的途径,以便它们在更广泛的应用程序中良好运行,有可能将它们转变为通用的无服务器抽象。
首先,我们假设程序员可能需要如何获得更好的性能。可能需要描述应用程序通信模式(例如,广播或全部减少),或建议任务放置关联。这种方法在编译器中具有先例(例如,分支预测,对齐和预取提示)。
其次,更令人信服的是,我们设想通过自动优化来消除效率低下的问题。在我们的示例中,云提供商可能会承诺从观察到的通信模式中推断出位置优化。在某些情况下,也可以基于对程序的分析来静态地进行此类推断。在单机环境中,这在现代编译器和语言运行时所做的工作中已有很多先例,并且人们可能会认为这种形式的无服务器计算是对分布式系统的语言支持。
页面更新:2024-04-21
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号