初识 EMAS Serverless|学习笔记

本文涉及的产品
简介: 快速学习初识 EMAS Serverless。

开发者学堂课程【玩转EMAS Serverless精品课-疫苗预约小程序初识 EMAS Serverless】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/926/detail/14575


初识EMAS Serverless


内容介绍:

一、EMAs Serverless 使用场景

二、EMAS Serverless 产品能力

三、控制台功能演示

四、运行一个云函数

五、小程序 Deme 演示

六、云数据库

该课程适用人群有:计算机科学、软件工程等领域的软件工程师和大学生、尝试使用 Serverless 技术的小程序开发者、前、后端工程师、全栈工程师、探索 Serverless 的技术管理者。

一、EMAs Serverless 使用场景

开发小程序时,一般会涉及到数据存储、后端接口服务等等,这些都需要去开发。

图片1.png

1.EMAs Serverless 的特点

(1)面向多端

EMAs Serverless 面向多端小程序场景提供服务

(2)无需运维

全托管服务,将您从基础设施的管理工作中解放,专注业务领域创新

(3)弹性伸缩

实时弹性伸缩和动态负载均衡,轻松应对突发流量

2.举个例子

图片2.png

当你想要开发一个小程序的时候,不仅要写前端代码,还要开发服务器、对象存储、数据库、内容分发、日志、负载均衡等等。

当你使用了EMAS Serverless服务,面对开发小程序的多端场景。对服务器、OSS 等基础设施进行 API 的抽象封装,可以认为 EMAS Serverless = FaaS t+Baas 。FaaS 是函数计算,也就是云函数,Baas 是后端服务,也就是同时提供数据存储、文件存储等等一整套后端服务。

图片3.png

EMAS Serverless 提供包括云函数、数据存储.文件存储等一整套后端服务。计算资源作为服务而不是服务器的概念出现。开发者不需要关心服务器或底层运维设施,可以更专注于代码和业务本身。


二、EMAS Serverless 产品能力

应用层包括支付宝小程序、钉钉小程序、微信小程序和 HS/Wsb 应用等,通过统一的 SDK 接入,就可以使用云函数、云数据库、云存储和静态网站托管等能力。这些能力层都对用户开放,开发者可以通过 SDK 来接入这些能力。这些能力都是对资源层的抽象封装和接入实现的。

图片4.png


三、控制台功能演示

简单浏览控制台:

打开阿里云官网,搜索小程序云,可以看到:

图片5.png

1.点击控制台,可以看到服务空间管理:

图片6.png

一个服务空间就包含了一个运营环境,包含能力层的基本单位。

进入服务空间,这里选择 EMAS 2022,可以看到该服务空间的函数列表:

图片7.png

每个函数可以进行发布管理、日志查询、基本信息修改和函数的触发配置的功能:

图片8.png

2.打开云数据库的控制台:

图片9.png

可以新建一张数据表,对新数据表进行管理:

图片10.png

云数据库中的表叫做集合,相当于关系型数据库中的一张表等于云数据库中的一个集合,每个集合中有数据记录。

另外的功能有添加索引,对每张表的权限进行精细化的管理;数据回档的功能,可以将数据回档到任意一个时间点。

3.打开云存储的控制台:

图片11.png

云存储控制台包含上传文件,集成小程序 SDK 后,可以通过小程序上传文件。

还可以对权限进行管理:

图片12.png

打开静态网站托管的控制台:

图片13.png

开通完成静态网站后,可以上传静态网站的文件。

还有加速运营的功能,静态网站开发完成后,可以自定义其加速域名:

图片14.png

域名通过审核后,再通过自定义的域名去访问,会得到运营的加速。

4.云函数工作原理

图片15.png

5.用户操作:

开发人员编写业务代码,然后将业务代码打包上传至云函数的控制台。

小程序用户可以通过两种方式运营该云函数,一是通过集成 EMAS Serverless SDK 调用该云函数,云函数的运行结果返回,二是通过配置 HTTP 触发功能,通过 http 协议来调用云函数,最后还可以通过定时触发配置。当云函数跑起来后,会通过日志收集系统得知函数运行的结果及产生的中间日志。

6.云函数执行过程

图片16.png

假设前端传入第一个请求,先会有一个系统冷启动的阶段,该阶段主要包括后端调度实例(调度一个容器服务)、将代码下载并解压和启动该实例。实例完成冷启动后进入运行阶段,首先运行一个初始化环函数,初始化函数运行完成后开始执行 Initializer 函数(主入口),当该函数运行完成后会进入实例的释放时间。假设在实例释放时间有第二个请求进入,这时不需要重新从冷启动开始的流程,而是直接进入执行函数的阶段,当第二个请求也执行完毕后,也进入实例释放时间。实例释放结束后,该实例会被回收,这时第三个请求进入,由于实例已经释放,所以会从系统冷启动开始。(冷启动优化到毫秒级)


四、运行一个云函数

1.新建一个云函数(求两数之和):

运行环境选择 Node js 12

云函数创建完成,点击管理:

图片17.png

2.上传代码包:

由于该函数较简单,可以写一个:

首先做一个函数包的封装

传入一个 const 参数,下面是运行函数的上下文,可以使用提供的日志路口、日志打印。

module.exports=async(ctx)=>{

}

代码如下:

module.exports=async(ctx)=>{

const num1=ctx.args.num1

const num2=ctx.args.num2

return num1+num2

}

封装好后命名:

图片18.png

压缩该文件后上传代码包,再点击部署:

图片19.png

部署成功后运行该云函数

执行{“num1”,123,”num2”,124}

得到执行结果:

图片20.png

可以看到该函数留下的日志:

图片21.png


五、小程序 Deme 演示

