一、Serverless 架构详解
1.1 什么是serverless
- Serverless又名无服务器,所谓无服务器并非是说不需要依赖和依靠服务器等资源,而是开发者再也不用过多考虑服务器的问题,可以更专注在产品代码上。
- Serverless是一种软件系统架构的思想和方法,它不是软件框架、类库或者工具。它与传统架构的不同之处在于,完全由第三方管理,由事件触发,存在于无状态(Stateless)、 暂存(可能只存在于一次调用的过程中)计算容器内。构建无服务器应用程序意味着开发者可以专注在产品代码上,而无须管理和操作云端或本地的服务器或运行时(运行时通俗的讲 就是运行环境,比如 nodejs环境,java 环境,php 环境)。Serverless 真正做到了部署应用 无需涉及基础设施的建设,自动构建、部署和启动服务。
1.2 Serverless要解决什么?
- 完整的后端应用上线流程
- 机器管理运维:扩缩容
- 降级、熔断、限流
- 域名、性能、监控
1.3 Serverless做什么事?
- 我们只需要关心业务代码,不需要关心服务器的基础设施。
1.4 传统服务器架构 VS Serverless架构
- 传统服务器架构:
- Serverless架构:
1.5 Serverless架构的优缺点
优势
- 无运维:我们不需要购买服务器,直接可进行
- 资源分配: 在 Serverless 架构中,你不用关心应用运行的资源(比如服务配置、磁盘大小)只提供一份代码就行。
- 计费方式: 在Serverless 架构中,计费方式按实际使用量计费(比如函数调用次数、运 行时长),不按传统的执行代码所需的资源计费(比如固定 CPU)。计费粒度也精确到了毫 秒级,而不是传统的小时级别。个别云厂商推出了每个月的免费额度,比如腾讯云提供了每 个月 40 万 GBs 的资源使用额度和 100 万次调用次数的免费额度。中小企业的网站访问量不 是特别大的话完全可以免费使用。
- 弹性伸缩:Serverless 架构的弹性伸缩更自动化、更精确,可以快速根据业务并发扩容更 多的实例,甚至允许缩容到零实例状态来实现零费用,对用户来说是完全无感知的。而传统 架构对服务器(虚拟机)进行扩容,虚拟机的启动速度也比较慢,需要几分钟甚至更久。
不足
- ServerLess 不仅仅是一门技术也是一种理念和微服务一样,很多老系统不能直接上 ServerLess,得相应的进行升级和拆解才能更好的适应 ServerLess,这是一个门槛。
- 同时 ServerLess 针对开发语言的可定制性和可开放性,ServerLess 会选择处于稳定版的语言且更新具有一定的滞后性,特别是 Node.JS 这样的版本更新帝,最新稳定版是10,但是提供的却是8。同时如果对语言有底层的修改而无法通过 Plugin 实现同样也无法适应相关场景。
- 不适合长时间的进行计算处理的场景,ServerLess 是产生计算后按时间计费的,适合那些触发类短时间计算的,如果有长时间进行计算的场景就不适合。
二、微信小程序云开发
2.1 小程序传统开发模式
2.2 云开发正在改变小程序的开发模式
云开发是什么
- 简单的说,就是云开发是一套综合类服务的技术产品,通常开发一个完整的应用(小程序也好,Web、移动应用也好)都需要数据库、存储、CDN、后端函数、静态托管、用户登录等等,但是云开发将这些服务都集成到了一起,而且以一种全新的开发方式,让开发一个应用更加快速、方便、便宜且强大,引领未来技术开发的新趋势。
云开发优势
- 快速上线
- 更加专注我们的业务
- 独立开发一个完整的小程序,云开发提供非常丰富的接口,我们通过这些接口很方便文件上传等操作
- 不需要考虑运维等问题,云开发是弹性扩容的
- 数据更安全
小程序云开发提供哪些基础能力
2.3 小程序云开发项目的创建与配置
- 创建项目时选择使用云开发
- 点击开发者工具的云开发开通云开发环境
- 在app.js的env: ‘my-env-id’处改成你的环境ID
云函数部署与上传
- 右键云函数目录,选择在终端中打开,输入npm install命令下载依赖文件
- 然后再右键云函数目录,点击“创建并部署:所有文件”
- 在云开发控制台–云函数–云函数列表查看云函数是否部署成功。
云存储使用图片上传
云数据库使用