【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

三分钟迁移 Spring boot 工程到 Serverless

  • 2019-10-22
  • 本文字数:1399 字

    阅读完需:约 5 分钟

三分钟迁移Spring boot工程到Serverless

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


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


FunctionGraph 有明显的成本和维护优势,但是怎样才能把标准的 Spring Boot 应用程序当做函数在 FunctionGraph 上运行起来呢?现在以我本地的一个SpringBoot工程为例展示快速迁移到华为云 FunctionGraph 的流程。

准备工作

下载ServerlessSpringBoot2-1.0.0.jar

迁移流程

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,因此一开始提示找不到路径,稍加修改后可以看到效果:


注意事项

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


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


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


4 如果代码需要经常改动,请将所有的依赖包打包成一个 zip,上传到 OBS,创建函数时填入依赖代码包的地址,后续更新代码时,只需要上传一个小的 jar 包即可;


5 如果业务代码中使用了 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);


6 如果需要使用本 demo 的代码,请先把 application.properties 中的 mysql 信息改为自己的公网访问配置:



另外在数据库中创建 users 表和 books 表。


users 表结构如下:



books 表结构如下:


总结

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


本文转载自公众号中间件小哥(ID:huawei_kevin)。


原文链接:


https://mp.weixin.qq.com/s/OFmgR5gg0SxAb4AGUyWf6A


2019-10-22 23:221116

评论

发布
暂无评论
发现更多内容

大作业二

「架构师训练营第 1 期」

大作业一

饭桶

架构作业(二)

薛凯

人人都在谈的数字化转型,区块链技术能扮演何种角色?

CECBC

区块链

数字人民币为何频频入榜金融机构“工作单”

CECBC

数字人民币

Windows安装Mysql

千泷

大数据计算引擎Spark

积极&丧

重学JS | this的指向问题

梁龙先森

大前端 编程语言 28天写作

架构师第 13 课作业及学习总结

小诗

「架构师训练营第 1 期」

【HTML】全局属性:accesskey

德育处主任

html html5 大前端 快捷键 28天写作

依赖倒置与接口隔离原则

玄月

JVM 垃圾回收机制分析

Andy

Prometheus官方文档【查询篇-运算符】

卓丁

Prometheus Monitor 监控告警 普罗米修斯 PromQL

大作业二

饭桶

架构师训练营大作业

Cheer

数据应用总结(一)

Mars

架构师第 8 课作业及学习总结

小诗

「架构师训练营第 1 期」

架构师第 11 课作业及学习总结

小诗

「架构师训练营第 1 期」

接私活必备的 6 个开源项目

GitHub指北

Dubbo微服务调用时序图

Andy

MapReduce函数分析

Mars

福田区实现数字人民币六个100%,农行推出ATM机存取现功能

CECBC

数字红包

架构师第 7 课作业及学习总结

小诗

「架构师训练营第 1 期」

架构师第 10 课作业及学习总结

小诗

架构师第 12 课作业及学习总结

小诗

生命唯愿,爱与自由

废材姑娘

个人感悟

第二周作业

MR.X

大作业:知识点图谱

paul

架构师第 9 课作业及学习总结

小诗

「架构师训练营第 1 期」

Python 100 天从新手到大师

GitHub指北

第 12 周作业

Steven

三分钟迁移Spring boot工程到Serverless_文化 & 方法_袁慎溪_InfoQ精选文章