玩转AIGC训练营:课时10:典型案例3:十分钟搭建弹性可扩展的 Web API
课时10:十分钟搭建可弹性可扩展的 WebAPI
内容介绍:
一、基本概念
二、WebAPI的开发流程
三、操作演示
一、基本概念
1. 基本概念中介绍了基于函数计算的 WebAPI 和普通 WebAPI 有什么区别并有哪些优势
2. 开发流程中介绍了如何在函数计算的控制台进行 WebAPI 的开发
3. 操作演示中会根据实例演示函数计算 WebAPI 的开发过程
常见 WebAPI 的架构如图所示,包括客户端、服务端、数据库,WebAPI由服务器提供,同时服务器还要完成负载均衡、登录健全、日志监控等相关操作。
当客户端流量快速增加时服务端只能通过水平扩展加机器的方式来增加自建的服务能力,这种常规模式主要分析两点局限性:
1. 技术同学除了开发业务代码,有大量的服务器运维成本,来保证服务的稳定性、可用性
2. 流量增加时只能水平扩展加机器,响应速度慢、成本高。
基于函数计算的 WebAPI 架构中与常规的 WebAPI 架构相比,客户端数据库未发生变化,主要的变化体现在服务器端,主要体现有:
1. 之前需要开发团队维护的路由模块以及健全模块都将接入服务商提供的API网关系统以及健全系统,开发团队无需再维护这两部分的代码,只需要维护相关的规则即可。
2. 在这样的结构下,服务器端的业务代码被拆分为一个个的函数,不同的函数就代表了不同的功能。
上图中可以看到,在函数计算的 WebAPI 架构中已经没用了服务器的存在这是因为 Serverless 的目的就是为了让使用者只关注自己的业务逻辑即可。也就是每个业务逻辑对应的函数,所以像安全问题、资源调度问题全部交给云厂商来负责。
相对于传统的项目而言,传统项目无论是否有用户访问,服务器都在运行当中,这将造成比较大的成本支出,而 Serverless 而言,只有在用户去用,发起请求时,函数才会被激活执行。并且按照调用次数收费,相对来说可以在有流量的时候才有支出,没有流量的时候就没用支出。成本会进行进一步的降低。
二、WebAPI的开发流程
第一步登录控制台并创建应用。创建应用的方式有两种:
1. 如果现有WebAPI应用,直接创建应用将代码打包上传。
2. 通过模板来创建应用,模板可以理解为相当于一个脚手架,可以快速的帮助完成一些基础配置,比如说权限、角色、网关一系列的配置。
完成创建应用后就是在应用下创建函数,主要支持事件函数、HTTP函数、模板函数,本次选择HTTP函数
创建完函数之后就开始具体开发业务逻辑,业务逻辑开发完之后就要配置一个触发器。因为是WebAPI的方式,所以触发器就是HTTP的请求,在这里可以指定域名来设定。
最后可以通过函数计算的监控来进行调试,以及服务上线之后使用量的监控情况
三、实际演示整个WebAPI的开发流程。
首先进入管理控制台,选择应用中心,基于模板创建应用
选择基于 Python 的应用,配置并部署,上述提到通过模板方式来创建应用相当于一个脚手架,会把底层所依赖的资源创建好,只有基于资源去开发函数就可以,可以提高开发效率。
创建 HTTP 函数,选择 PythonAPI,语言选择 Python3.0
请求方式选择 GET
通过这样的操作函数计算会生成函数,会有初始化的实现,就在这个基础之上进行开发。
首先先将 plain 改为 json,格式改为 Save lnvoke,返回的结果依然是 Hello worldi,现在就拥有了一个非常简单的 WebAPI
实现过程就是当用户按照触发器配置路径进行访问的时候就会触发写的函数代码的执行最终反馈一个结构给用户。
现在触发器的路径是自动生产的,现实情况下会选择自己的域名自己的路径。
进入到自定义域名
在域名下配置一个已有路径
比如说就用 webapi.json 路径,调用我们自己的函数,版本选择 LATEST,经过这样的配置当访问域名下路径的时候就会触发我们定义的函数
我们进行简单的修改
这样我们就完成了一个简单的 WebAPI
假设一个场景
用户去访问链接的时候,可以把文件的内容反馈给用户,首先我们先定一个基本依赖,handler是HCC触发器之后所运行的函数Environ,包含两部份内容,一部分是函数计算的上下文,上下文中存了当前用户的基本信息方便操作,第二部分是包含了 HCC 请求里的一些参数。
编写一些代码并执行
添加一些权限
就达到了预期。
整个逻辑梳理一下,首先配置了域名,域名下配置了 webapi.json 路径,当用户访问路径的时候就会触发到触发器,触发器就会调动函数,函数过程中访问了 OSS 当中的文件并把文件内容反馈给用户。这样一个完整的功能就实现了。
看一下函数调用情况
在函数指标的地方就可以看到最近一个小时所有的调用情况,比如说使用了多少内存、执行了多少时间以及调用成功的情况,有没有失败。