前言
云计算是大势所趋
Serverless 架构即“⽆服务器”架构,它是一种全新的架构方式,是云计算时代⼀种⾰命性的架构模式
FaaS(Function as a Service - 函数即服务) 是在无状态容器中运行的事件驱动型计算的执行模型
☁️云函数算是FaaS的一种具体的形式,由云商(腾讯云,阿里云,七牛云等等)提供计算平台,开发者只需关注函数逻辑的实现,将服务器相关的配置管理工作统统交给云商去做,不再花大精力去管理服务器
我们只需要提供一段代码,由云商研制的 FaaS 方案帮我们选择语言对应技术栈的最佳实践,基于内置的扩展机制按实际需要,进行动态扩展计算资源,轻松部署服务到公网,并提供可靠的监控、报警保障,不需要以前一样,服务器资源不是大部分时间处于闲置状态,就是遇到超大浏览需要紧急扩容
给 FaaS 一个函数,就能上线一个高可用的服务
简单的服务接口开发的专业性要求降低了,前端有了更大的发挥空间,包括但不限于:
- BFF(Backend For Frontend)
- SSR(Server-Side Rendering)
上面简单的介绍了一下“云函数”,有一点抽象,下面就结合实操,来搞一个”实用的“
☁️搞一个简单的天气查询API
就像这样的:点我体验
参数:cityId 地区参照表
所使用到的技术与平台
下面开始手把手教程
腾讯云侧
1. 注册账号
注册腾讯云账号并登录
2. 进入控制台
点击右上角进入控制台
3. 云函数-函数服务
左上角选择云产品,输入云函数,选择 云函数-函数服务
4. 新建云函数
新建一个云函数
5. 录入基本信息
- 符合规范的函数名称
- 环境选择一个Node.js的环境
- 选择空白函数
- 然后下一步
6. 完成创建
直接点击完成,什么都不更改
7. 触发器
然后来到这个界面,点击触发管理
8. 创建触发器
创建触发器,填写相关信息
- 触发方式-API网关触发
- 请求方法-GET
- 鉴权方法-免鉴权
9. 大功告成
体验一下生成的触发器链接
10. 观察接口
观察响应结果与我们的代码
响应结果
我们的云函数代码
关注红色框中的内容
- 执行方法:index.main_handler
- index 对应的就是
index.js
- main_handler就是就是index.js中对外暴露的
main_handler
方法
再看代码
'use strict'; exports.main_handler = async (event, context) => { console.log("Hello World") console.log(event) console.log(event["non-exist"]) console.log(context) return event };
根据上上图返回的结果可知其对应的是event
里面的内容: 即我们可以在event中取到我
们请求的参数,header,body等信息,便于我们执行后续逻辑
context的内容(console.log的内容)在哪里看?
11. 日志查询
在日志查询面板可以查询到我们接口的调用信息,响应状态与log的内容
12. 安装依赖的模块
这个和本地安装差不多,一个敲命令,一个点按钮
我们使用本地终端创建一个package.json文件
npm init -y
package.json
{ "name": "faas", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
如安装axios,本地执行安装先
yarn add axios # or npm i axios
此时的package.json
{ "name": "faas", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "axios": "^0.21.0" } }
在平台上创建一个 package.json文件,并把上述内容粘贴进去,ctrl/command + S
保存修改的内容
选择在线安装依赖,然后点击保存
安装完成后 会出现 node_modules目录
JS云函数创建相关流程,差不都陈述完毕
下面开始我们的代码编写
天气云函数编写
代码同步到线上的方式
- 可以本地编辑后上传文件
- 使用腾讯云的cli工具上传
- 复制粘贴
这里比较简单我们就复制粘贴了
先简单编写一下大体结构,然后点击保存,再访问刚刚的触发器链接观察返回的结果
index.js
'use strict'; const http = require('axios').default function getNowWeather(cityId = 3) { // 待编写 return { data:{ cityId } } } exports.main_handler = async (event, context) => { // 结构取得url中传递的参数 const { queryString: { cityId } } = event return getNowWeather(cityId) };
下面实现getNowWeather
的逻辑就要用到阿里云的服务了