课时4:函数的开发与配置(二)

本文涉及的产品
简介: 函数的开发与配置

Serverless AI训练营:课时4:函数的开发与配置(二)

课程地址https://developer.aliyun.com/trainingcamp/1eeaedf056f14ad98e9986c31068e939?spm=a2c6h.26142516.J_2566289780.1.37c67cbd7bCsFs

课时4:函数的开发与配置(二)

2、函数

  image.png

接下来看函数和函数配置。在函数计算中函数是核心概念,函数是管理和运行的基本单元,函数通常由一系列的配置和一个可运行的代码包组成。函数的配展如图所示:

Runtime是函数运行时的环境类型,函数计算目前支持PythonJavaPHP 等开发环境,同时也支持用户来定义这个运行环境。空Code 是函数代码包,函数计算的后端是指认代码包的,各个开发工具会自动帮助打包,比如可以在控制台上编写代码,控制台会将代码自动打包,并且创建函数或者更新函数。也可以在本地编写函数或者调试函数,通过部署工具部署函数计算。

代码包中主要是有代码以及代码所需要的第三方依赖,比如代码当中用到了一些第三方的库,也需要将第三方的库和代码一同打到这个代码包里面。Handler 是入口函数,在代码中写了非常多的函数。虽然有十个函数,但是入口就是这一个,handler就是告诉函数计算入口函数的位置;Timeout是函数的超时时间,如果函数计算执行超过了这个时间函数就会被强制停止执行;

Memory Size是为函数分配的执行环境的内存,目前的取值范围是128M3G,如果函数耗用的内存超过了分配的内存就会 OM 掉。接下来是 Initializer 叫做初始化函数,之前介绍函数计算执行环境的时候有讲到,函数计算会为函数分配执行环境,第一次分配的时候会有冷启动,当前这个请求执行完成后,函数计算不会立即释放,如果在一段时间内有新的请求来的时候,可以复用这个执行环境。Initializer 的逻辑就是在第一次分配环境中来执行的,并且保证同一个执行环境执行且执行一次。

第一次的时候函数计算会为这些请求来分配实例,然后这实例会立即被释放掉,第二个请求和第三个解决都可以复用这个实例,Initializer 就是第一次创建这个实例之后,立刻就执行了证明和逻辑,去找初始化函数。

其实这个特性同一执行环境中执行自身的特性,就可以将一些建立链接,加载音乐这些耗时的操作放到 Initializer 里面来执行。

3、触发器

上节课是介绍了函数计算支持的丰富的世界元类型,在事件驱动的计算模型中,事件源是事件的生产者,函数是事件的处理者,触发器提供了一种集中统一的方式来管理不同的事件源。当事件发生时,如果满足触发器定义的规则,事件源会自动触发,自动调用这个触发器所对应的函数。典型的使用场景包括对上传的 OSS 当中的对象进行处理,比如图像处理,音视频转码,OSS 的包解压,然后也包括对 SLS 中的日志进行清洗与处理,转存等等。

4、版本

前面介绍了服务,函数和触发器,开发者就可以基于函数计算把应用搭建起来,但是又有了新的问题,开发者有了新需求,需要更新代码。如果要保证线上应用不受影响,在写更新代码的时候,更新的是线上应用的版本。为了解决这个问题,函数计算就引入了版本和别名,别名是版本相当于服务的快照,包括服务的配置,服务内所有的函数的代码及函数的配置。

在开发和测试完成后就可以发布一个版本单调递增,版本发布后已发布的版本不能更改,可以继续在latest 版本上开发测试,不会影响已发布的版本。调用函数的时候,只需要指定版本就可以调用指定函数了。版本名称是函数计算指定的,而且是单调递增的,每次发布一个版本都会有一个新的版本名称,每次发布版本之后,要在客户端指定对应哪个版本。

就客户端是否还需要不断的来更改代码来指向最新的版本这个问题,引入了别名的概念,别名就是指向特定服务版本的指针,它本身下面是没有任何资源的,它是一个指针。

