导读

Serverless 架构将成为未来云计算领域重要的技术架构,将会被更多的业务所采纳。进一步深究,Serverless 架构在什么场景下有优秀的表现,在什么场景下可能表现得并不是很理想呢?或者说,有哪些场景更适合 Serverless 架构呢?

Serverless 架构的应用场景

Serverless 架构的应用场景通常是由其特性决定的,所支持的触发器决定具体场景。如图 1-1 所示,CNCF Serverless Whitepaper v1.0 描述的关于 Serverless 架构所适合的用户场景如下。

  • 异步并发,组件可独立部署和扩展的场景。
  • 突发或服务使用量不可预测的场景。
  • 短暂、无状态的应用,对冷启动时间不敏感的场景。
  • 需要快速开发、迭代的业务。



1-1 CNCF Serverless Whitepaper v1.0 描述的 Serverless 架构所适合的用户场景

CNCF 除基于 Serverless 架构的特性给出 4 个适用的用户场景之外,还结合常见的触发器提供了详细的例子。

  • 响应数据库更改(插入、更新、触发、删除)的执行逻辑。
  • 对物联网传感器输入消息(如 MQTT 消息)进行分析。
  • 执行流处理(分析或修改动态数据)。
  • 数据单次提取、转换和存储需要在短时间内进行大量处理(ETL)。
  • 通过聊天机器人界面提供认知计算(异步)。
  • 调度短时间内执行的任务,例如 CRON 或批处理的调用。
  • 机器学习和人工智能模型。
  • 持续集成管道,按需为构建作业提供资源。

CNCF Serverless Whitepaper v1.0 基于 Serverless 架构的特点,从理论上描述了 Serverless 架构适合的场景或业务。云厂商则站在自身业务角度来描述 Serverless 架构的典型应用场景。

通常情况下,当对象存储作为 Serverless 相关产品触发器时,典型的应用场景包括视频处理、数据 ETL 处理等;API 网关更多会为用户赋能对外的访问链接以及相关联的功能等,当 API 网关作为 Serverless 相关产品的触发器时,典型的应用场景就是后端服务,包括 App 后端服务、网站后端服务甚至微信小程序等相关产品的后端服务。

一些智能音箱也会开放相关接口,这个接口也可以通过 API 网关触发云函数,获得相应的服务等;除了对象存储触发以及 API 网关触发,常见的触发器还有消息队列触发器、Kafka 触发器、日志触发器等。

1. Web 应用或移动应用后端

如果 Serverless 架构和云厂商所提供的其他云产品结合,开发者能够构建可弹性扩展的移动应用或 Web 应用程序 ,轻松创建丰富的无服务器后端。而且这些程序在多个数据中心可用。图 1-2 所示为 Web 应用后端处理示例。



1-2 Web 应用后端处理示例

2.实时文件/数据处理

在视频应用、社交应用等场景下,用户上传的图片、音视频往往总量大、频率高,对处理系统的实时性和并发能力都有较高要求。此时,对于用户上传的图片,我们可以使用多个函数对其分别处理,包括图片的压缩、格式转换等,以满足不同场景下的需求。图 1-3 所示为实时文件处理示例。



1-3 实时文件处理示例

我们可以通过 Serverless 架构所支持的丰富的事件源、事件触发机制、代码和简单的配置对数据进行实时处理,例如:对对象存储压缩包进行解压、对日志或数据库中的数据进行清洗、对 MNS 消息进行自定义消费等。图 1-4 所示为实时数据处理示例。

1-4 实时数据处理示例

3.离线数据处理

通常,要对大数据进行处理,我们需要搭建 Hadoop 或者 Spark 等相关的大数据框架,同时要有一个处理数据的集群。但通过 Serverless 技术,我们只需要将获得到的数据不断存储到对象存储,并且通过对象存储配置的相关触发器触发数据拆分函数进行相关数据或者任务的拆分,然后再调用相关处理函数,之后存储到云数据库中。

例如:某证券公司每 12 小时统计一次该时段的交易情况并整理出该时段交易量 top5;每天处理一遍秒杀网站的交易流日志获取因售罄而产生的错误,以便准确分析商品热度和趋势等。函数计算近乎无限扩容的能力可以使用户轻松地进行大容量数据的计算。

