检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
准备 该场景涉及微服务与后端服务的调用,因此需要提前准备好对应的后端服务。用户可以使用自己搭建的后端服务,也可以使用华为云提供的云服务。 若后端服务需要通过虚拟私有云(VPC)访问,函数需要进行额外配置,若可以通过公网访问后端服务,可以跳过以下步骤2和步骤3。 创建Java函数(
案例概述 场景介绍 MetaERP业务场景进行微服务Serverless化改造,如图1所示,将低频使用但资源占用大的微服务逻辑,拆分成独立函数,常驻实例缩容到0;剩余微服务逻辑以Spring兼容方式进行函数化,实现函数化后的微服务快速冷启动和弹性,常驻实例减半。 图1 MFA Serverless改造前后架构
构建程序 通过Web托管方式改造微服务。改造过程中,如果微服务是基于spring框架,则需要使用FunctionGraph提供的SDK,即在pom.xml文件中添加步骤1中依赖。此时,您只需修改配置以及打包方式即可将微服务改造成serverless函数。具体操作步骤如下: 配置微服务依赖。
添加事件源 添加APIG触发器(每个函数分别创建触发器),通过HTTP请求调用函数。 填写API名称,选择分组、发布环境、认证、请求协议、超时时间等配置,单击”确定”完成触发器创建,如图1所示。 图1 创建触发器 创建后可以获得一个调用URL,通过这个URL进行函数的调用,如图2所示。
步骤四:搭建函数部署脚本更新流水线 此流水线的主要作用是将函数部署脚本deploy.py发布到部署主机上,供函数更新流水线使用。 新建构建任务 在“构建&制品 > 编译构建”页面,单击“新建任务”。 源码仓库选择“functions仓库”,构建模板选择“空白构建模板”,完成单击“确定”。
测试函数 测试托管方式改造函数,调用方法如图1所示。 图1 测试函数调用的方法 调用时,遵循原来的请求方法。 请求url为添加事件源创建的APIG触发器地址。 需要在headers里配置requestPath,值为图1中的@Path(可能会包含一些服务前缀,对应微服务改造之前的请求Path即可),如图2所示。
镜像类型支持公开和私有,具体详情请参考编辑镜像属性。 自定义容器镜像开放端口限定为8000。 可支持的镜像包最大为10G,当镜像包过大时可以采取一些方式缩容,比如在线题库场景中,可以把原来加载在容器中的题库数据通过外部文件系统挂载盘方式挂载到容器中。 FunctionGraph通过LTS日志采集容器输出
logg.info("hello") getAlias 获取函数的别名 开发Node.js函数 如下为本地开发后上传实例,也可以直接在页面创建在线编辑。 约束与限制: 本例函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样
最小值为128,最大值为10240。 cpu 函数占用的CPU资源。 code_type 函数代码类型,取值有4种: inline:UI在线编辑代码。 zip:函数代码为zip包。 jar:函数代码为jar包,主要针对Java函数。 obs:函数代码来源于OBS存储。 code_url
选择“Python 2.7”。 函数执行入口 输入“index.handler”。 代码上传方式 函数配置时,先选择“默认代码”。在配置“页签”选择“在线编辑”,输入如下代码。 # -*- coding:utf-8 -*- import json import requests def handler
函数初始化入口Initializer 概述 Initializer是函数的初始化逻辑入口,不同于请求处理逻辑入口的handler,在有函数初始化的需求场景中,设置了Initializer后,FunctionGraph首先调用initializer完成函数的初始化,之后再调用han
8M内存占0.1个核(100 millicores)。 code_type String 函数代码类型,取值有5种。 inline: UI在线编辑代码。 zip: 函数代码为zip包。 obs: 函数代码来源于obs存储。 jar: 函数代码为jar包,主要针对Java函数。 Custom-Image-Swr:
8M内存占0.1个核(100 millicores)。 code_type String 函数代码类型,取值有5种。 inline: UI在线编辑代码。 zip: 函数代码为zip包。 obs: 函数代码来源于obs存储。 jar: 函数代码为jar包,主要针对Java函数。 Custom-Image-Swr:
8M内存占0.1个核(100 millicores)。 code_type String 函数代码类型,取值有5种。 inline: UI在线编辑代码。 zip: 函数代码为zip包。 obs: 函数代码来源于obs存储。 jar: 函数代码为jar包,主要针对Java函数。 Custom-Image-Swr:
入口文件,上传后才能成功部署。 如果代码中包含敏感信息(如账户密码等),请您自行加密,以防信息泄露。 当部署的代码大于20M时,如图2所示在线编辑器将不展示代码,但仍可以正常测试函数代码。 图1 编辑器不展示代码 更多函数资源的限制,请参见使用限制。 操作步骤 登录函数工作流控制台,在左侧的导航栏选择“函数
8M内存占0.1个核(100 millicores)。 code_type String 函数代码类型,取值有5种。 inline: UI在线编辑代码。 zip: 函数代码为zip包。 obs: 函数代码来源于obs存储。 jar: 函数代码为jar包,主要针对Java函数。 Custom-Image-Swr:
配置函数流的函数服务组件 函数流支持配置函数服务组件,通过该组件可以关联已创建的函数,进而实现业务需求。 约束与限制 通过数据工坊DWR服务创建的函数流,在函数工作流控制台只能查看,不能编辑和删除,相关操作请在DWR服务中执行。 配置的函数节点返回的数据格式必须是json格式,否则会解析失败。
the inline code exceeds the maximum allowed limit (10 KB). 在线编辑代码大小超过限制(10K) 检查在线编辑代码大小是否超过限制(10K) 413 FSS.1201 The request body is too large
8M内存占0.1个核(100 millicores)。 code_type String 函数代码类型,取值有5种。 inline: UI在线编辑代码。 zip: 函数代码为zip包。 obs: 函数代码来源于obs存储。 jar: 函数代码为jar包,主要针对Java函数。 Custom-Image-Swr:
配置函数的快照式冷启动 FunctionGraph支持基于进程级快照的冷启动加速方案,用户无需额外付费,只需进行简单的配置、少量的代码修改,即可享受到该方案带来的冷启动性能提升。 当用户的Java函数启用快照式冷启动后,FunctionGraph会预先执行函数对应的初始化代码,获