微信号:ucloud2012

介绍:UCloud(优刻得)是一家基础云计算(IAAS)专业服务商,我们专注于IAAS(基础架构云计算)的产品研发与运营服务.为您提供最新的云计算行业资讯.

Serverless:云计算的未来趋势

2017-08-16 16:46 UCloud云计算


作为新兴云计算服务交付模式,虽然Serverless并没有覆盖所有场景,但它代表着未来的一种发展趋势。在上半部分文章里,已经介绍了Serverless的概念,本文将介绍Serverless的工作原理,与非Serverless方案对比的不同特点,以及使用Serverless前需要了解的适用场景等。


Serverless如何工作?

以一个简单请求为例,论坛网站需要对用户上传的图片生成一个缩略图,使用UCloud的通用计算(UGC)来实现该功能。

如上图所示,使用UGC实现这一功能操作步骤如下:

1. 用户将缩略图算法代码打包推送到UGC算法仓库中;

2. 用户从UFile中读取原始图片作为输入数据,调用UGC SubmitTask API,指定缩略图算法;

3. UGC平台执行缩略图转换算法,将转换后的缩略图返回给用户;

4. 用户将得到的结果缩略图存储到UFile中。


整个过程中,开发者只需要将缩略图算法实现函数代码镜像提交到UGC算法仓库中,然后调用UGC的提交任务API,输入源图片数据,即可获得计算结果。 

从这一过程可以总结出:使用Serverless,开发者无需考虑服务器细节,只要负责编写发生某些事件后所需执行的代码即可;云供应商将负责提供用于运行这些代码的服务器,并在必要时对服务器进行缩放;执行完毕后,承担这些功能的容器会立刻停用,用户仅需为运行代码过程中所消耗的资源付费。这种模式也被称作函数即服务(Function-as-a-Service,FaaS)。

与非Serverless方案对比

上述场景如果使用非Serverless方案,基本架构如下:

该方案需要维护一组UHost服务集群,服务器中部署图片缩略转换程序。UHost的服务程序先从UFile中读取源图片,使用图形库将其转换成缩略图并再存回UFile中。相比前述Serverless方案,有以下几点不同:

一、开发者需要关心服务器端程序开发设计,将图片处理程序部署成服务端程序,购置服务器部署并运维管理这批UHost服务器。而使用UGC,开发者无需关注服务器端,只需要将图形库函数提交到UGC算法仓库中,调用UGC API完成计算任务即可。

二、UHost集群无法为突发流量自动伸缩扩容,需要运维工程师手动购置更多UHost并部署上线扩容。但UGC能根据突发流量自动伸缩,运行更多函数容器。

三、UHost服务器只要运行就必须为之付费,无论请求量和负载高低。UGC只需要为实际调用次数和函数实际执行时间付费,真正实现了按需分配付费。

Serverless相比PaaS的特点

相比PaaS,Serverless具备以下几方面优势:

一、开发者无需关注服务器程序设计、部署和运维管理,开代码重心从此转移到调用方而非服务器端。

二、更精细粒度的计费模式,真正实现了按需付费(Pay as you go)。使用PaaS托管应用,无论访问量或负载高低,只要将应用部署上去就都需计费;而使用Serverless,用户只需为函数真正调用到的次数和执行时间付费。

了解Serverless适用场景

Serverless平台运行代码函数的片段,而非整个程序,例如生成缩略图场景中,UGC仅运行用图形库处理图片这段代码。

代码必须做彻底的无状态改造。Serverless平台会自动为突发流量扩展运行函数代码所需要的容器,但用户代码中无法得知其容器的部署环境情况。两次Serverless调用必须是非耦合无关联的。

用户无需关注水平扩展,Serverless平台会自动根据调用量扩展运行代码所需要的容器,轻松做到高并发调用。

只需要上传代码文件或者代码容器镜像即可完成应用部署。

代码运行的生命周期非常短暂,通常Serverless服务商会限制代码的最大运行时间,例如AWS Lambda为5分钟。

每次Serverless调用,Serverless平台都会启动容器来运行对应代码,调用结束后将容器销毁,因为容器创建存在一定开销,所以Serverless不太适合对延迟要求极其苛刻的场景。

 不是“银弹”

虽然Serveless架构在某些场景下拥有明显优势,但它不是解决一切架构问题的灵丹妙药,更不是传统架构的革命者和替代者。从架构上来说,它更像是一种粘合剂,以下是部分常见不适用Serverless的场景。

Serverless平台需要为每次FaaS调用创建一个容器运行对应代码。前面提到过,由于创建容器并初始化代码运行环境存在一定程度的开销和延时(通常在10ms级),因此Serverless架构难以胜任对延迟要求非常苛刻的场景。

同样的,由于启动容器进程开销较高,Serverless架构难以应对非常高的并发请求场景。通常云服务商会对用户的并发调用数做限制,比如AWS Lambda是1000。

通常FaaS平台会对代码运行时间做最大时长限制。如果代码需要运行较长时间才能返回结果,就需要慎重考虑使用Serverless。

由于代码容器在Serverless平台部署位置环境的不确定性,使用Serverless时,必须对代码做无状态改造,如果两次调用存在关联偶合,同样请慎重考虑Serverless。

主流公有云服务商Serverless产品

除了众所周知的AWS Lambda,目前常见的Serverless产品还有UCloud的通用计算UGC(详情请参见官网:https://www.ucloud.cn/site/product/ugc.html)。

UCloud通用计算UGC具备以下特性:

1. 用户无需关心计算资源的交付部署,以用户算法代码为中心;计算资源服务化,用户通过API使用计算资源。

2. 按需付费(Pay As You Go),用户仅需为实际消耗的计算资源付费。

3. 提供十万核级的海量计算资源,轻松支持高并发计算任务请求,自动实现资源分配和扩展。

4. 具备高可用和跨可用区自动容灾能力。

作为UCloud研发的分布式大规模并行计算服务,UGC能够充分利用UCloud多个区域内的多个可用区计算资源,提供基于UCloud云平台的高可用性和高并发性,同时满足图片处理、机器学习、大数据处理、生物数据分析等领域的计算需求。

Serverless是一种构建和管理基于微服务架构的完整流程,代表无服务器计算技术崛起,是云计算未来发展重点方向之一。


相关文章

深入理解Serverless架构︱新兴云计算服务交付模式




点击“阅读原文”,了解UCloud  Serverless产品—UGC相关信息。

 
UCloud云计算 更多文章 安全预警:Xshell、Xmanager系列软件被植入后门,服务器密码存泄露风险! 混合云专场 | “UCan下午茶”北京站免费报名倒计时 与Serverless第一次亲密接触:你所不知道的UGC 联通“沃+海创”开放数据应用大赛火热进行 UCloud安全屋为数据安全共享护航 微云影像:告诉你医学影像的黑科技——UGC
猜您喜欢 Flask Repo: Flask-Admin Espresso实战:快速的Android UI自动化测试 2015乌云白帽子节感受黑客文化 理解网络IO模型(三) 大数据公司的获客路径,也许一开始就跑偏了