三分钟迁移弹簧引导工程到Serverless

<强>前言

春季启动已成为当今最流行的Java后端开发框架,典型的应用方式是在云上购买一台虚拟机,每天24小时在上面运行Java程序,在这种情况下,用户必须维护自己的虚拟机环境,而且按照包月包年等方式进行付费。

,

华为云FunctionGraph(函数工作流服务)有着零运维,低成本计算的特点,FunctionGraph按需运行代码,无需配置和管理主机,您仅需为代码执行的每100毫秒和次数付费,如果代码没有运行的话,不会产生任何费用,而且每个月还有较多的免费额度。

,

FunctionGraph有明显的成本和维护优势,但是怎样才能把标准的弹簧引导应用程序当做函数在FunctionGraph上运行起来呢?现在以我本地的一个SpringBoot工程(链接https://functionstage, examples.obs.cn -北- 1. - myhwclouds.com/serverlessspringbootdemo.zip)为例展示快速迁移到华为云FunctionGraph的流程。

,

<强>准备工作

下载ServerlessSpringBoot2-1.0.0.jar(链接https://functionstage, examples.obs.cn -北- 1. myhwclouds.com/serverlessspringboot2 1.0.0.jar)。

,

<>强迁移流程

01。<强>制作函数zip包

三分钟迁移弹簧引导工程到Serverless

按照上面的动图添加fgs.properties配置文件,增加两个配置项fgs.component-scan和fgs.mapper-scan,然后导包。

,

三分钟迁移弹簧引导工程到Serverless

所得的ServerlessSpringBootDemo。邮政就是最终的函数代码包。

,

02。<>强创建函数

在华为云入口找到FunctionGraph服务,进去后选择创建函数,函数名称建议设置为控制器中的根路径,例如本例的webtest,选择语言为Java8,另外设置函数执行入口为com.huawei.fgs.ext.handler.Main。处理程序,选择zip包方式上传代码(或者可以将代码先传入观察桶,使用观察上,传方式创建),创建成功。

三分钟迁移弹簧引导工程到Serverless

,

03。<强>创建APIG触发器

函数创建完成后修改内存为1024年,修改超时时间为30(首次启动时间较长)并保存。接下来切换到触发器选项卡,点击创建触发器,选择APIG,将安全认证改成没有,后端超时设置为30000,和函数超时保持一致,点击确定完成创建。

三分钟迁移弹簧引导工程到Serverless

,

<>强检验结果

直接在浏览器中访问APIG生成的URL,因为演示中的控制器中并没有匹配/webtest路径的RequestMapping,因此一开始提示找不到路径,稍加修改后可以看到效果:

三分钟迁移弹簧引导工程到Serverless

<强>注意事项

1,使用SpringBoot AOP的特性时,请不要将切面定义到控制器层,否则会导致无法使用;

2,目前控制器都会视作RestController,所有的接口均会以ResponseBody形式返回,暂时不支持返回html页面;

3,在application.properties中去掉server.port配置,加入spring.main。web环境=false配置项可以小幅提升首次启动速度;

4,如果代码需要经常改动,请将所有的依赖包打包成一个邮政,上传到奥林匹克广播服务公司,创建函数时填入依赖代码包的地址,后续更新代码时,只需要上传一个小的jar包即可。

5,如果业务代码中使用了过滤器,需要对代码进行修改,具体方式后续会提供(本示例中有简单使用例子,依赖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);

6,如果需要使用本演示的代码,请先把应用程序。属性中的mysql信息改为自己的公网访问配置:

三分钟迁移弹簧引导工程到Serverless

,

另外在数据库中创建用户表和书表。

用户表结构如下:

三分钟迁移弹簧引导工程到Serverless

,

书表结构如下:

三分钟迁移弹簧引导工程到Serverless

,

<强>总结

综上所述,整个迁移过程非常简单,用户无需改造自己的业务代码,只需在资源目录下新增的投篮。属性文件即可,导包过程和常规情况稍有不同,按照上面的步骤也可以在数秒内完成,最后创建好函数和触发器之后,整个流程就完成了。

三分钟迁移弹簧引导工程到Serverless