
# 产品功能
#### 函数管理
提供控制台管理函数。
- 函数支持Node.js、Python、Java、Go、C#、PHP运行时语言，同时支持用户定制运行时，说明如[表1]所示。
  ![](https://support.huaweicloud.com/productdesc-functiongraph/public_sys-resources/note_3.0-zh-cn.png)
  建议使用相关语言的最新版本。
   表1运行时语言说明 
  | 运行时语言   | 支持版本                                                    |
  |:---|:---|
  | Node.js | 6.10、8.10、10.16、12.13、14.18、16.17、18.15、20.15           |
  | Python  | 2.7、3.6、3.9、3.10、3.12                                   |
  | Java    | 8、11、17、21                                              |
  | Go      | 1.x                                                     |
  | C#      | .NET Core 2.1、.NET Core 3.1、.NET Core 6.0、.NET Core 8.0 |
  | PHP     | 7.3、8.3                                                 |
  | Cangjie | 1.0                                                     |
  | 定制运行时   | -                                                       |
     
  
- 函数支持多种代码导入方式 支持在线编辑代码、OBS文件引入、上传ZIP包、上传JAR包等方式。不同运行时支持的代码上传方式如[表2]所示。
   表2代码上传方式说明 
  | 运行时     | 在线编辑 | 上传ZIP文件 | 上传JAR包 | 从OBS上传文件 |
  |:---|:---|:---|:---|:---|
  | Node.js | 支持   | 支持      | 不支持    | 支持       |
  | Python  | 支持   | 支持      | 不支持    | 支持       |
  | Java    | 不支持  | 支持      | 支持     | 支持       |
  | Go      | 不支持  | 支持      | 不支持    | 支持       |
  | C#      | 不支持  | 支持      | 不支持    | 支持       |
  | PHP     | 支持   | 支持      | 不支持    | 支持       |
  | Cangjie | 不支持  | 支持      | 不支持    | 支持       |
  | 定制运行时   | 支持   | 支持      | 不支持    | 支持       |
     
  
 
 #### 函数触发器
函数支持配置多种类型触发器，触发器调用方式如[表3]所示。
 表3函数触发器的调用机制 
| 触发器                         | 调用方式                                                                                                                                   |
|:---|:---|
| API网关服务（APIG专享版）            | 默认为同步调用，但可以修改为异步调用，具体配置方式请参考[配置函数的异步调用](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0160.html#section2)。 |
| API Connect（APIC）           | 默认为同步调用，但可以修改为异步调用，具体配置方式请参考[配置函数的异步调用](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0160.html#section2)。 |
| 定时触发器（TIMER）                | 默认为同步调用。                                                                                                                               |
| 云审计服务（CTS）                  | 默认为异步调用，且不可修改。                                                                                                                         |
| 文档数据库服务（DDS）                | 默认为异步调用，且不可修改。                                                                                                                         |
| 数据接入服务（DIS）                 | 默认为异步调用，且不可修改。                                                                                                                         |
| 分布式消息服务 Kafka版（KAFKA）       | 默认为异步调用，且不可修改。                                                                                                                         |
| 开源Kafka（OPENSOURCEKAFKA）    | 默认为异步调用，且不可修改。                                                                                                                         |
| 分布式消息服务 RabbitMQ版（RABBITMQ） | 默认为异步调用，且不可修改。                                                                                                                         |
| 云数据库 GeminiDB Mongo         | 默认为异步调用，且不可修改。                                                                                                                         |
| 设备接入（IoTDA）                 | 默认为异步调用，且不可修改。                                                                                                                         |
| 云日志服务（LTS）                  | 默认为异步调用，且不可修改。                                                                                                                         |
| 消息通知服务（SMN）                 | 默认为异步调用，且不可修改。                                                                                                                         |
| EventGrid触发器                | 默认为异步调用，且不可修改。                                                                                                                         |
   
 #### 日志和监控
提供调用函数的监控指标和运行日志的采集和展示，实时的图形化监控指标展示，在线查询日志，方便用户查看函数运行状态和定位问题。
日志的查询过程请参考[配置和查看函数的调用日志](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_1834.html)。
单个监控指标请参考[监控信息说明](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0212.html)。
租户函数监控指标请参考[总览页面介绍](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0110.html#section1)。
#### 初始化功能
引入initializer接口：
- 分离初始化逻辑和请求处理逻辑，程序逻辑更清晰，让用户更易写出结构良好，性能更优的代码。
- 用户函数代码更新时，系统能够保证用户函数的平滑升级，规避应用层初始化冷启动带来的性能损耗。新的函数实例启动后能够自动执行用户的初始化逻辑，在初始化完成后再处理请求。
- 在应用负载上升，需要增加更多函数实例时，系统能够识别函数应用层初始化的开销，更准确的计算资源伸缩的时机和所需的资源量，让请求延时更加平稳。
 
#### 函数流
函数流是用来编排FunctionGraph函数的工具，可以将多个函数编排成一个协调多个分布式函数任务执行的工作流。
用户通过在可视化的编排页面，将事件触发器、函数和流程控制器通过连线关联在一个流程图中，每个节点的输出作为连线下一个节点的输入。编排好的流程会按照流程图中设定好的顺序依次执行，执行成功后支持查看工作流的运行记录，方便您轻松地诊断和调试。
函数流功能特性和优势：
- 功能特性
  1. 函数可视化编排
  
  2. 函数流执行引擎
  
  3. 错误处理
  
  4. 可视化监控
   
- 优势
  1. 使用更少代码快速构建应用程序 函数流允许用户将函数组合编排成一个完整的应用程序，而无需进行代码编写。可以实现快速构建，快速上线。当业务调整时，可以快速调整流程，完成快速上线，无需编写任何代码。
     
  
  2. 完善的错误处理机制 支持对流程中发生的错误进行捕获和重试，用户可以进行灵活的异常处理。
     
  
  3. 可视化的编排和监控体验 通过拖拽进行流程编排，学习成本低，可以快速上手。
     监控页面使用流程可视化的查看方式，可以做到快速识别问题位置。
     
   
 
#### 统一插件开发和调试
**VSCode** **插件支持**（云下）：
通过模板创建函数，在云端查看函数并下载到本地调试，使用VSCode插件调试，将本地函数推送到云端。
#### HTTP函数
**该特性仅FunctionGraph v2版本支持。**
HTTP函数专注于优化 Web 服务场景，用户可以直接发送 HTTP 请求到 URL 触发函数执行。在函数创建编辑界面增加类型。HTTP函数只允许创建APIG/APIC的触发器类型，其他触发器不支持。
#### 调用链
用户通过页面函数配置开启调用链，开启后可以链接到APM服务页面查看jvm、调用链等信息，当前仅支持JAVA函数。
#### 自定义镜像
**该特性仅FunctionGraph v2版本支持。**
支持用户直接打包上传容器镜像，由平台加载并启动运行，调用方式与HTTP函数类似。与原来上传代码方式相比，用户可以使用自定义的代码包，不仅灵活也简化了用户的迁移成本。