利用 Serverless 架构可以对源数据并发执行 mapper 和 reducer 函数,在短时间内完成工作。相比传统的工作方式,使用 Serverless 架构更能避免资源的闲置,从而节省成本。

数据 ETC 处理流程可以简化为图 1-5。



1-5 数据 ETL 处理示例

4.人工智能领域

在 AI 模型完成训练,对外提供推理服务时,基于 Serverless 架构,将数据模型包装在调用函数中,在实际用户的请求到达时再运行代码。

相对于传统的推理预测,这样做的好处是无论是函数模块还是后端的 GPU 服务器,以及对接的其他相关机器学习服务,都可以进行按量付费以及自动伸缩,从而在保证性能的同时确保服务的稳定。图 1-6 为机器学习(AI 推理预测)处理示例。



1-6 机器学习(AI 推理预测)处理示例

5.物联网(IoT)领域

目前,很多厂商都在推出自己的智能音箱产品—用户对智能音箱说一句话,智能音箱通过互联网将这句话传递给后端服务,然后得到反馈结果,再返给用户。通过 Serverless 架构,厂商可以将 API 网关、云函数以及数据库产品结合起来,以替代传统的服务器或者虚拟机等。

Serverless 架构一方面可以确保资源能按量付费,即用户只有在使用的时候,函数部分才会计费;另一方面当用户量增加时,通过 Serverless 架构实现的智能音箱系统的后端也会进行弹性伸缩,保证用户侧的服务稳定,且对其中某个功能的维护相当于对单个函数的维护,并不会给主流程带来额外风险,相对来说会更加安全、稳定等。图 1-7 为 IoT 后端处理示例。



图1-7 IoT 后端处理示例

6.监控与自动化运维

在实际生产中,我们经常需要做一些监控脚本来监控网站服务或者 API 服务是否健康,包括是否可用、响应速度等。传统的方法是通过一些网站监控平台(例如 DNSPod 监控、360 网站服务监控,以及阿里云监控等)进行监控和告警。

这些监控平台的原理是用户自己设置要监控的网站和预期的时间阈值,由监控平台部署在各地区的服务器定期发起请求,进而判断网站或服务的可用性。当然,这些服务器虽然说通用性很强,但实际上并不一定适合。

例如,现在需要监控某网站状态码和不同区域的延时,同时设置一个延时阈值,当网站状态异常或者延时过大时,平台通过邮件等进行通知和告警。目前,针对这样一个定制化需求,大部分监控平台很难直接实现,所以开发一个网站状态监控工具就显得尤为重要。

除此之外,在实际生产运维中,对所使用的云服务进行监控和告警也非常有必要。例如:在使用 Hadoop、Spark 时要对节点的健康进行监控;在使用 Kubernetes 时要对 API Server、ETCD 等的指标进行监控;在使用 Kafka 时要对数据积压量,以及 Topic、Consumer 等的指标进行监控。

对于这些服务的监控,我们往往不能通过简单的 URL 以及某些状态进行判断。在传统的运维中,我们通常会在额外的机器上设置一个定时任务,以对相关服务进行旁路监控。

Serverless 架构的一个很重要的应用场景就是运维、监控与告警,即通过与定时触发器结合使用,实现对某些资源健康状态的监控与感知。图 1-8 为网站监控告警示例。



1-8 网站监控告警示例

更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。

