【应用】详细解读无服务器架构的落地应用
近年来,无服务器架构作为一种新的技术概念迅速涌现出来。由于无服务器解决方案能够帮助企业轻松构建轻量级、高度灵活和无状态的应用程序,因此得到了很多企业的青睐,许多企业已经开始将无服务器产品纳入他们的解决方案。使用此架构,开发人员可以为各种行业创建各种应用程序。在这篇文章中,我们将借助阿里巴巴云功能计算服务器,通过四种实际应用场景来探讨应用程序在无服务器架构上的实际操作。
在开始之前,让我们先来熟悉一下无服务器架构的历史和主要优势。
无服务器技术的演进
每一个新技术概念的引入伴随着生产力的提高,无服务器技术也不例外。开发人员一直在寻找更有效的方法来维持软件开发生命周期,而无服务器架构且可以帮助企业专注于应用程序开发,不再需要担心服务器等基础设施的部署建设和运维管理,这即可以很好的降低开发成本和缩短开发周期。
无服务器体系结构的开发建立在从虚拟化 (云计算) 开始的先前成就的基础上,虽然这个过程是相当连续的,但它有几个值得注意的里程碑:
1、引入虚拟化技术替代大型物理服务器虚拟化为独立的虚拟机资源。
2、虚拟化集群被移动到简单的 O.M 的云计算平台。
3、基于最小化操作空间的原则,将每个 VM 细分为 Docker 容器。
4、构建在 Docker 容器上的应用程序不需要任何运行时的环境管理,只需要核心代码的无服务器体系结构。
5、Server 是为了帮助开发人员专注于应用程序逻辑而不是为服务器基础结构引入的。
无服务器架构具有以下特点:
1、粒度计算资源;
2、资源不需要预先分配;
3、高度可伸缩和灵活的体系结构;
4、用户只需要支付所使用的资源即可。
具体来说,阿里巴巴云函数计算为用户提供以下优点:
1、没有基础设施管理。函数计算使用户能够专注于开发具有低操作和维护成本的主业务逻辑。
2、与 Alibaba Cloud 服务无缝集成。函数计算有助于快速构建应用程序,例如用户可以用 OSS 连接一个函数来进行图像和视频数据处理。当新数据上传到 OSS 时,自动触发一个函数来处理上传的数据。
3、在毫秒内实现弹性缩放。
4、按需付费。只收取实际使用的计算资源,大大降低了成本,尤其适用于具有不可预测的业务模式场景。
应用场景一:事件触发计算
无服务器可应用于涉及多个设备访问各种文件类型的场景,例如移动电话和 PC 上传图像、视频和文本文件。
通过使用带有对象存储服务 (OSS) 的函数计算,用户可以为阿里巴巴云上的多个设备访问各种文件类型的场景应用使用无服务器体系结构。在用户将视频文件上传到 OSS 之后,触发 Function Compute 以获取对象元数据并将其传输到核心算法库中。基于该算法,核心算法库将相关视频文件推送到 CDN 源站点,对指定的视频进行热加载。在另外一个场景中,视频文件上传到 OSS 后,触发 Function Compute 以同步多个转码率并将处理后的视频文件存储在 OSS 中,这样即提供了轻量级的数据处理的解决方案。
在多媒体处理场景中,大量的文件通常被上传到 OSS 进行处理,如水印、代码转换、文件属性数据获取等。函数计算可以通过以下特性帮助用户快速解决事件触发计算场景中的技术困难:
1、函数计算可以设置 OSS 触发器来接收事件通知。在函数计算中,用户可以编写代码来处理文件,并通过内联网将文件传输到 OSS,整个过程即简单又可以轻松扩展。
2、用户可以将核心代码构建为函数计算,并使用代码并发处理事件通知。
3、函数计算目前已经提供与其他产品的内部交互支持。
应用场景二:实时视频广播的弹性调整
无服务器架构是实时视频广播应用场景的理想选择。在下面的图片中,广播室客户端收集来自主机和观众的音频和视频流,并将它们发送到 Function Compute 进行多路复用。函数计算器将收集到的数据发送到多路复用服务进行合成,并将合成的视频流推送到 CDN。观众可以实时地观看直播流以查看多路复用和合成视频。
在某些实况视频应用场景中,多个观众成员能够交互,因此主机可以同时连接到多个麦克风。主机可以将多个观众或朋友连接到屏幕上,并将图片合成为单个场景,然后将其提供给现场观众。
无服务器架构解决了在这样的应用场景中可能出现的困难。作为主机和连接麦克风的实时音频和视频转发集群,Function Compute 根据并发卷自动调整用于处理实时数据流的多个执行环境的大小。在流量高峰之后,功能计算可以适当地减少资源量。由于代码管理功能部署在云上,因此允许用户随时修改和维护代码迭代,不再需要管理多个软件运行时的环境。
应用场景三:物联网数据处理
无服务器架构可以应用于物联网 (IOT) 场景中,如下图所示:
该应用体系结构分为两个部分:
1、Web 应用:模拟社交媒体内容更新和数据处理流程。Web 用户的请求从 API 网关转发到函数计算以进行处理。函数计算之后更新数据库中的处理内容并更新索引。另外一个 Function Compute 实例将索引更新推送到搜索引擎,其中新内容由外部客户检索,形成一个闭环数据的处理过程。
2、智能设备:IOT 网关将智能设备状态推送到处理计算机的功能,函数计算使用 API 向 Mobile Push 发送消息,Mobile Push 将消息推送到移动终端进行状态确认和管理。
智能设备状态处理也产生了几个关键的技术难题,用户必须设计一个高效的非轮询技术框架来处理从大量设备到 IoT 平台的状态数据。然后,需要一种将处理过的数据高效透明地传输到其他产品的方法,例如写入数据库或将数据推送到移动终端。
应用场景四:共享递送调度系统
用户可以使用调度平台来选择由各种销售商提供的服务,如订购食品或购买产品。然后,调度平台通知最近的交付人员从最近的销售者那里提取相关产品并将产品交付给客户。如下图所示:
工作流程分为以下 5 步:
1、客户通知调度平台订购产品;
2、调度平台通知最近的投递人员;
3、调度平台同时通知卖方销售产品;
4、送货人员到指定的卖家领取产品;
5、送货人员将产品送达客户所在地。
这样的过程可以很容易地以无服务器架构实现。在下面的图表中,阿里巴巴云函数计算与其他产品一起使用,以开发配送调度系统。
操作流程由以下 3 步:
1、客户应用程序通过 API 网关透明地发送订单请求到函数计算;
2、函数计算将处理后的数据发送到表存储区;
3、表存储存储路由数据、卖方信息和位置信息。
在此解决方案中,Function Compute 可以提供动态调整大小的能力,而 API 网关执行身份验证并确保安全访问。函数计算可以与多个产品通信,无缝地使用其他资源和内容。所有处理的数据都存储在表存储数据库中,并且所有日志都直接加载到 Log Service 以供后续数据报告。
总结:
通过前面四个应用场景案例可以看出,无服务器架构能够为开发人员和企业带来了许多好处,阿里巴巴云功能计算能够帮助用户开发无服务器体系结构,同时解决成本、效率和连接性方面的问题。
虽然函数计算适用于许多场景,但它不是一成不变的解决方案。例如,对于没有重大请求波动的企业来说,它可能不是最具成本效益的解决方案。此外,Function Compute 的执行环境不记录状态,因此无服务器框架不适合紧密耦合的应用程序。
至今为止,作为一种新兴技术,无服务器架构仍然没有发挥出开发者和企业的全部潜力。