打开支付宝小程序开发工具

包含小程序的项目目录:

主要包含 pages 目录和 app.js 文件。

app.js 文件是小程序的路口

pages 包含了小程序的每个页面,会在 pages 下创建目录

app.js 文件介绍:

app.js 文件主要做了 Serverless 的SDK ,提供了一个对象,将该对象初始化后传入一些初始化参数,该部分在第二节会细讲。

完成配置后,看到 index.xml 页面:

该页面包括:

一行文本,两个 input (接收用户输入的两个数),一个 button (让用户点击后调用 involefunction 方法),text 展示运行结果。

现在看云函数是如何调用的:

先将得到输入框的两个值,然后使用 SDK 提供的方法 my.serverless.function.invoke ,其接收两个参数,一个是函数名,函数名为 twoNumberSum,另一个是入参体。运行该函数,将结果放入 res,同时 res.result 将其值取出赋给 num1+num2 的结果。

代码如下:

async invokeFunction (){

const num1 =Number(this,data.num1)

const num2 =Number(this,data.num2)

const res=await my.serverless.function.invoke(‘twoNumber’,{num1,num2})

this.setData{

result:num1+’+’num2+’=’+res,result

})

}

运行:

图片22.png

在运行 demo 时,可以打开调试器,打开 natwork 页码,可以看到运行过程发生了什么:

图片23.png

运行后:

图片24.png

可以看到发起的一条请求,点击打开查看:

response 是云函数返回给开发者的结果

下面可以看到 data 就是返回给用户的结果。

图片25.png


六、云数据库

云数据库提供的是一种文档数据库,如果使用过 Mongo ,那么可以直接用云数据库。

接下来创建一张数据表 test 存放一些数据:

图片26.png

手动添加一条记录:

图片27.png

添加完成后发现该数据表自动生成 id :  

(每一个记录都有一个组件,可以理解为关系型数据中的一个组件)

图片28.png

如何在小程序端进行数据的读写:

以上一次演示为例,要将运行结果存到数据库要如何操作:

首先使用 Serverless 下的 db 对象,然后选中操作哪一个集合(这里是 test 集合),对该集合插入一条数据

然后组建该数据,将 num1 和num2 和运行结果(result)放入

重要代码如下:

async invokeFunction(){

const num1=Number(this.data.num1)

const num2=Number(this.data.num2)

const res =await my.serverless.function.invoke{‘twoNumberSum,{num1,num2}}

this.setData({

result=num1+’+’+num2+’=’+res.result

})

const result=res.result

await my.serverless.db.collection {‘test’},insertOne({num1,num2,result})

},

运行结果:

图片29.png    

打开调试器,发现数据插入失败:

图片30.png

回到控制台

失败原因是因为数据表提供了权限管理功能,仅管理员可写,所以写入数据失败:

图片31.png

修改权限为所有用户可写:

图片32.png

然后再进行演示

云函数运行结果:

图片33.png

调试器:

调用原函数的请求:

图片34.png

调用数据库的请求:

图片35.png

从图中可知,改动了一条数据,数据插入成功,并返回组件。

回到控制台验证,点击刷新:

图片36.png

看到数据写入该表

注意:

跑小程序 demo 时,要下载小程序开发的 id,注册小程序开发者账号并创建一个小程序,要将 app.js 中的参数改为自己的服务空间、appId 改为自己的支付宝小程序的 id 、spaceId 和 clientSecret 改为自己创建的服务空间的信息。

该信息在控制台,选中自己的开发环境,点击查看可以看到信息。

相关文章
|
4月前
|
Serverless
电子好书发您分享《五天玩转EMAS Serverless》
电子好书发您分享《五天玩转EMAS Serverless》
611 2
|
3月前
|
Serverless PyTorch 文件存储
EMAS Serverless文件存储问题之上传视频真机报错如何解决
在进行Serverless应用开发和部署时,开发者可能会遇到不同类型的报错信息;本合集着重收录了Serverless环境中常见的报错问题及其解决策略,以助于开发者迅速诊断和解决问题,保证服务的连续性和可用性。
399 1
|
4月前
|
Serverless
电子好书分享您《五天玩转EMAS Serverless》
电子好书分享您《五天玩转EMAS Serverless》
112 1
|
7月前
|
存储 小程序 IDE
EMAS Serverless搭建《私人云相册》小程序
基于EMAS Serverless的云函数、云数据库、云存储等云服务能力一站式快速开发一个小程序。
175 0
EMAS Serverless搭建《私人云相册》小程序
|
8月前
|
开发框架 Serverless 文件存储
EMAS Serverless文件存储的uploadFile方法
EMAS Serverless文件存储的uploadFile方法
117 1
|
10月前
|
机器学习/深度学习 运维 Java
EMAS Serverless
EMAS Serverless 是阿里云移动应用服务 (Mobile Application Service) 提供的一种无需管理服务器的云服务,可以帮助开发者更轻松地构建和部署移动应用后端服务。使用 EMAS Serverless,开发者可以将业务逻辑以函数的形式上传到云端,由阿里云自动承担运维和调度等工作,从而降低了应用开发和运维的成本。
164 1
|
10月前
|
Serverless 开发工具 数据库
Serverless 移动研发平台EMAS云函数管理工具
Aliyun EMAS Serverless 移动研发平台EMAS云函数管理
99 0
|
29天前
|
运维 监控 Android开发
应用研发平台EMAS产品常见问题之热更新和云发布不能共存如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
29天前
|
缓存 运维 Android开发
应用研发平台EMAS产品常见问题之私有云部署失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
29天前
|
缓存 测试技术 开发工具
应用研发平台EMAS产品常见问题之拿不到推送如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。

相关产品

  • 函数计算