详解 Serverless 架构的 6 大应用场景的更多相关文章

  1. [转帖]万字详解Oracle架构、原理、进程,学会世间再无复杂架构

    万字详解Oracle架构.原理.进程,学会世间再无复杂架构 http://www.itpub.net/2019/04/24/1694/ 里面的图特别好 数据和云 2019-04-24 09:11:59 ...

  2. 【tomcat系列】详解tomcat架构(上篇)

    java中,常用的web服务器一般由tomcat,weblogic,jetty,undertwo等,但从用户使用广泛度来说,tomcat用户量相对比较大一些,当然这也基于它开源和免费的特点. 从软件架 ...

  3. 详解java动态代理机制以及使用场景

    详解java动态代理机制以及使用场景 https://blog.csdn.net/u011784767/article/details/78281384 深入理解java动态代理的实现机制 https ...

  4. 10分钟详解Spring全家桶7大知识点

    Spring框架自2002年诞生以来一直备受开发者青睐,它包括SpringMVC.SpringBoot.Spring Cloud.Spring Cloud Dataflow等解决方案.有人亲切的称之为 ...

  5. 从零入门 Serverless | 一文详解 Serverless 技术选型

    作者 | 李国强 阿里云资深产品专家 今天来讲,在 Serverless 这个大领域中,不只有函数计算这一种产品形态和应用类型,而是面向不同的用户群体和使用习惯,都有其各自适用的 Serverless ...

  6. 详解REST架构风格

    编辑推荐: 本文来自于segmentfault.com,一起了解REST的内在,认识REST的优势,而不再将它当作是“理所当然” 引言 作为Web开发者,你可能或多或少了解一些REST的知识,甚至已经 ...

  7. 详解HBase架构原理

    一.什么是HBase           HBase是一个高可靠.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价的PC Server上搭建大规模结构化存储集群.         H ...

  8. 详解UML中的6大关系(关联、依赖、聚合、组合、泛化、实现)

      UML中的6大关系相关英文及音标: 依赖关系 dependency --------> 关联关系 association ______> 聚合关系 aggregation ______ ...

  9. (cdh)hive 基础知识 名词详解及架构

    过程 启动 hive 之后出现的 CLI 是查询任务的入口,CLI 提交任务给 Driver Driver 接收到任务后调用 Compiler,Executor,Optimizer 将 SQL 语句转 ...

  10. sessionStorage 详解,特点,使用技巧,场景

    很早之前久知道sessionStorage ,也学习过,但没有实战使用过 .最近团队遇到一个问题<electronjs中打开新页面sessionStorage丢失>,让我有机会重新来认识一 ...

随机推荐

  1. 【Javaweb】jsp | 简单学习【笔记保存】

    什么是jsp,它有什么用? jsp的全称是java server pages.Java的服务器界面. jsp的主要作用是代替Servlet程序回传html页面的数据 因为Servlet程序回传html ...

  2. 【GKCTF 2020】ez三剑客

    [GKCTF 2020]ez三剑客 收获 gopher协议SSRF 多利用github搜索已存在的函数漏洞 CMS审计的一些方法 1. ezweb 打开题目给了一个输入框,能够向输入的url发送htt ...

  3. h5移动端使用video实现拍照、上传文件对象、选择相册,做手机兼容。

    html部分 <template> <div class="views"> <video style="width: 100vw; heig ...

  4. DataGridView合并单元格,重绘后选中内容被覆盖的解决办法

    DataGridView合并单元格只能进行重绘,网上基本上使用的是下面的方法: 1 /// <summary> 2 /// 说明:纵向合并单元格 3 /// 参数:dgv DataGrid ...

  5. 如何编写一个 Pulsar Broker Interceptor 插件

    背景 之前写过一篇文章 VictoriaLogs:一款超低占用的 ElasticSearch 替代方案讲到了我们使用 Victorialogs 来存储 Pulsar 消息队列的消息 trace 信息. ...

  6. [CF3C] Tic-tac-toe

    [题目描述] 显然,我们每个人都熟悉Tic-tac-toe游戏. 这个游戏的规则是:两个人依次在3X3的棋盘上下棋. 当一个人有3个棋子连成一行或一列或一纵列时,则这个人已经获得胜利.这时则停止下棋. ...

  7. PyTorch 实战(模型训练、模型加载、模型测试)

    本次将一个使用Pytorch的一个实战项目,记录流程:自定义数据集->数据加载->搭建神经网络->迁移学习->保存模型->加载模型->测试模型 自定义数据集 参考我 ...

  8. IIS下使用SSL证书

    IIS下使用SSL证书 本文介绍windowsServer下SSL证书配置及IIS站点配置 1.    生成SSL证书 在阿里云申请免费SSL证书 登录阿里云管理控制台,打开SSL证书管理 选择免费证 ...

  9. IPTV SQM的项目总结

    本文于2015年底完成,发布在个人博客网站上,标题为<项目总结--纪念我参与过的IPTV SQM项目>. 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来. 时 ...

  10. 【ASP.NET Core】使用SignalR推送服务器日志

    一个多月前接手了一个产线机器人项目,上位机以读写寄存器的方式控制机器人,服务器就是用 ASP.NET Core 写的 Web API.由于前一位开发者写的代码质量问题,导致上位机需要16秒才能启动.经 ...