文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
一、serverless 架构介绍及安装 serverless
Serverless
又名无服务器,所谓无服务器并非是说不需要依赖和依靠服务器等资源,而是开发者再也不用过多考虑服务器的问题,可以更专注在产品代码上。Serverless
是一种软件系统架构的思想和方法,它不是软件框架、类库或者工具。它与传统架构的不同之处在于,完全由第三方管理,由事件触发,存在于无状态(Stateless
)、 暂存(可能只存在于一次调用的过程中) 计算容器内。构建无服务器应用程序意味着开发者可以专注在产品代码上,而无须管理和操作云端或本地的服务器或运行时(运行时通俗的讲 就是运行环境,比如nodejs
环境,java
环境,php
环境)。Serverless
真正做到了部署应用 无需涉及基础设施的建设,自动构建、部署和启动服务。
通俗的讲:Serverless 是构建和运行软件时不需要关心服务器的一种架构思想
虚拟主机已经是快被淘汰掉的上一代产物了。云计算涌现出很多改变传统 IT 架构和运维方 式的新技术,比如虚拟机、容器、微服务,无论这些技术应用在哪些场景,降低成本、提升 效率是云服务永恒的主题。Serverless 的出现真正的解决了降低成本、提升效率的问题。它真正做到了 弹性伸缩
、 高并发
、 按需收费
、 备份容灾
、日 志监控
等。
1.1 传统的开发模式与 serverless 开发模式对比
传统的开发模式
新型的 serverless 开发模式
Serverless 正在改变未来软件开发的模式和流程
1.2 Serverless 和 ServerFul 架构的区别
传统的 ServerFul 架构模式
ServerFul 架构就是 n 台 Server 通过 网络通信 的 方式 协作在一起,也可以说 ServerFul 架构是基于 Server 和 网络通信(分布式计算) 的 软件实现架构 , Server 可 以是 虚拟机 物理机 ,以及基于硬件实现的云的云服务器
Serverless 架构模式
Serverless 的核心特点就是实现自动弹性伸缩和按量付费
1.3 使用 serverless 的优势
- 资源分配: 在
Serverless
架构中,你不用关心应用运行的资源(比如服务配置、磁盘大小) 只提供一份代码就行。 - 计费方式: 在
Serverless
架构中,计费方式按实际使用量计费(比如函数调用次数、运 行时长),不按传统的执行代码所需的资源计费(比如固定CPU
)。计费粒度也精确到了毫 秒级,而不是传统的小时级别。个别云厂商推出了每个月的免费额度,比如腾讯云提供了每 个月 40 万 GBs 的资源使用额度和 100 万次调用次数的免费额度。中小企业的网站访问量不 是特别大的话完全可以免费使用。
- 弹性伸缩:
Serverless
架构的弹性伸缩更自动化、更精确,可以快速根据业务并发扩容更 多的实例,甚至允许缩容到零实例状态来实现零费用,对用户来说是完全无感知的。而传统 架构对服务器(虚拟机) 进行扩容,虚拟机的启动速度也比较慢,需要几分钟甚至更久。
1.4 Serverless 组成
- 广义的 Serverless 更多是指一种技术理念:Serverless 是构建和运行软件时不需要关心服务 器的一种架构思想。刚开始学 Serverless 你可以把它理解为虚拟主机的升级版本
- 狭义的 Serverless 是指现阶段主流的技术实现:狭义的 Serverless 是
FaaS
和BaaS
组成
1.5 Serverless 开发流程
1.6 为什么要学 Serverless
先看看招聘信息
看看最近 2 年 Github 的 start 数量和周下载量
目前已经使用了 serverless 的大公司
1.7 Serverless 的能力
计算能力
- 资源按需分配,无需申请资原
- Mwm:租户级别强镜离 Docker:进程级别隔离
- Mwm+Docker 轻量级资源毫秒级启动
- 实时扩容,阶梯缩容
- 按需收费
系统运维能力
- 性能保障:整个链路耗时毫秒级内,并支持 VPC 内网访问
- 安全保障
- 资源对用户不可见,安全由腾讯云提供专业的保障
- 提供进程级和用户级安全隔离
- 访问控制管理
- 自动性护缩容
- 根据 CPU 内容网络 IO 自动扩容底层资源
- 根据请求数自动扩缩容函数实例,业务高峰期扩容,满足业务高并发需求,业务低 峰期缩容,释放资源,降低成本
- 自愈能力:每一次请求都是一个健康的实例
Serverless 中云函数被第一次调用会执行冷启动,Serverless 中云函数被多次连续调用会 执行热启动
- 冷启动 是指你在服务器中新开辟一块空间供一个函数实例运行,这个过程有点像你把这 个函数放到虚拟机里去运行,每次运行前都要先启动虚拟机加载这个函数,以前冷启动非常 耗时,但是目前云厂商已经能做到毫秒级别的冷启动,这个过程我们也不需要关心,但是需 要注意的是使用 Seesion 的时候可能会导致 Session 丢失,所以我们的 Seesion 建议保存到数 据库。
- 热启动 则是说如果一个云函数被持续触发,那我就先不释放这个云函数实例,下次请求 仍然由之前已经创建了的云函数实例来运行,就好比我们打开虚拟机运行完这个函数之后没 有关闭虚拟机,而是让它待机,等待下一次被重新触发调用运行,这样做的好处就是省去了 给虚拟机「开机」的一个耗时环节,缺点是要一直维持这个虚拟机的激活状态,系统开销会 大一些。
业务运维能力
- 工具建设:vscode 插件、WebIDE、Command Line、云 api、Sdk
- 版本管理、操作管理等
- 故障排查
- 监控报警
- 容灾处理
1.8 serverless 厂家
- 亚马逊 AWS Lambda
- 谷歌 Google Cloud Functions
- 微软 Microsoft Azure
- 阿里云函数计算
- 腾讯云 云函数 SCF(Serverless Cloud Function)
- 华为云 FunctionGraph
1.9 云函数和 serverless 的区别
通过前面的介绍,我们认识到了云函数和 serverless
,但是可能会有一个很迷惑云函数和 serverless
到底有什么区别,他们之间有什么联系,为什么我在创建云函数的时候选择模板方式创建最后创建的是 serverless
,而不是云函数呢。下面我们将解答云函数和 serverless
的区别
Serverless Framework
是Serverless
公司推出的一个开源的Serverless
应用开发框架Serverless Framework
是由Serverless Framework Plugin
和Serverless Framework Components
组成Serverless Framework Plugin
实际上是一个函数的管理工具,使用这个工具,可以很轻松的 部署函数、删除函数、触发函数、查看函数信息、查看函数日志、回滚函数、查看函数 数据等。简单的概括就是serverless
其实就云函数的集合体,使用serverless
后我们创建的云函数不需要手动去创建触发器等操作
官方地址
1.20 创建 serverless 的方式
- 在腾讯
serverless
控制面板上创建,然后在vscode
中使用插件的方式下载到本地(注意: 编辑器上要选择和创建serverless
地区相同,才能看到项目,否则是看不到项目代码的) - 使用客户端
serverless cli
命令方式创建,个人也更推荐使用这种方式创建,修改代码,然后部署到后台腾讯云服务上
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论