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

本文整理自《Serverless 技术公开课》,关注“Serverless”公众号,回复“入门”,即可获取 Serverless 系列文章 PPT。

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

基本概念

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

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

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

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

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

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

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

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

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

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

开发流程

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

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

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

2. 新建函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iQ5uqAL0-1599790642253)(https://ucc.alicdn.com/pic/developer-ecology/c75ecf8ed1824448aaf6d4d65b57b2be.png)]

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

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

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

  • environ

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

  • start_response

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Ve7kuk6-1599790642256)(https://ucc.alicdn.com/pic/developer-ecology/ec3fe5734f8c4340a5b1e39f6ab51b14.png)]

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

4. 日志与监控

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

操作演示

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

课程推荐

为了更多开发者能够享受到 Serverless 带来的红利,这一次,我们集结了 10+ 位阿里巴巴 Serverless 领域技术专家,打造出最适合开发者入门的 Serverless 公开课,让你即学即用,轻松拥抱云计算的新范式——Serverless。

点击即可免费观看课程:https://developer.aliyun.com/learning/roadmap/serverless

Serverless 公众号,发布 Serverless 技术最新资讯,汇集 Serverless 技术最全内容,关注 Serverless 趋势,更关注你落地实践中的遇到的困惑和问题。

教你 4 步搭建弹性可扩展的 WebAPI相关推荐

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

    作者 | 萧起 阿里云云原生团队 导读:本节课程主要分为三个部分,基本概念中介绍基于函数计算的 WebAPI 与普通的 WebAPI 的区别及优势:开发流程中介绍如何在函数计算的控制台进行 WebAP ...

  2. 教你一步搭建Flume分布式日志系统

    在前篇几十条业务线日志系统如何收集处理?中已经介绍了Flume的众多应用场景,那此篇中先介绍如何搭建单机版日志系统. 环境 CentOS7.0 Java1.8 下载 官网下载 http://flume ...

  3. Vue+SpringBoot图书管理系统前后端分离(教你一步一步搭建)

    Vue+SpringBoot图书管理系统前后端分离(教你一步一步搭建) 介绍: 说明: 环境搭建 后端环境搭建 1.新建一个工程(只有收费版的idea才有这个选项哦) 2.选择Java8 4.配置工程 ...

  4. 为你写诗:3 步搭建 Serverless AI 应用

    作者 | 杜万(倚贤) 阿里巴巴技术专家 本文整理自 1 月 2 日社群分享,每月 2 场高质量分享,点击加入社群. 关注"阿里巴巴云原生"公众号,回复关键词 0102 即可下载本 ...

  5. 亲测三遍!8步搭建一个属于自己的网站

    前言 本文使用华为云服务,向大家搭建属于自己的网站,搭建过程会详细介绍.搭建网站的过程亲自走了3遍,确认没问题才写这篇博客的,大家放心地根据步骤流程一步一步.如果大家担心自己能不能搭建成功,本文有网站 ...

  6. python为你写诗_为你写诗:3 步搭建 Serverless AI 应用

    作者 | 杜万(倚贤) 阿里巴巴技术专家 导读:本文作者将以一个自动生成五言绝句诗句的示例,向大家介绍一个典型函数计算的应用场景:AI Model Serving(AI 模型服务化).内容分三个部分进 ...

  7. kubernetes一步一步搭建与https访问

    原文链接:https://blog.csdn.net/xxb249/article/details/79437989 (1)kubernetes一步一步搭建 众所周知,kubernetes(简称k8s ...

  8. 手把手教你使用 VuePress 搭建个人博客

    手把手教你使用 VuePress 搭建个人博客 有阅读障碍的同学,可以跳过第一至四节,下载我写好的工具包: git clone https://github.com/zhangyunchencc/vu ...

  9. windows不是正版_你的电脑win10系统是正版吗?教你四步测试

    目前电脑使用的大多数是win10系统,该系统的很多特点也大受用户的喜爱,但是有时候系统卡顿会面临装系统问题,那么,怎样才知道自己电脑上安装的是不是正版系统呢?下面教大家四步检测方法. 第一步 利用电脑 ...

最新文章

  1. 如果没有StyleGAN2,真以为初代就是巅峰了:英伟达人脸生成器高能进化,弥补重大缺陷...
  2. Elasticsearch的功能、使用场景以及特点
  3. z变换解差分方程例题_某些常见微分方程的一般解法(工具向)
  4. window下批处理:打开命令窗口且执行后不关闭
  5. python分数序列求和_Python练习题 019:求分数序列之和
  6. 《迎接互联网的明天——玩转3D Web》
  7. 在vs2013下利用vb.net简单使用WebService实例
  8. Vue + ElementUI el-input无法输入、修改、删除的问题
  9. Dapper Object must implement IConvertible.
  10. 内存操作函数:memcmp、memcpy、memmove、memset 的使用与模拟。
  11. 分享视频剪辑必备的三个素材软件(配音/文案/图片)
  12. 基于CodeMirrorTernJS的汉语Javascript编辑器(和翻译器)
  13. 喜马拉雅的增量市场,AIOT能够承载多少空间?
  14. 图灵奖得主长文报告:是什么开启了计算机架构的新黄金十年?
  15. 看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水。
  16. svn:E170001:Authorization failed
  17. arm开发板用无线网卡连接ap
  18. 【深度探讨】哪些领域将迎来区块链爆发性增长
  19. Mahara中文体验平台-易魔灯提供
  20. 【往届均已检索】2022年视觉,图像与信号处理国际会议(ICVISP 2022)

热门文章

  1. 005 NsPack 1.4 之附加数据初探
  2. HDU2035人见人爱A^B(快速幂求余)
  3. HDU2026 首字母变大写
  4. 1080 Graduate Admission (30 分)【难度: 一般 / 知识点: 模拟 排序】
  5. Thymeleaf设置属性值
  6. Spring boot的Web开发
  7. h5 跳转上个页面刷新_关于javascript跳转与返回和刷新页面
  8. linux 文件 跳板机_shell实现跳板机
  9. 基于python的视频监控系统_Python远程视频监控程序的实例代码
  10. Spark DataFrame 添加自增id