构建程序-j9九游会登录
- 通过web托管方式改造微服务。改造过程中,如果微服务是基于spring框架,则需要使用functiongraph提供的sdk,即在pom.xml文件中添加步骤1中依赖。此时,您只需修改配置以及打包方式即可将微服务改造成serverless函数。具体操作步骤如下:
- 配置微服务依赖。
在项目工程的pom.xml文件中添加如下依赖:
com.huawei.yuanrong microservice-function-functiongraph ${version} - 配置微服务打包配置。
- 在微服务的pom.xml(即步骤1中的pom)文件中配置maven-assembly-plugin作为打包插件。
org.apache.maven.plugins maven-assembly-plugin 2.2 true false auto-deploy package single src/main/assembly/zip_file.xml ${package.finalname} ${package.outputdirectory} 0700 0600 0700 - 在微服务项目创建src/main/assembly/zip_file.xml,并写入如下代码:
auto-deploy zip src/main/resources/ config ** 0600 0700 lib runtime 图1 项目结构
- 在微服务的pom.xml(即步骤1中的pom)文件中配置maven-assembly-plugin作为打包插件。
- 构建出包。
在项目根目录直接执行mvn clean package或者使用idea的打包方式,如图2所示。图2 idea打包
完成后会在target目录下,生成一个${project.parent.artifactid}-${project.version}-serverless.zip包,如图3所示。图3 serverless.zip包
- 部署函数。
若zip包超过40m,需要通过obs方式上传,如图6所示。
- 配置函数常规配置,如图9所示。
图9 常规设置
- 通过托管方式改造的函数入口统一固定为:com.huawei.yuanrong.function.handler.handlerestrequest。
- 执行超时时间和内存可以根据业务属性配置。超时时间表示,当请求执行超过该配置时间时,该次请求会因为超时而失败;内存根据业务运行过程中所需的内存大小配置,当内存使用超过该配置值时,函数实例可能会被迫停止而导致请求失败。
- 配置环境变量。
通过托管方式改造,需要统一配置以下两个参数:
- spring_start_class:springboot的启动类名,如图10所示。
图10 mfa-services启动类截图
- cxf_enabled:cxf应用(典型的有jalor)为true,否则为false。
- mfa-services的启动类是mfamainapplication。
- 配置其他环境变量。
用户后续可以通过system.getproperty(“key”)的方式,获取到这里配置的环境变量。在传统微服务启动时,支持指定命令行参数,如java -dfoo=bar xxx.jar。在serverless函数部署时,可以通过环境变量的方式配置这些参数。
以上环境变量参数配置,如下图11所示。
图11 环境变量
- spring_start_class:springboot的启动类名,如图10所示。
- 配置函数初始化入口。
可选操作,在开启“快照式冷启动”或“预留实例”功能时为必选。函数初始化入口为固定配置:com.huawei.yuanrong.function.handler.initializer,如图12所示。
图12 函数初始化入口配置
- 开启预留实例或者快照式冷启动。
通过预留实例,或者快照式冷启动功能,可以加速函数启动时间,减少请求时延。预留实例使用可参考预留实例管理,快照式冷启动使用可参考配置快照式冷启动。
- 配置微服务依赖。
- 通过独立函数方式改造微服务。
直接函数化改造,是将微服务业务代码迁移到云函数内,基于spring框架的微服务需要剥离spring才能将微服务改造成serverless函数。
- 新建一个全新的maven工程,如图13所示。
图13 新建maven工程
- 业务代码迁移。
将原项目代码迁移至新项目,文件目录与原项目相同,删除使用的spring框架自动注入的标签。自动注入的类,需要用户自己创建对象。新创建的pom.xml中dependency应该为空,迁移过程中根据需要添加依赖,不用的jar包尽量不引入,根据需要在pom.xml中添加jar包依赖。
- 新增函数平台依赖,引入请求参数和响应类。
在pom文件中添加如下依赖:
com.huawei.serverless runtime 1.1.9 - 编写函数执行入口类。
以新建adjustmenthandler类为例,原有接口为executequeryanduploadwithparam,将去spring之后的原有的executequeryanduploadwithparam接口逻辑放到adjustmenthandler类中的executequeryanduploadwithparam方法中进行调用。
图15 现逻辑
- 本地测试。
将接口调用逻辑在本地通过main函数进行测试,如图16所示。验证通过后再上线函数平台测试。图16 main函数
- 配置函数。
- 参照准备中创建函数的步骤,创建以mfa-import-serverless命名的函数。
- 重复托管方式改造中2-4步骤,上传函数代码包。
- 配置函数入口,入口为包名.类名.方法名,举个例子:com.huawei.xxxx.xxx.adjustmenthandler.executequeryanduploadwithparam。
- 配置函数环境变量:无需再配置spring_start_class和cxf_enabled,业务按需配置其它的环境变量。
- 配置函数初始化入口。可选,用户可以自定义函数初始化时(接收请求之前)需要进行的操作。一个例子:
public void initfunction(context context) {
// 业务自身逻辑,可以去远程拉取一些配置数据等
}
配置初始化入口:包名.类名.方法名,如图17所示。
图17 函数初始化入口
- 开启预留实例/快照式冷启动功能,与步骤8相同。
- 新建一个全新的maven工程,如图13所示。
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨





