补充 serveless 概念 (因为下面将创建一个 serveless 项目)
ServerlessQ,又叫无服务器。Serverless 强调的是一种架构思想和服务模型,让开发者无需关心基础设施(服务器等),而是专注到应用程序业务逻辑上。Serverless 也是下一代计算引擎。
Serverless 简化了云计算的编程,其代表了程序员生产力的又一次的变革,如编程语言从汇编Q时代演变为高级语言时代。-- 简化云编程: 克利关于 Serverless 计算的观点
Serverless,FaaS 和托管服务之间的关系
Serverless 与 FaaS (函数即服务) 通常被视为可以互换的术语,这并不准确。Serverless 是一种抽象层次更高的架构模式,而**“FaaS + BaaS”**只是 Serverless 这种架构模式的一种实现。
其中,FaaS 是一种特定类型的服务,例如 AWS Lambda,Google Cloud Functions,AzureFunctions,阿里云函数计算和腾讯云云函数等等,而 Baas (后端即服务)可以理解为其他类型的托管服务,例如数据库服务,对象存储服务和日志服务等等。
Serverless 具有的特质
这里叫特质,而非特性,因为这些属于 Serverless 架构的固有元素,我们无法像处理其它可塑特性那样做出调整。而特质是天然存在的。
●免运维: 不需要管理服务器主机或者服务器进程
●弹性伸缩: 根据负载进行自动规模伸缩与自动配置。伸缩范围零到无穷大。
●按需付费: 根据使用情况决定实际成本。
●高可用: 具备隐含的高可用性。
项目创建
使用npm init midway 查看完整的脚手架列表,选中某个项目后,Midway 会自动创建示例目录,代码,以及安装依赖。
npm init midway
这里我们选择fass-v3,输入项目名称,脚手架会帮我们创建一个简单的项目工程,等安装完成使用Vscode 打开项目。可以得到现在的工程目录
●src 整个 Midway 项目的源码目录,你之后所有的开发源码都将存放于此。
●test 项目的测试目录,之后所有的代码测试文件都在这里。
●package.json Node.js 项目基础的包管理配置文件
●tsconfig.json TypeScript 编译配置文件
启动项目
npm init dev
在浏览器中输入127.0.0.1:7001
function 文件
我们来看一下代码中的 src/function/hello.ts 文件
import { Provide, Inject, ServerlessTrigger, ServerlessTriggerType, Query, } from '@midwayjs/decorator'; import { Context } from '@midwayjs/faas'; @Provide() export class HelloHTTPService { @Inject() ctx: Context; @ServerlessTrigger(ServerlessTriggerType.HTTP, { path: '/', method: 'get', }) async handleHTTPEvent2(@Query('name') name = 'midwayjs') { return `Hello ${name}`; } }