前言html
Spring Boot已成为当今最流行的Java后端开发框架,典型的应用方式是在云上购买一台虚拟机,天天24小时在上面运行Java程序,在这种状况下,用户必须维护本身的虚拟机环境,并且按照包月包年等方式进行付费。java
华为云FunctionGraph(函数工做流服务)有着零运维、低成本计算的特色,FunctionGraph按需运行代码,无需配置和管理主机,您仅需为代码执行的每100ms和次数付费,若是代码没有运行的话,不会产生任何费用,并且每月还有较多的免费额度。mysql
FunctionGraph有明显的成本和维护优点,可是怎样才能把标准的Spring Boot应用程序当作函数在FunctionGraph上运行起来呢?如今以我本地的一个SpringBoot工程(连接https://functionstage-examples.obs.cn-north-1.myhwclouds.com/ServerlessSpringBootDemo.zip)为例展现快速迁移到华为云FunctionGraph的流程。web
准备工做spring
下载ServerlessSpringBoot2-1.0.0.jar(连接https://functionstage-examples.obs.cn-north-1.myhwclouds.com/ServerlessSpringBoot2-1.0.0.jar)。sql
迁移流程数据库
01.制做函数zip包后端
按照上面的动图添加fgs.properties配置文件,增长两个配置项fgs.component-scan和fgs.mapper-scan,而后导包。所得的ServerlessSpringBootDemo.zip就是最终的函数代码包。浏览器
02.建立函数安全
在华为云入口找到FunctionGraph服务,进去后选择建立函数,函数名称建议设置为Controller中的根路径,例如本例的webtest,选择语言为Java8,另外设置函数执行入口为com.huawei.fgs.ext.handler.Main.handler,选择zip包方式上传代码(或者能够将代码先传入OBS桶,使用OBS上传方式建立),建立成功。
03.建立APIG触发器
函数建立完成后修改内存为1024,修改超时时间为30(首次启动时间较长)并保存。接下来切换到触发器选项卡,点击建立触发器,选择APIG,将安全认证改为NONE,后端超时设置为30000,和函数超时保持一致,点击肯定完成建立。
检验结果
直接在浏览器中访问APIG生成的URL,由于demo中的Controller中并无匹配/webtest路径的RequestMapping,所以一开始提示找不到路径,稍加修改后能够看到效果:
注意事项
一、使用SpringBoot的AOP特性时,请不要将切面定义到Controller层,不然会致使没法使用;
二、目前Controller都会视做RestController,全部的接口均会以ResponseBody形式返回,暂时不支持返回html页面;
三、在application.properties中去掉server.port配置,加入spring.main.web-environment=false配置项能够小幅提高首次启动速度;
四、若是代码须要常常改动,请将全部的依赖包打包成一个zip,上传到OBS,建立函数时填入依赖代码包的地址,后续更新代码时,只须要上传一个小的jar包便可;
五、若是业务代码中使用了filter,须要对代码进行修改,具体方式后续会提供(本demo中有简单使用例子,依赖FunctionGraph的Java SDK(连接https://functionstage-sdk.obs.myhwclouds.com/java-sdk/fss-java-sdk-1.1.0.zip)中的Runtime-1.1.0.jar和ServerlessSpringBoot2-1.0.0.jar);
六、若是须要使用本demo的代码,请先把application.properties中的mysql信息改成本身的公网访问配置:
另外在数据库中建立users表和books表。
users表结构以下:
books表结构以下:
总结
综上所述,整个迁移过程很是简单,用户无需改造本身的业务代码,只需在资源目录下新增fgs.properties文件便可,导包过程和常规状况稍有不一样,按照上面的步骤也能够在数秒内完成,最后建立好函数和触发器以后,整个流程就完成了。关于API网关的详情,能够点击这里体验哦~