Serverless是一种技术架构。按AWS
官方对于Serverless的介绍:
1 | 无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务(例如AWS Lambda服务),客户端逻辑和服务托管远程过程调用的组合。 |
该技术的意义是:站在开发者的角度,自己不再关心IaaS层的基础设施的购买、运维、配置,也不关心自己应用的配置、部署、高可用这些PaaS层的东西,而是专注于实现业务逻辑的核心代码,其他的东西全部借助于公有云提供的服务实现。这种架构里,开发者自己并不接触Server,所以有了Serverless这个词。该模式下,开发者的效率是最高的,基本是100%的核心业务+0的业务支撑,而传统的IaaS架构里,我们在用20%的时间开发核心业务 + 80%的时间提供周边业务支撑。
Serverless的技术最早来自于AWS在2014年推出的Lambda服务,该服务目前支持Javascript, Python和JVM系语言(Java、Clojure、Scala等)。
Serverless架构里使用到了两种技术:
FaaS中的Function就是我们需要100%专注的核心业务。Function又是由事件Event驱动的,再结合上公有云提供的BaaS的服务,我们就能实现出一套完整的业务架构。
FaaS(函数即服务) 的核心是
此处列举了部分常见的函数触发事件:
1.HTTP触发器。
2.日志服务触发器。
3.定时触发器。
4.CDN事件触发器。
5.对象存储触发器。
6.MNS主体触发器。
7.API网关触发器。
8.消息队列Kafka版Connector触发器
不同的云服务厂商提供的触发事件上存在细微差别。
函数计算是事件驱动的全托管计算服务。使用函数计算,你无需采购与管理服务器等基础设施,只需要编写并上传代码。函数计算为你准备好计算资源,弹性地、可靠地运行任务,并提供日志查询、性能监控和报警等功能。
函数计算工作流程如下图所示(以阿里云为例):
4. 动态扩容以响应请求,请求量激增时Serverless架构可以实现自动毫秒级扩容,该过程对您和您的用户均透明无感知。
最初“无服务器”意在帮助开发者摆脱运行后端应用程序所需的服务器设备的设置和管理工作。Serverless 并不意味着没有服务器,而是指由第三方供应商负责后端基础结构的维护,以服务的方式为开发者提供所需功能,例如数据库、消息,以及身份验证等。
由上述的优势和劣势,可见Serverless适用于“简单应用后端架构”,而不适用于“大型复杂应用后端架构”。在一个大型应用架构中,我们可以将其中无状态,事件触发的业务拆成Serverless架构,让他成为复杂应用架构的一种有效补充。
其他项目
从现状来看,2014年AWS推出lambda到现今,已过去6年,Serverless相关技术与工具发展迅速,尽管Serverless目前仍存在一些缺点还没有得到较好的解决,但考虑到Serverless的巨大优点,越来越多的用户考虑使用Serverless服务。
2019 年 12 月咨询公司 O’Reill发布 Serverless 使用调研中,已有 40% 的受访者所在的组织采用了 Serverless。2020 年 10 月,中国信息通信研究院发布的《中国云原生用户调研报告》指出:“Serverless 技术显著升温,近 30%的用户已在生产环境中应用。”
2019 年下半年,阿里云函数计算宣布推出 2.0,支持预留模式,全面解决冷启动延迟大的问题;推出单实例多请求问题,较少实例支持重 IO 高并发类型请求调用;支持自定义运行时,支持一键迁移传统 Web 架构服务器。2.0 的出现让函数计算在业务和规模上实现了巨大升级。
在经历了过去的线下场景考验后,世纪联华将各渠道商的业务及旗下的“联华鲸选 APP”,以及线上交易、定时抢优惠券、秒杀业务也全部从 ECS 迁移到了函数计算 2.0,在开启预留模式调整好单实例多并发的模式后,面对平时数十倍的流量请求也能轻松应对。
比较上述的“时间-流量图”及“时间-延迟”两图可以看到,急剧上升的突发流量对用户造成的延迟变化影响非常小,从用户的反馈来说,基本感受不到较为明显的延迟,使用Serverless,减轻的不只是研发人员的心理压力,还有工作量。
相信随着越来越多的使用Serverless服务成功案例的诞生,更多的开发者与用户将会关Serverless, Serverless相关技术发展以及使用率都将迎来巨大的提升。
1 | +--------+ +--------+ +--------+ |