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

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

基本概念

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

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

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

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

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

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

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

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

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

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

开发流程

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

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

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

2. 新建函数

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

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

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

  • environ

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

  • start_response

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

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

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

4. 日志与监控

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

操作演示

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

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

  1. 十分钟搭建和使用ELK日志分析系统

    十分钟搭建和使用ELK日志分析系统 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为" ...

  2. 十年建站老司机带你十分钟搭建网站

    十年建站老司机带你十分钟搭建网站 本文概要: 1. 域名 + 域名注册 + 域名备案 + 域名解析绑定 2. 服务器 + 虚拟主机 + windows服务器 + linux服务器 3. CMS建站系统 ...

  3. WordPress多本小说主题–WNovel主题发布,十分钟搭建小说站! 现已更新至1.2版本...

    本文转载于:猿2048网站WordPress多本小说主题–WNovel主题发布,十分钟搭建小说站! 现已更新至1.2版本 本文属于< WNovel主题操作手册>文章系列,该系列共包括以下 ...

  4. 10.11杭州Clouder lab 十分钟搭建共享应用 2:如何通过日志服务实现用户的日志收集与分析...

    场景描述 共享电动车企业使用函数服务搭建服务端.在函数服务中开启日志,把程序日志写到日志服务,同时在函数代码中使用SDK把运营日志写入到日志服务,使用日志服务进行日志分析. 在日志服务中,用户可以: ...

  5. 讯搜 配置mysql_迅搜,十分钟搭建一个搜索引擎

    假设有一堆词,也有一堆内容.现在想知道: 每个词的相关词有哪些? 每个词的相关内容有哪些? 每个内容的相关内容有哪些? 利用上述词与词.词与内容.内容与内容的关联,来优化页面的推荐信息,使用户和搜索引 ...

  6. WordPress详细建站教程,新手也能十分钟搭建WordPress个人博客

    简介 WordPress (简称 WP)可以说是全球最流行的博客系统了,没有之一,世界上约 30% 的网站都是基于 WordPress 搭建的. 相比于之前介绍的轻量版博客程序 Typecho,Wor ...

  7. 教你 4 步搭建弹性可扩展的 WebAPI

    作者 | 萧起 阿里云云原生团队 本文整理自<Serverless 技术公开课>,关注"Serverless"公众号,回复"入门",即可获取 Ser ...

  8. 十分钟搭建自己的私有NuGet服务器-BaGet

    点击上方蓝字"小黑在哪里"关注我吧 搭建BaGet 上传程序包 在vs中使用 其他 前言 NuGet是用于微软.NET(包括 .NET Core)开发平台的软件包管理器.NuGet ...

  9. react启动命令_十分钟搭建React开发环境

    React是facebook开源的js库,主要用于构建UI,它采用声明式的设计,通过虚拟dom,提高程序执行效率,并且实现了UI的响应式更新,目前react在前端项目中有着广泛的应用,本文主要讲解如何 ...

最新文章

  1. linux更新模块,Linux下Nginx的安装、升级及动态添加模块
  2. eclipse git提交代码_来看看大厂的Git提交规范,千万别乱提交代码哦...
  3. Modbus协议栈开发笔记之八:Modbus ASCII Master开发
  4. 分区安装linux,怎样安装Linux?
  5. @loadbalanced在哪个包里面_ABB机器人-选项包
  6. 使用foreach循环遍历集合元素
  7. 保险的现金价值是什么意思?
  8. centos之ctrl+z
  9. 软件系统测试用例设计,软件系统测试用例设计步骤
  10. [转]FTP搜索引擎的设计与实现
  11. django book学习笔记
  12. 分享几个实用的破解软件
  13. 计算机应用能力考试ppt,全国专业技术人员计算机应用能力考试 PPT 2003 题库版...
  14. 测绘资质高性能数据服务器,测绘资质分级标准2020年
  15. 芯片的本质是什么?(4)物质与数字世界接口
  16. 【算法】DFS与BFS
  17. 几款实用的内网穿透工具
  18. 软件体系结构基本概念汇总
  19. 从5G落地看2020年科技产业投资机会
  20. 改好DEBUG七处缺点的comexe实现报告

热门文章

  1. Bootstrap的目录结构
  2. python调用dll函数_从Python调用DLL函数
  3. 返回值类型有哪些_关于类型的思考
  4. mysql可以靠索引,而我只能靠打工,加油,打工人!
  5. IDEA万能快捷键,你不知道的17个实用技巧!!!
  6. linux下查找java的安装路径和java和tomcat的环境配置
  7. springmvc教程--RESTful支持详解
  8. struts2在加载首页是访问action
  9. 外键为主键可以重复原因
  10. Gentoo 安装日记 08 (安装stage3: 设置时区 和 Hostname)