Serverless之云函数实践-天气API | 🏆 技术专题第七期征文(一)

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 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. 注册账号


注册腾讯云账号并登录

cloud.tencent.com/


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的逻辑就要用到阿里云的服务了

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
23天前
|
消息中间件 缓存 监控
在FaaS中,如何设计无状态的函数来确保数据处理的一致性?
在FaaS中,如何设计无状态的函数来确保数据处理的一致性?
|
1月前
|
存储 运维 监控
Elasticsearch Serverless 高性价比智能日志分析关键技术解读
本文解析了Elasticsearch Serverless在智能日志分析领域的关键技术、优势及应用价值。
Elasticsearch Serverless 高性价比智能日志分析关键技术解读
|
8天前
|
Prometheus 监控 Java
深入探索:自制Agent监控API接口耗时实践
在微服务架构中,监控API接口的调用耗时对于性能优化至关重要。通过监控接口耗时,我们可以识别性能瓶颈,优化服务响应速度。本文将分享如何自己动手实现一个Agent来统计API接口的调用耗时,提供一种实用的技术解决方案。
18 3
|
11天前
|
监控 安全 应用服务中间件
微服务架构下的API网关设计策略与实践####
本文深入探讨了在微服务架构下,API网关作为系统统一入口点的设计策略、实现细节及其在实际应用中的最佳实践。不同于传统的摘要概述,本部分将直接以一段精简的代码示例作为引子,展示一个基于NGINX的简单API网关配置片段,随后引出文章的核心内容,旨在通过具体实例激发读者兴趣,快速理解API网关在微服务架构中的关键作用及实现方式。 ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://backend_service:5000;
|
16天前
|
XML API 网络架构
深入理解RESTful API设计原则与实践
【10月更文挑战第26天】在数字化浪潮中,API(应用程序编程接口)成为连接不同软件组件的桥梁。本文将深入浅出地探讨如何根据REST(Representational State Transfer)原则设计高效、易于维护和扩展的API,同时分享一些实用的代码示例,帮助开发者构建更加健壮和用户友好的服务。
|
23天前
|
机器学习/深度学习 监控 物联网
函数即服务(FaaS)
函数即服务(FaaS)
|
19天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
41 1
|
23天前
|
安全 物联网 API
API技术之身份认证
【10月更文挑战第17天】身份认证是API安全的核心,确保API可信可控。
API技术之身份认证
|
1月前
|
JSON 前端开发 测试技术
API接口 |产品经理一定要懂的10%技术知识
作为产品经理,掌握约10%的技术知识对处理API相关工作至关重要。这包括理解API的基本概念及其作为数据交换的桥梁作用;熟悉JSON和XML两种主要数据格式及其特点;了解常见HTTP请求方法(GET、POST、PUT、DELETE)及响应状态码;关注API安全性,如认证授权和数据加密;掌握API版本管理和错误处理技巧;重视性能优化,以提升用户体验;参与API联调测试,确保稳定可靠;并与前后端团队紧密协作,选择合适的第三方API服务,推动产品高效开发。
|
23天前
|
缓存 监控 API
微服务架构下RESTful风格api实践中,我为何抛弃了路由参数 - 用简单设计来提速
本文探讨了 RESTful API 设计中的两种路径方案:动态路径和固定路径。动态路径通过路径参数实现资源的 CRUD 操作,而固定路径则通过查询参数和不同的 HTTP 方法实现相同功能。固定路径设计提高了安全性、路由匹配速度和 API 的可维护性,但也可能增加 URL 长度并降低表达灵活性。通过对比测试,固定路径在性能上表现更优,适合微服务架构下的 API 设计。

热门文章

最新文章

相关产品

  • 函数计算