阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

三分钟迁移 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:221106

评论

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

买堡垒机成本有哪些?可以产生哪些收益?

行云管家

网络安全 信息安全 堡垒机 堡垒

软件测试/测试开发丨Selenium Web自动化测试基本操作

测试人

Python 软件测试 自动化测试 测试开发 selenium

互助系统源码|USDT众筹理财系统模型搭建开发

V\TG【ch3nguang】

USDT承兑支付系统开发 理财系统

IPQ6010 with QCN9074 Solution|5G and Wi-Fi 6: A Dynamic Duo for the Connected Future

wallyslilly

IPQ6010 QCN9074

NFTScan 正式上线 Base NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT\

新媒必看!如何利用文件传输软件拿到一手资料!

镭速

文件传输 大数据文件传输

iOS IPA包的制作和上传步骤详解​

证书 开发 上架 Windows ios

斩获“年度突破成果”奖!天翼云构建强大AI算力基础,制胜人工智能新时代

天翼云开发者社区

云计算 云服务 云平台

突破连接壁垒,火山引擎边缘云网络的先行之路

火山引擎边缘云

云服务边缘架构 边缘云 边缘云原生

共创共赢,天翼云携手用友打造商业创新一体化解决方案!

天翼云开发者社区

云计算 AI 数据治理

英特尔和新思科技深化合作,提供基于英特尔先进制程节点的领先IP

E科讯

泰山众筹拼团互助模式系统DAPP定制开发

V\TG【ch3nguang】

众筹 拼团

大数据平台和数据中台的定义、区别以及联系

行云管家

大数据 数据中台 数据仓库 大数据平台

阿里云 MSE 助力开迈斯实现业务高增长背后带来的服务挑战

阿里巴巴云原生

阿里云 微服务 云原生

Docker容器中的Postgresql备份脚本异常解决办法

这我可不懂

Docker k8s postgres

生产制造关键业务模型拆解与平台化演进

华为云开发者联盟

后端 物联网 华为云 华为云开发者联盟 企业号 8 月 PK 榜

MatrixOne内核1.0.0-RC1版本正式发布啦!

MatrixOrigin

数据库 云原生 MatrixOrigin MatrixOne 矩阵起源

iOS IPA包的制作和上传步骤详解​

雪奈椰子

ios打包 上架 Windows ios

AI量化交易机器人系统搭建,搬砖套利软件程序开发设计

V\TG【ch3nguang】

量化交易机器人开发 套利

小灯塔系列-中小企业数字化转型系列研究——企业邮箱测评报告

向量智库

怎样快速选择正确的可视化图表?

树上有只程序猿

数据可视化

链游开发成本是多少

西安链酷科技

区块链游戏 链游 NFT链游

Alfred 5 for Mac(Mac应用快速启动器) v5.1.2(2145)中文激活版

mac

Alfred 苹果mac Windows软件 快速启动工具

Node与Express后端架构:高性能的Web应用服务

互联网工科生

Web Node Express

做SAST工具的我们,出路在哪里?

maijun

SAST工具 SAST工作方向 SAST技术方向

数据科学教学必看!如何最大化利用和鲸的资源与平台赋能教学工作

ModelWhale

人工智能 大数据 数据科学 高等教育 数据资源

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