典型案例 3:十分钟搭建弹性可扩展的 Web API

2023-10-27

作者 | 萧起 阿里云云原生团队

导读:本节课程主要分为三个部分,基本概念中介绍基于函数计算的 WebAPI 与普通的 WebAPI 的区别及优势;开发流程中介绍如何在函数计算的控制台进行 WebAPI 的开发;操作演示中会实例演示函数计算 WebAPI 的开发过程。

基本概念

幻灯片 3.PNG

常见的 WebAPI 架构如上图所示,主要包括客户端(浏览器)、服务器、数据库,WebAPI 由服务器提供,同时服务器要完成负载均衡、登录鉴权的相关操作。

当客户端流量快速增大时,服务器端只能通过水平扩展加机器的方式来增加提高服务能力。

这种常规模式主要有两点局限性:

  • 技术同学除了开发业务代码,有大量的服务器运维成本,来保证服务的稳定性、可用性,技术同学要花费很多时间进行运维工作,占用开发时间,降低项目研发效率。

  • 流量突然增加时,需要水平扩展加机器,弹性的响应能力差,扩容速度往往要数十分钟,无法实现秒级极速扩容,导致一段时间内的服务能力不足。同时当流量变少时,难以做到及时缩容,造成机器的成本浪费。

幻灯片 4.PNG

基于函数计算的 WebAPI 架构如上图所示,与常规的 WebAPI 架构相比,客户端和数据库未发生变化,但服务器变化巨大,主要体现在:

  • 之前需要开发团队维护的路由模块以及鉴权模块都将接入服务商提供的 API 网关系统以及鉴权系统,开发团队无须再维护这两部分的业务代码,只需要持续维护相关规则即可。

  • 在这个结构下,业务代码也被拆分成了函数粒度,不同函数表示不同的功能。

  • 我们已经看不到服务器的存在,是因为 Serverless 的目的是让使用者只关注自己的业务逻辑即可,所以一部分安全问题、资源调度问题(例如用户量暴增、如何实现自动扩容等)全都交给云厂商负责。

  • 相对于传统项目而言,传统项目无论是否有用户访问,服务都在运行中,都是有成本支出,而 Serverless 而言,只有在用去发起请求时,函数才会被激活并执行,且会按量收费,可以实现在有流量的时候才有支持,没有流量的时候就没有支出,相对来说,成本会进一步降低。

开发流程

1. 登录函数计算控制台,创建应用

3.png

可以通过两种方式来创建应用,如果是已有的 Web 项目,可以选择上图中的第一种方式:“常见 Web 应用”;对于新项目则推荐使用第二种方式:“基于模板创建应用”。我们这里使用模板方式,选择基于 Python 的 Web 应用。

模板可以当做应用脚手架,选择适合的模板,可以自动完成相关依赖资源的创建,如角色、OSS、域名网关等,降低开发成本。

2. 新建函数

4.png

在应用下,创建函数,我们是开发 WebAPI,所以选择“HTTP”函数,这种函数会将指定的 http 请求作为触发器,来调度对应函数的执行。

函数新建好之后,是个返回 helloWorld 的 demo,我们在此基础上来开发我们的业务逻辑。

image.png

首先介绍下上图代码中的 handler 函数,这个函数是入口函数,http 触发器接收到调用后会通过这个入口来启动整个函数。函数有两个入参,environ 和 start_response:

  • environ

environ 中主要包含两部分内容:http 请求的入参和函数执行上下文 fcContext,函数上下文参数中包含一些函数运行时的信息(例如 request id 、 临时 AK ),您在代码中可以使用这些信息。信息类型是 FCContext。

  • start_response

该参数主要用于生成 http 请求的 response。

3. 配置触发器,绑定域名

image.png

在新建函数时会自动创建一个 http 触发器,这个触发器的路径是“aliyun.com”的一个测试路径,只能用于测试,真实的应用需要通过自定义域名将真实域名与函数绑定,这样访问指定域名时,对应函数就会被触发执行。

4. 日志与监控

