华为云函数详情

函数包含:hsam模板文件+函数源码及依赖包

1.配置文件结构

参考文档:

1.http://note.youdao.com/noteshare?id=903ab654d02e3ad5496774fab9595028&sub=8FA88DB421034DF196650E80AE814CC7

2.https://support.huaweicloud.com/tg-functiongraph/functiongraph_08_0380.html

python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
HcCrmTemplateVersion: v1
Resources:
hello-python3:
Type: HC::Serverless::Function
Properties:
Handler: index.handler
Runtime: Python3.6
CodeType: zip
CodeFileName: index.zip
CodeUrl: ""
Description: ""
MemorySize: 128
Timeout: 3
Version: latest
Environment:
Variables: {}
InitializerHandler: ""
InitializerTimeout: 0
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
HcCrmTemplateVersion: v1
Resources:
java-test:
Type: HC::Serverless::Function
Properties:
Handler: com.function.demo.TiggerTest.ltsTest
Runtime: Java8
CodeType: jar
CodeFileName: javafunction.jar
CodeUrl: ""
Description: ""
MemorySize: 128
Timeout: 3
Version: latest
Environment:
Variables: {}
InitializerHandler: ""
InitializerTimeout: 0

2..函数结构

  • Nods.js工程ZIP包目录示例

    1
    2
    3
    4
    5
    Example.zip                            示例工程包
    |--- lib 业务文件目录
    |--- node_modules npm三方件目录
    |--- index.js 入口js文件(必选)
    |--- package.json npm项目管理文件
  • Python工程ZIP包目录示例

    1
    2
    3
    4
    5
    6
    Example.zip                            示例工程包
    |--- com 业务文件目录
    |--- PLI 第三方依赖PLI目录
    |--- index.py 入口py文件(必选)
    |--- watermark.py 实现打水印功能的py文件
    |--- watermark.png 水印图片

  • Java工程ZIP包目录示例

    1
    2
    3
    4
    5
    6
    7
    8
    Example.zip                            示例工程包
    |--- DISTest.jar 业务功能JAR包
    |--- commons-lang-2.6.jar 第三方依赖JAR包
    |--- commons-beanutils-1.9.1.jar 第三方依赖JAR包
    |--- commons-collections-3.2.1.jar 第三方依赖JAR包
    |--- commons-logging-1.1.1.jar 第三方依赖JAR包
    |--- ezmorph-1.0.6.jar 第三方依赖JAR包
    |--- json-lib-2.4.jar 第三方依赖JAR包

  • Go工程ZIP包目录示例

    1
    2
    Example.zip                            示例工程包
    |--- testplugin.so 业务功能包
  • C#工程ZIP包目录示例

    1
    2
    3
    4
    5
    6
    7
    Example.zip                                   示例工程包
    |--- fssExampleCsharp2.0.deps.json 工程编译产生文件
    |--- fssExampleCsharp2.0.dll 工程编译产生文件
    |--- fssExampleCsharp2.0.pdb 工程编译产生文件
    |--- fssExampleCsharp2.0.runtimeconfig.json 工程编译产生文件
    |--- Handler 帮助文件,可直接使用
    |--- HC.Serverless.Function.Common.dll 函数工作流提供的dll
  • 定制运行时

    1
    2
    Example.zip                                   示例工程包
    |--- bootstrap 可执行引导文件

3..执行逻辑

用户函数执行调度包括以下几个阶段。

  1. FunctionGraph预先为函数分配执行函数的容器资源。
  2. 下载函数代码;
  3. 通过runtime运行时加载代码。
  4. 用户函数内部进行初始化逻辑。
  5. 函数处理请求并将结果返回。

其中1、2、3是系统层面的冷启动开销,通过对调度以及各个环节的优化,函数服务能做到负载快速增长时稳定的延时。第4步是函数内部初始化逻辑,属于应用层面的冷启动开销,例如深度学习场景下加载规格较大的模型、数据库场景下连接池构建、函数依赖库加载等等。

Initializer是函数的初始化逻辑入口,不同于请求处理逻辑入口的handler,在有函数初始化的需求场景中,设置了Initializer后,FunctionGraph首先调用initializer完成函数的初始化,之后再调用handler处理请求;如果没有函数初始化的需求则可以跳过initializer,直接调用handler处理请求

为了减小应用层冷启动对延时的影响,函数计算推出了initializer接口,系统能识别用户函数的初始化逻辑,从而在调度上做相应的优化。

4.边缘端函数部署(目前只支持部署创建的python函数部署)

1.在IEF中注册边缘节点

2.获取edge管理工具安装包和配置文件包

3.登陆边缘机器,部署管理工具

4.等待mqtt服务启动

查看云端边缘节点是否纳管和启动

5.创建函数应用

6.添加节点并部署函数到边缘节点

IEF云边协同原理解析:

http://note.youdao.com/noteshare?id=59138617dbb24e995b634e245a30548b&sub=F30864F0FC594AA79D867CC5C390DA11

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2018-2020 丁振莹
  • 访问人数: | 浏览次数:

你的每一分支持,是我努力下去的最大的力量 ٩(๑❛ᴗ❛๑)۶

支付宝
微信