论无服务器架构(Serverless)
无服务器架构(Serverless)是一种以函数即服务与后端即服务为核心的云计算范式,其核心思想是开发者无需关注服务器管理、资源调度与运维工作,仅需聚焦业务逻辑代码编写,平台自动完成资源分配、弹性扩缩容及故障恢复。该架构通过抽象基础设施层,将应用运行环境与计算资源交由云服务商管理,实现"按需使用、按量计费"的开发与运行模式,显著降低了软件开发与运维的复杂度。
请围绕"论无服务器架构(Serverless)"论题,依次从以下方面进行论述:
1、概要叙述你参与的采用无服务器架构的软件项目,说明项目的业务目标、技术选型背景及你在其中承担的主要工作。
2、详细阐述无服务器架构的核心特征及其对软件开发过程的影响。
3、结合具体项目,说明无服务器架构在需求分析、架构设计及开发实施全流程中的应用策略。
个人看法
该题个人看法,难度上可以给到4颗星,主要是实践过的人少啊!
在我这两天考后复盘、聊下来的考友不下于100名,没有一个人写这道题的!几乎都是一致性的回答:知道有这项技术、没有真正实践过!
这题实际上和前面聊的那道《论云原生数据库》论题,在考察方向基本上差不多,同样也是24年11月那道《论云原生架构及应用》论题的子集,无服务器架构(Serverless)技术更加聚焦于弹性、自动化。
无服务器架构技术在我看来,可能99%的公司都用不会用这个技术,不是说不好用,是组织、使用起来太复杂,它还需要和云厂商的各种服务深度绑定,以至于多数程序员可能仅仅从概念上知道有这么这么一项技术,真正实践使用的很少。更主要的是你要是自己学习这项技术,还需要到云厂商那里购买服务才能研究学习,导致学习成本提高了,程序员实践的机会也就更少了。
书上知识点
无服务器架构(Serverless)的知识点主要出现在第14章"云原生架构设计理论与实践"中。在"14.3.3 无服务器技术"一节中有详细讨论。该节介绍了无服务器技术的技术特点、主要特征和应用场景,包括函数计算(FaaS)作为无服务器架构的代表性产品形态,以及无服务器计算在弹性伸缩、按量计费等方面的优势。
简单聊聊这项技术
"无服务器"这个名字听起来好像没有服务器了,这一点如果不了解它的本质很容易引起误解。本质上"无服务器"的服务器依然存在云上,但它的核心思想是"开发者无需关心服务器的存在、运维和管理"。它是一种云计算执行模型,由云服务厂商动态地管理机器资源的分配和部署,开发者只需要专注于编写函数或业务逻辑代码,而服务器、操作系统、资源扩展、负载均衡等底层基础设施工作全部由云平台自动完成。
举个更加形象的例子:
- 传统方式(自建机房):你租了一整台服务器(好比租了一整套房子),你需要自己装修、交水电费、打扫卫生。
- 容器化方式(k8s):你租了房子里的一个房间(容器),房东负责房子的外部维护,但房间里的东西还得自己管。
- 无服务器方式(serverless):你住进了酒店(云平台)。你只需要按需入住(上传函数代码),酒店会自动为你提供房间、打扫卫生、供应水电,你只需为实际入住的天数(代码运行时间)付费,完全不用操心空调坏了怎么办、床单谁来洗。
那什么是云函数代码?
举个实际业务例子:假设你的电商平台需要一个处理商品图片的图片压缩功能,如果使用传统方式(自建机房)或者容器化方式(k8s),为了减少图片压缩占用大量的服务器资源,你顶多是新创建一个java项目,这个java项目专门处理图片压缩,如果说你的图片非常多,你可能会采用人工的方式扩充虚拟机、容器或者提高cpu和内存的配置来提高压缩效率。
如果采用无服务器方式(serverless)模式,你要先实现云平台提供的云函数模板相关接口,然后在模板接口中编写的图片压缩的代码逻辑,然后通过maven package生成一个jar,然后将这个jar上传到云平台serverless服务中,再通过一系列简单点击配置,这些配置中包括执行时的内存上线、cpu上线、并发参数等一系列性能参数,最终这个图片压缩代码逻辑会在云平台暴露出一个RPC接口,你只需要在你的业务代码逻辑中调用这个RPC接口即可实现图片压缩功能,图片压缩功能完全不会占用本地资源,而且可以通过点击配置实现动态、快速扩容。到这里看到没,你本地确实没有图片压缩的代码逻辑或者服务了,这个图片压缩的服务已经完全运行在了云平台上!
论文写作方向
在论文写作中我个人觉得仍然还是应该以微服务的架构演化这个方向切入。论文背景应该是这样:"微服务架构初期采用了容器化方式(k8s)方式,随着业务的扩张,某次线上活动由于流量的暴增,出现xx业务代码逻辑出现瓶颈占用了大量CPU资源,采用k8s基于HPA等组件实现扩展,但是扩展速度较慢,且基于Pod进行大批量扩展成本较高,无法快速实现某一关键代码逻辑的高效扩展,最终导致了流量高峰期间业务受到影响,损失了xx元,作为系统架构设计师进行了深入复盘,分析出了1、2、3个核心问题,最终确定了是扩展机制响应以及核心代码的问题,然后又经过方案调研、对比,最终决定在项目中将xx业务代码逻辑单元抽离出来,采用进行无服务器架构(Serverless)试点,最终取得良好的收益效果!"
甄选架构论文参考↓↓↓↓↓
总结
就我个人来看,无服务器架构(Serverless)技术比较适合用来实现"工具"方面的业务逻辑,这种业务逻辑通常"无中间态",比如:
数据处理:读取文件→处理→结果写回数据库
API后端:接收请求→查询数据库→返回结果
业务流水线:多个云函数通过消息队列协作,每个函数完成特定步骤
定时任务:每天凌晨统计用户数据,生成报表
本篇完!