在每个函数编辑页面,日志和监控服务,函数的每次执行都会生成唯一的 requestId,日志中通过 requestId 进行查询,看到本次函数执行的所有日志。

image.png

操作演示

点击链接即可观看演示视频:https://developer.aliyun.com/lesson202418999

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

典型案例 3:十分钟搭建弹性可扩展的 Web API 的相关文章

  • 在做课设时,用到的一个创建作业功能

    再做一个图书借阅系统的课设时 因为需要在数据库里实时更新某个人当前借阅图书的逾期天数 需要每次打开电脑都获取当前日期 再减去应还书日期 当时一直想不到一个很好的解决方法 然后在网上查了些资料 说是要用到sql server 创建作业的办法
  • Python实现自动化办公

    人工智能 AI 是当今世界最为热门的话题之一 而Python是从事AI领域最为流行的编程语言 在本文中 我将介绍如何使用Python实现自动化办公和处理工资表等知识教程 帮助您从零入门人工智能Python 一 制作Excel可视化报表 在传
  • 使用Jmeter进行性能测试

    文章目录 一 性能测试 性能测试介绍 性能指标QPS 每秒查询率 性能指标TPS 每秒处理的事务数目 QPS和TPS的不同点 二 Jmeter性能测试案例 三 Jmeter性能测试结果分析 1 如何得到可靠的测试报告 2 运行实际负载测试时
  • php苹果内购验证,苹果内购凭据验证工具(苹果支付,苹果内购,凭据解析)

    use sn01615 iap ios Verify include vendor autoload php cc new Verify receipt 凭据 cc gt endpoint true 可选 切换到沙盒环境 cc gt set
  • 生草shader的几种方法总结

    草地shader一直是shader效果的热门主题 实现草地效果 结合了集合绘制 顶点动画 光照很多shader编程的技巧 这里总结一下我在网上查到博客的几种实现方案 我居然拖了一年还没有写完 woc 反正也没有人看 先发一个 第一位是che
  • 怎么采集dedecms自定义内容模型

    有时我们需要用到dedecms提供的自定义内容模型功能去添加自定义内容模型来满足需求 那么dedecms自定义内同模型怎么添加采集规则呢 打开 dede templets co add step0 htm 找到如下代码 19行左右
  • 软考高级之系统架构师之企业应用集成EAI

    概述 在企业信息化建设的过程中 由于缺乏统一规划和总体布局 往往形成多个信息孤岛 信息孤岛使数据的一致性无法得到保证 信息无法共享和反馈 需要重复多次的采集和输入 信息孤岛是企业信息化一个重要的负面因素 其主要原因既有技术因素也有管理因素
  • 云服务器创建win10虚拟机吗,云服务器创建win10虚拟机

    云服务器创建win10虚拟机 内容精选 换一换 弹性云服务器 Elastic Cloud Server 以下简称ECS 是由CPU 内存 镜像 云硬盘组成的一种可随时获取 弹性可扩展的计算服务器 同时它结合VPC 虚拟防火墙 数据多副本保存
  • 深度优先搜索(DFS)

    算法入门 郭志伟 SYSU raphealguo at qq com 2012 05 12 1 前言 深度优先搜索 缩写DFS 有点类似广度优先搜索 也是对一个连通图进行遍历的算法 它的思想是从一个顶点V0开始 沿着一条路一直走到底 如果发
  • 记录一个接口. 接口同时传输参数和很多流的情况

    和一个保险系统的对接 文本类型的参数咱不多说 因为接口数据源是保险订单和保险理赔 所以需要传输一些图片和视频信息 比如说合同发票 定损图片和视频等等 这种需求的处理比较合适的方案是约定一个FTP SFTP服务器 然后参数中还传递文件的路径和
  • php的debug显示不全,【已解决】VSCode调试PHP时无法显示长字符串变量完整值

    折腾 未解决 php中用正则过滤html中code中多余span标签 期间 用VSCode去调试PHP期间 发现个问题 对于变量的值 如果很长的话 右键拷贝出来的值 只有一部分 不是完整的字符串 鼠标移动上去显示出来的效果 内容不完整 右键

随机推荐