vimarsana.com
Home
Live Updates
这是你所了解的FaaS 么?——无服务计算的10个思考_我相信......-CSDN博客 : vimarsana.com
这是你所了解的FaaS 么?——无服务计算的10个思考_我相信......-CSDN博客
另一种定义无服务计算的方法是通过它所支持的功能。这种方法强调“无服务计算实际上是一种服务托管”,而 FaaS 可以被视为云胶水,它是连接由云服务组成的应用程序的粘合剂。
实际上,“无服务计算”这个名称并不意味着不使用服务器,而只是说开发人员可以把管理服务器和其他资源的大部分操作留给云服务提供商,包括供应、监视、维护、可伸缩性和容错性。
2. 无服务计算与X-aaS 的辨析
追溯“无服务”这个术语的最初含义,即不使用服务器,通常指的是对等(P2P)软件或者只针对客户端的解决方案。在云环境中,无服务计算是AWS在 2014年引入的。无服务计算似乎是随着最近的进步和 VM 和容器技术的采用而自然发展起来的,在这些技术中,每一步抽象层都会导致在资源消耗、成本、开发和部署速度方面更轻量级的计算单元。
此外,无服务计算建立在分布式系统、发布-订阅系统和事件驱动程式设计/服务模型的长期趋势和进步之上的。
2.1 Serverless vs. IaaS
另一方面,在无服务平台上部署这样的应用程序具有挑战性,需要将设计决策交给平台提供者,这些平台提供者关心服务质量(quality-of-service,QoS)监控、伸缩性和容错性等属性,存在应用程序的需求可能演变为与平台功能冲突的风险。
2.2 Serverless vs. PaaS
向消费者提供的能力是将消费者创建的或获得的应用程序部署到云基础设施上,这些应用程序是消费者使用提供者支持的编程语言和工具创建的。使用者不管理或控制基础云基础设施,包括网络、服务器、操作系统或存储,但控制已部署的应用程序以及可能的应用程序托管环境配置。
在此定义中,用户需要管理应用程序的部署,并控制宿主环境配置。
与 PaaS 的定义相比,无服务器 FaaS 正在取消用户对托管的控制,以提供更简单、更有吸引力的计费模型: 云服务提供商控制托管环境的配置,只在调用时运行用户提供的代码,只运行实际使用的代码,同时隐藏扩展的复杂性(实际上在 PaaS 中实现自动扩展并不容易,而且很难扩展到零)。与上一代平台服务协定(可被视为第一代平台服务协定)相比,这是一个重大变化,对于不需要为闲置资源付费和避免管理自动调整规则的平台服务用户来说,这非常具有吸引力。
无服务器平台的主要区别在于,只有在代码运行时,才会进行透明的自动缩放和细粒度的资源收费。这不应与免费使用配额混淆,后者每月可用的资源配额有限,但即使没有使用该应用程序,也会被计算在内。例如,GAE Standard 以“ instance hours”f 定价,即使没有使用应用程序,也会保持实例运行。后来,GAE 添加了具有更细粒度计费单元的 Flexible 版本,但即使没有使用服务器,开发人员仍将收到账单。这可能会导致意想不到的结果,当账单在月底到来的时候,忘记了测试服务
2.3 serverless vs MBaaS
2.4 serverless vs SaaS
软件即服务(Software-as-a-Service,SaaS)可能支持服务器端执行用户提供的功能,但它们是在应用程序的上下文中执行的,因此仅限于应用自身的领域。有些 SaaS 供应商允许集成托管在其他地方的任意代码,并通过 API 调用进行调用。
无服务计算的边界与 PaaS 和 SaaS 有所重叠。对无服务计算进行分类的一种方法是考虑开发人员对基础结构的不同控制级别。在 IaaS 模型中,开发人员对资源有更多的控制权,但是同时负责管理应用程序代码并操作基础设施。这使得开发者有很大的灵活性,并且能够定制应用程序和基础设施的各个方面,例如管理虚拟机、管理容量和利用率、分级工作负载、实现容错和高可用性。PaaS 抽象出虚拟机,负责管理底层操作系统和容量,但是开发人员负责平台部署和运行的代码的整个生命周期。SaaS 代表了另一个极端,开发人员无法控制基础设施,只能访问预先打包的组件。开发人员可以在那里托管代码,但这些代码可能与平台紧密耦合。BaaS 与 SaaS 类似,其功能针对特定的用例和组件。
3. 无服务计算的系统架构——FaaS
3.1 架构特点
虽然架构相对简单,但是在实现这些功能的同时考虑诸如成本、可伸缩性、延迟和容错性等指标是一个挑战。为了在多租户环境中隔离不同用户的函数执行,经常使用容器技术,比如 Docker。
事件到达后,FaaS平台需要验证事件,确保其具有适当的身份验证和授权以执行。它还检查该特定事件的资源限制。一旦事件通过了验证,事件的平台就会排队等待处理。工作线程获取请求,分配合适的容器,从存储器中复制函数/使用代码到容器中,并执行事件。该平台还管理空闲函数实例的停止和释放资源。
3.2 架构约束
在典型的无服务云产品中,客户只允许配置分配给函数的主内存大小。系统将根据主存大小按比例分配其他计算资源(例如 CPU)。内存越大,CPU 分配越高。资源使用是以较小的增量(例如,100毫秒)进行度量和计费,用户只需为其函数运行时使用的时间和资源付费。
业界可以使用一些开源的无服务器计算框架(例如 Kubeless、 OpenLambda、 OpenWhisk、 OpenFaaS等等)。此外,主流的云供应商已经为消费者提供了公开的商业无服务计算框架。虽然这些平台的一般属性(例如,内存、并发调用、请求的最大执行持续时间)相对相同,但每个云服务商设置的限制是不同的。需要注意的是,这些属性的限制随着云服务商采用新的特性和优化而不断变化。
4.无服务计算的编程模型——FaaS
Action 是一个执行任意代码的无状态函数,可以在调用者/请求不期望响应的情况下异步调用操作,或者在调用者期望作为操作执行结果的响应的情况下同步调用操作。
Trigger 是来自不同来源的一类事件。可以通过 Rest API 直接调用操作,也可以基于触发器执行操作。事件还可以触发多个函数(并行调用) ,或者动作的结果也可以是另一个函数的触发器(连续调用)。一些无服务框架为开发人员提供了更高层次的编程抽象,比如函数打包、排序和组合,这可能使构建更复杂的无服务应用变得更容易。
4.1 编程模型的约束
目前,无服务器框架执行一个单独的 main 函数,该函数以字典(例如 JSON 对象)作为输入,并生成一个字典作为输出。它们的表现力有限,因为它们是按比例构建的。为了最大限度地扩展,无服务器函数不会在执行之间维护状态。相反,开发人员可以在函数中编写代码来检索和更新任何需要的状态。该函数还能够访问表示函数运行环境的上下文对象(例如安全上下文)。
4.2 编程语言的支持
由于无服务计算功能的局限性和无状态性,以及它对API组合的适应性,云服务商正在提供一个增值服务的生态系统,支持开发者可能需要的必备功能。例如,一个函数可能需要从持久存储中检索状态,另一个函数可能使用机器学习服务来执行一些文本分析或图像识别。虽然无服务计算保证了功能本身可以扩展,但底层存储系统本身必须提供可靠性和服务质量保证,才能确保平稳运行。
5.无服务计算的工具和框架
几乎所有的云服务商都为流行的 IDE 提供了基于云的 IDE,或者扩展/插件,允许开发人员编写和部署无服务计算的函数。另外,一般还提供了一个带有 SDK 的本地容器化环境,允许开发人员在将本地无服务器功能部署到云环境之前进行开发和测试。
为了支持调试,开发人员可以使用运行日志,例如, AWS 就有公交允许开发人员检测问题的潜在原因。
最后,还有一些开源的框架,允许开发人员定义函数所需的无服务函数、触发器和服务,这些框架将处理相关的部署。
6.无服务计算的典型用例
Netflix 使用无服务计算来处理视频文件。这些视频被上传到 Amazon S3,会发出事件触发 Lambda 函数,将视频解码,并以不同的格式并行转码。该Lambda 函数是完全无状态和幂等的,它的优点是在出现故障时(例如S3上文件的网络访问问题) ,可以在没有副作用的情况下再次执行该函数。
这个例子相对简单,通过将无服务计算与云服务商的其他服务相结合,可以开发更复杂的应用程序,例如,流处理、动态过滤和转换数据、聊天机器人以及 Web 应用程序。
6.2 API 组合
举个例子,一个移动应用程序,它依次调用地理位置、天气和语言翻译 API来为用户当前位置提供天气预报。可以使用一个简洁的无服务计算函数来调用这些API。因此,移动应用程序避免了在一个资源受限的移动网络连接上调用多个API,并将过滤和聚合逻辑转移到后端。
需要注意的是,main 函数是一个调度器,它在调用另一个函数之前等待来自一个函数的响应,因此在函数在等待 i/o 时会产生执行成本。这种称为无服务计算的反模式。
无服务计算的编程方法是每个 API 调用封装为一个函数,并按顺序调用这些函数。这个序列本身就是一个复合函数,相当于一种编排服务。更复杂的编排可以使用 类似AWS 提供的其他服务来防止无服务计算的反模式,但是可能会因为其他服务而产生额外的成本。
6.3 密集计算
无服务计算对密集计算是非常有用的,能够运行函数,不用担心缩放且按需付费。性能接近于专门的优化解决方案,并且可以在科学计算的普遍环境中完成,比如 Python。
例如,利用FaaS框架来帮助用户避免运行 MapReduce 作业的开发和管理开销。它可以从 AWS Lambda 获得高达40TFLOPS 的峰值性能,使用 AWS S3进行存储和缓存,具体可以参考 https://github.com/awslabs/lambda-refarch-mapreduce。
如果不能轻松地将工作负载划分为更小的单元(如 Python 函数) ,那么面向批处理的系统(如 MapReduce 集群)才是更好的选择。
6.4 多租户云服务
许多公司的服务都充分利用了云服务。只要有可能,他们就使用现有的云服务,并使用无服务计算构建其功能。在无服务计算之前,他们需要使用虚拟机并创建自动伸缩策略。无服务计算具有几乎无限的按需可伸缩性,允许它们专注于将业务功能,而不是成为云基础设施和服务器管理方面的专家。
7. 无服务计算的云经济学
7.1 成本与机会
云服务商还通过帮助客户满足可变和不可预测的资源需求来获得盈利机会,他们可以从共享资源池中比客户使用自己的专用资源更有效地利用资源。这种机会也存在于无服务计算中,但随着资源在更细粒度的基础上共享而增长,无服务计算可以为云供应商提供提高利润率的机会。
7.2 收益与管控
无服务计算的现收现付模式对于云供应商的创新动机有着重要的积极意义。在无服务计算之前,自动缩放的云服务会自动提供虚拟机,也就是预留资源,但是客户将为这种能力付费,即使它仍然空闲的。使用无服务计算,云提供商为闲置资源支付费用,从而创建了自动缩放的外衣,并提供激励措施以确保有效的资源分配。类似地,云服务承担了对更多应用程序堆栈的直接控制,包括操作系统和运行时,无服务计算模型鼓励在各个层次上对效率进行投资。
更高效的程序员、更低的客户成本、更高的利润、更好的创新都为无服务计算的采用创造了有利条件。然而,一些云客户对供应商锁定提出了担忧,担心在与云供应商谈价格时议价能力下降。服务虚拟机抽象是标准化的,主要是因为 Linux 操作系统和 x86指令集,但是每个供应商的无服务计算和 BaaS API 有着显而易见的区别。由此产生的替代成本使最大和最成熟的云供应商受益,并激励他们推广对事实上的标准化有抵触的复杂API。
简单和标准化的抽象,也许是由小型的云提供商、开源社区或者学术界引入的,将会消除无服务应用中最突出的经济障碍。
8.1 云计算的一般认知
相比之下,运维人员的工作发生了巨大的变化。安装和维护服务器、存储和网络基本上已成为过去,取而代之的是通过云服务商的API 管理虚拟化基础设施,以及强调变更管理的 DevOps。
Related Keywords
Vietnam
,
Republic Of
,
Taiwan
,
,
No Service
,
Start No Service
,
Economics No Service
,
Microsoft
,
Service Or
,
It No Service
,
Junior
,
Service The Agreement
,
Service It
,
Other Service
,
Management Mission
,
Service Application
,
Service Chamber
,
Service Management
,
Pr Service
,
Or Service
,
State Service
,
Management Application
,
State The
,
Code For
,
Genesis Metropolis
,
Yet Universal
,
Estate Management
,
Transaction Yet
,
Start New
,
வியட்நாம்
,
குடியரசு ஆஃப்
,
டைவாந்
,
இல்லை சேவை
,
மைக்ரோசாஃப்ட்
,
சேவை அல்லது
,
ஜூனியர்
,
சேவை அது
,
அதர் சேவை
,
சேவை விண்ணப்பம்
,
சேவை அறை
,
சேவை மேலாண்மை
,
ப்ர் சேவை
,
அல்லது சேவை
,
நிலை சேவை
,
மேலாண்மை விண்ணப்பம்
,
நிலை தி
,
குறியீடு க்கு
,
நிலை மேலாண்மை
,
தொடங்கு புதியது
,
vimarsana.com © 2020. All Rights Reserved.