大数跨境
0
0

什么是无服务器架构?

什么是无服务器架构? 驼马精英
2019-07-08
82
导读:到底什么是 Serverless?它有什么长处/短处?希望通过本文对这些问题提供一些启发。

无服务器计算(Serverless):软件架构的未来趋势

无服务器计算(Serverless computing,简称 Serverless)已成为当前软件架构领域的一大热门话题。全球三大云计算供应商——Amazon、Google 和 Microsoft 正在大力推动这一技术的发展,相关书籍、开源框架、商业产品和技术大会层出不穷[1]

什么是 Serverless?

Serverless 并非真的“无服务器”,而是指开发者无需关心底层服务器的管理与运维。它由 Backend as a Service(BaaS)和 Function as a Service(FaaS)两个核心概念组成。前者通过第三方服务提供常见的后端功能(如身份验证、数据库管理等),后者允许开发者直接编写并运行代码片段,而无需维护整个应用环境。

典型场景分析

界面驱动的应用:例如一个传统的电子商务系统(如在线宠物商店),采用三层 C/S 架构,客户端为 HTML/JavaScript,服务端用 Java 实现。将其改造成 Serverless 架构后,关键变化包括:
1. 使用第三方 BaaS 服务替代原有身份验证逻辑;
2. 允许客户端直接访问托管在云上的部分数据库内容,并通过安全配置控制访问权限;
3. 将更多业务逻辑从服务端迁移到客户端,使客户端逐步演变为单页应用;
4. 利用 FaaS 函数实现某些仍需保留在服务端的功能(如搜索和购买功能),并通过 API 网关暴露给外部调用。

消息驱动的应用:以在线广告系统为例,传统架构中,“广告服务器”同步响应用户点击,同时发送消息给“点击处理应用”异步更新数据库。而在 Serverless 架构下,可以将长期驻留内存的任务替换为事件驱动的 FaaS 函数,借助第三方平台提供的消息代理和执行环境完成任务。

FaaS 核心特性

FaaS 是 Serverless 的重要组成部分,其主要特点包括:

  • 无需配置或管理自己的服务器及应用程序;
  • 支持多种编程语言(如 JavaScript、Python 和 JVM 语言)以及调用外部程序;
  • 自动扩展与高可用性,平台负责所有伸缩需求;
  • 由特定事件触发函数执行(如 S3 文件更新、定时任务或 HTTP 请求)。

局限性与挑战

状态管理:由于 FaaS 函数本质上是无状态的(Stateless),所有中间状态无法影响后续调用,通常需要借助数据库或缓存工具(如 Redis)来保存状态信息。

执行时长:目前主流平台对 FaaS 函数执行时间有所限制(如 AWS Lambda 最长不超过五分钟),这意味着某些长时间运行的任务需要拆分为多个协作函数。

启动延迟:根据函数实现语言和代码量不同,首次冷启动可能耗时较长(JVM 应用尤为明显)。但对于频繁调用的函数,性能问题一般可忽略不计。

API 网关:作为连接前端请求与 FaaS 函数的重要桥梁,API 网关还承担了身份认证、参数校验等功能,但当前相关工具链尚不够成熟。

与 PaaS 的对比

虽然 Serverless 和 PaaS 都致力于简化开发流程,但两者存在本质区别。PaaS 通常不会为了每个请求都启动新实例,而 FaaS 则完全做到了这一点,因此在成本效率上更具优势。然而,在工具链成熟度方面,PaaS 目前仍占据领先地位。

总结

尽管 Serverless 技术带来了诸多便利,但也伴随着一定局限性。企业在选择是否采用 Serverless 架构时,应综合考虑自身需求与实际场景,权衡利弊后做出决策。

传统架构图 Serverless 架构图

参考资料:
[1] 当前市场对 Serverless 的广泛讨论

【声明】内容源于网络
0
0
驼马精英
链接物流人,聚焦数字化
内容 926
粉丝 0
驼马精英 链接物流人,聚焦数字化
总阅读38.8k
粉丝0
内容926