ServerLess之云函数实践-天气API
ServerLess之云函数实践-天气API
前言
云计算是大势所趋
Serverless 架构即“⽆服务器”架构,它是一种全新的架构方式,是云计算时代⼀种⾰命性的架构模式
FaaS(Function as a Service - 函数即服务) 是在无状态容器中运行的事件驱动型计算的执行模型
☁️云函数算是FaaS的一种具体的形式,由云商(腾讯云,阿里云,七牛云等等)提供计算平台,开发者只需关注函数逻辑的实现,将服务器相关的配置管理工作统统交给云商去做,不再花大精力去管理服务器
我们只需要提供一段代码,由云商研制的 FaaS 方案帮我们选择语言对应技术栈的最佳实践,基于内置的扩展机制按实际需要,进行动态扩展计算资源,轻松部署服务到公网,并提供可靠的监控、报警保障,不需要以前一样,服务器资源不是大部分时间处于闲置状态,就是遇到超大浏览需要紧急扩容
给 FaaS 一个函数,就能上线一个高可用的服务
简单的服务接口开发的专业性要求降低了,前端有了更大的发挥空间,包括但不限于:
BFF(Backend For Frontend)
SSR(Server-Side Rendering)
上面简单的介绍了一下“云函数”,有一点抽象,下面就结合实操,来搞一个”实用的“
☁️搞一个简单的天气查询API
就像这样的:点我体验
参数:cityId 地区参照表
所使用到的技术与平台
Node.js (云函数选用JavaScript语言)
腾讯云 - 免费的云函数服务
阿里云 - 免费的墨迹天气查询服务
下面开始手把手教程
腾讯云侧
1. 注册账号
注册腾讯云账号并登录
https://cloud.tencent.com/
2. 进入控制台
点击右上角进入控制台
3. 云函数-函数服务
左上角选择云产品,输入云函数,选择 云函数-函数服务
4. 新建云函数
新建一个云函数
5. 录入基本信息
符合规范的函数名称
环境选择一个Node.js的环境
选择空白函数
然后下一步
6. 完成创建
直接点击完成,什么都不更改
7. 触发器
然后来到这个界面,点击触发管理
8. 创建触发器
创建触发器,填写相关信息
触发方式-API网关触发
请求方法-GET
鉴权方法-免鉴权
9. 大功告成
体验一下生成的触发器链接
10. 观察接口
观察响应结果与我们的代码
响应结果
我们的云函数代码
关注红色框中的内容
执行方法:index.main_handler
index 对应的就是 index.jsmain_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的逻辑就要用到阿里云的服务了
阿里云侧
先白嫖个服务
阿里云-免费版气象天气服务(cityid)-墨迹天气
根据其文档中的请求示例,我们先构建出 Node版本的方法
const http = require('axios').default
function getNowWeather(cityId = 3) {
const token = ''
const appcode = ''
const nowStatusURL = 'http://freecityid.market.alicloudapi.com/whapi/json/alicityweather/briefcondition' // 精简实况的请求URL
const data = `cityId=${cityId}&token=${token}` // 请求参数
const headers = { // header
'Authorization': `APPCODE ${appcode}`,
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
// 发送请求
return http.post(nowStatusURL, data, {
headers
}).then(res => res.data)
}
购买服务后根据文档找到token与appcode即可
控制台->API网关->华北2(北京)
为了节约查找token与appcode的时间,下面列一下步骤(吐槽,阿里云的文档太拦了,不方便信息定位)
token与appcode
API网关页面地址
token: 应用管理->选择一个应用->已授权API列表->选择自己要查看的API->点击调试API->调试面板的token参数即是所需参数
appcode: 应用管理->选择一个应用->AppCode面板
郑州做人流多少钱http://www.hnzzxb.com/
最终代码
郑州人流医院http://www.zztjyyfk.com/
index.js
'use strict';
const http = require('axios').default
function getNowWeather(cityId = 3) {
const token = ''
const appcode = ''
const nowStatusURL = 'http://freecityid.market.alicloudapi.com/whapi/json/alicityweather/briefcondition' // 精简实况的请求URL
const data = `cityId=${cityId}&token=${token}` // 请求参数
const headers = { // header
'Authorization': `APPCODE ${appcode}`,
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
// 发送请求
return http.post(nowStatusURL, data, {
headers
}).then(res => res.data)
}
exports.main_handler = async (event, context) => {
const {queryString:{cityId}} = event
return await getNowWeather(cityId)
};
触发器链接
最后
到此一个云函数就开发完毕了
可以感觉到,如果熟悉创建流程了,只需要几分钟就能创建一个提供服务的API,极大的节约了成本
不懂服务端部署,服务器运维,Linux的开发者可以通过 云函数+云数据库(关系数据库,非关系数据库) 快速搭建一个后端服务
文件存储服务可以使用OSS
开发者只需要通过云函数调用各服务提供的API即可完成一个后端服务的构建

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
私有云如何运行深度学习?看ZStack+Docker支撑GPU业务实践
前景 ZStack所聚焦的IaaS,作为云计算里的底座基石,能够更好的实现物理资源隔离,以及服务器等硬件资源的统一管理,为上层大数据、深度学习Tensorflow等业务提供了稳定可靠的基础环境。 近年来,云计算发展探索出了有别于传统虚拟化、更贴近于业务的PaaS型服务,该类型依赖于docker实现,如K8S等典型的容器云,可以直接从镜像商店下载封装好业务软件的镜像,更加快捷地实现业务部署。 此外,GPU场景也是客户业务的典型场景,相比于CPU的运算特点,在数据分析、深度学习有着明显的优势。 ZStack是如何与容器结合,以IaaS+PaaS的组合拳,为上层业务提供支撑的呢?本篇文章带大家了解一下,如何在ZStack上部署centos7.6虚拟机,在虚拟机里部署docker,以及如何使用nvidia-docker实现在容器里调用GPU的业务场景。 环境 虚机系统:Centos 7.6 虚机内核:Linux 172-18-47-133 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64...
- 下一篇
全面解析JVM,超详细!
点击蓝色“程序员的时光”关注我,标注“星标”,及时阅读最新技术文章 写在前面: 小伙伴儿们,大家好!今天来学习Java虚拟机相关内容,作为面试必问的知识点,来深入了解一波! 思维导图: JVM思维导图 1,JVM是什么? 1.1,概述 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范。引入Java虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是“一次编译,多次运行”。 所谓java能实现跨平台,是由在不同平台上运行不同的虚拟机决定的,因此java文件的执行不直接在操作系统上执行,而是通过jvm虚拟机执行,我们可以从这张图看到,JVM并没有直接与硬件打交道,而是与操作系统交互用以执行java程序。 跨平台 1.2,JVM运行流程 JVM运行流程 这个是JVM的组成图,由四个部分组成: 类加载器 类加载器的作用是加载类文件到...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装