客户端只需要指定别名就可以保证最新的代码或者回归到某一个版本的代码,别名只有指挥发布的功能,10%的流量指向最新的版本,90%的流量指向老版本,这是可以的。只需要将别名指向以前的版本就可以迅速完成回滚。版本和别名解决了,函数不断更新迭代的问题让函数在开发的同时不会影响线上正在应用的服务。

 

三、开发流程

这是一个完整的开发流程,如图所示,开发者需要先创建服务,设置日志、权限这些配置,然后创建函数。当前版本是 Latest 版本,在 Latest 版本下编写代码开发函数,测试通过后可以发布版本。

第一次发布的版本是版本一,创建别名指向版本一就可以对外提供服务了。客户端调用函数的日志会记录在开发者配置的Log Store 里,函数计算提供完备的监控图表,应用上线后发布者可以通过监控图表和日志来查看应用的健康状况。

开发者有新的需求的时候,可以继续在 Latest 版本来更新代码开发函数,测试通过后就可以发布版本。这个时候线上的版本是刚才的版本编码,测试的版本 Latest 版本就是当前版本,当前版本是通过后就发布一个新的版本即版本二。

如果有现场业务进行灰度发布,先切换线上别名 10%的流量到版本二,接下来的请求10%会落到新的版本上,90%会落到老的版本上,这样就可以实现灰度发布,观察一段时间以后没有问题就可以切换百分之百的流量到版本二。

image.png

 

四、操作演示

最后通过一个事例来为大家演示应用完整的开发流程。

打开函数极端的控制台,然后创建一个服务开始,在这里新建服务 Demo Service。这里有一个绑定日志,指的就是正常情况下可以配置自己的 Log Project Log store,但是往往第一次的时候不知道怎么配置,所以函数计算这里默认创建了一个 Project,然后创建一个 Log Store,这个服务下面的所有日志都会打到这个 project 中,选择绑定日志,就是函数计算自动的帮助创建一个 project,并且将 project 设置为service对应下的 Loft Fik

 image.png

image.png

image.png

在创建这个 Service 的时候,它就只指定了 Loft Fik 的,可以在这其中对它进行更多的配置,可以点击修改。

这就是函数计算控制台默认帮助创建的,这个默认配置是允许访问公网,然后是不允许访问 VPC。如果是访问 VPC 的话就把允许访问 VPC 资源键打开,选择一下要访问的 VPC 的信息。

创建好服务之后继续来创建一个函数,选择这个服务,再点新建函数,这里有三个事件函数,HTTP 函数和函数模板,HTTP 函数是函数的入参就是 HTTP request 的返回值,APPresponse可以直接做应用的 solo,事件函数是函数的入参是用户可以指定的一个入参,它不是request,不是指定什么就是什么,返回值也是指定什么就是什么,就是像平时写的函数一样。模板是提供的一些比较常用的模板,以 hello word 函数为例,也是可以切换到其他服务的。

image.png

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
8月前
|
人工智能 运维 监控
|
10月前
|
Java 调度 Spring
写项目常用的三个功能(课时二十五)
写项目常用的三个功能(课时二十五)
35 0
|
7月前
|
存储 安全 编译器
C++:入门学习C++,它在C的基础上做了哪些修改?
C++:入门学习C++,它在C的基础上做了哪些修改?
|
8月前
|
人工智能 JavaScript Serverless
|
8月前
|
存储 Serverless 文件存储
|
8月前
|
监控 Serverless 文件存储
课时4:函数的开发与配置
课时4:函数的开发与配置
187 1
|
8月前
|
人工智能 Serverless 开发工具
课时5:函数的调试与部署
函数的调试与部署
170 0
|
8月前
|
Serverless API 调度
课时2:函数计算是如何工作的?
函数计算是如何工作的
212 0
|
10月前
|
前端开发 Java
CRUP(课时十七)
CRUP(课时十七)
39 0
|
10月前
|
BI 定位技术 Python
SWMM从入门到实践教程 04 快速入门案例的模拟执行
在左侧双击Options中的Dates,即可弹出时间的设置。此处为了教学,建议仅模拟6个小时,加快结果的生成。实际项目中,可以根据需求对指定场次的降雨时常进行模拟,并注意这个时常一定不低于降雨时常(我们的雨量计设置了2小时降雨,所有66个小时的模拟也是合理的)。

热门文章

最新文章