更新时间:2025-08-12 gmt 08:00

构建程序-j9九游会登录

  1. 通过web托管方式改造微服务。改造过程中,如果微服务是基于spring框架,则需要使用functiongraph提供的sdk,即在pom.xml文件中添加步骤1中依赖。此时,您只需修改配置以及打包方式即可将微服务改造成serverless函数。具体操作步骤如下:
    1. 配置微服务依赖。
      在项目工程的pom.xml文件中添加如下依赖:
      
          com.huawei.yuanrong
          microservice-function-functiongraph
          ${version} 
      
    2. 配置微服务打包配置。
      1. 在微服务的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
                            
                        
                    
                
            
        
      2. 在微服务项目创建src/main/assembly/zip_file.xml,并写入如下代码:
        
        
            auto-deploy
            
            
                zip
            
            
            
                
                    src/main/resources/
                    config
                    
                        **
                    
                    0600
                    0700
                
            
            
            
                
                    lib
                    runtime
                
            
        

        12执行完成后,文件的项目结构如图1所示。

        图1 项目结构
    3. 构建出包。
      在项目根目录直接执行mvn clean package或者使用idea的打包方式,如图2所示。
      图2 idea打包
      完成后会在target目录下,生成一个${project.parent.artifactid}-${project.version}-serverless.zip包,如图3所示。
      图3 serverless.zip包
    4. 部署函数。
      在准备步骤1中,已经创建了一个名为mfa-service-serverless的java函数,现在需要将打包好的项目包上传到函数中,如图4所示。
      图4 项目包上传
      图5 选择zip文件

      若zip包超过40m,需要通过obs方式上传,如图6所示。

      • 进入对象存储服务,选择一个已有桶,或者创建新的桶。
      • 将步骤1.c中打包好的mfa-services-0.0.1-snapshot-serverless.zip包上传。
        图6 上传对象
      • 获取对象地址,如图7所示。
        图7 对象地址
      • 通过obs上传代码包,如图8所示。
        图8 上传代码包
    5. 配置函数常规配置,如图9所示。
      图9 常规设置
      • 通过托管方式改造的函数入口统一固定为:com.huawei.yuanrong.function.handler.handlerestrequest。
      • 执行超时时间和内存可以根据业务属性配置。超时时间表示,当请求执行超过该配置时间时,该次请求会因为超时而失败;内存根据业务运行过程中所需的内存大小配置,当内存使用超过该配置值时,函数实例可能会被迫停止而导致请求失败。
    6. 配置环境变量。

      通过托管方式改造,需要统一配置以下两个参数:

      • 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 环境变量
    7. 配置函数初始化入口。

      可选操作,在开启“快照式冷启动”或“预留实例”功能时为必选。函数初始化入口为固定配置:com.huawei.yuanrong.function.handler.initializer,如图12所示。

      图12 函数初始化入口配置
    8. 开启预留实例或者快照式冷启动。

      通过预留实例,或者快照式冷启动功能,可以加速函数启动时间,减少请求时延。预留实例使用可参考预留实例管理,快照式冷启动使用可参考配置快照式冷启动

  2. 通过独立函数方式改造微服务。

    直接函数化改造,是将微服务业务代码迁移到云函数内,基于spring框架的微服务需要剥离spring才能将微服务改造成serverless函数。

    1. 新建一个全新的maven工程,如图13所示。
      图13 新建maven工程
    2. 业务代码迁移。

      将原项目代码迁移至新项目,文件目录与原项目相同,删除使用的spring框架自动注入的标签。自动注入的类,需要用户自己创建对象。新创建的pom.xml中dependency应该为空,迁移过程中根据需要添加依赖,不用的jar包尽量不引入,根据需要在pom.xml中添加jar包依赖。

    3. 新增函数平台依赖,引入请求参数和响应类。
      在pom文件中添加如下依赖:
      
          com.huawei.serverless
          runtime
          1.1.9
      
    4. 编写函数执行入口类。

      以新建adjustmenthandler类为例,原有接口为executequeryanduploadwithparam,将去spring之后的原有的executequeryanduploadwithparam接口逻辑放到adjustmenthandler类中的executequeryanduploadwithparam方法中进行调用。

      原逻辑和现逻辑分别如图14图15所示:
      图14 原逻辑
      图15 现逻辑
    5. 本地测试。
      将接口调用逻辑在本地通过main函数进行测试,如图16所示。验证通过后再上线函数平台测试。
      图16 main函数
    6. 配置函数。
      • 参照准备中创建函数的步骤,创建以mfa-import-serverless命名的函数。
      • 重复托管方式改造中2-4步骤,上传函数代码包。
      • 配置函数入口,入口为包名.类名.方法名,举个例子:com.huawei.xxxx.xxx.adjustmenthandler.executequeryanduploadwithparam。
      • 配置函数环境变量:无需再配置spring_start_class和cxf_enabled,业务按需配置其它的环境变量。
      • 配置函数初始化入口。可选,用户可以自定义函数初始化时(接收请求之前)需要进行的操作。一个例子:

        public void initfunction(context context) {

        // 业务自身逻辑,可以去远程拉取一些配置数据等

        }

        配置初始化入口:包名.类名.方法名,如图17所示。

        图17 函数初始化入口
      • 开启预留实例/快照式冷启动功能,与步骤8相同。

相关文档

网站地图