写点什么

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

评论

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

云服务器在市场变化下的技术突破,企业运维中的基础保障

九河云安全

DCS_FunTester分布式压测框架更新(二)

FunTester

分布式 性能测试 测试框架 测试开发 FunTester

fil挖矿官网有哪些?fil挖矿平台有哪些?

fil挖矿平台有哪些 fil挖矿官网有哪些

趁着课余时间学点Python(十一)面向对象的理解(高潮)

ベ布小禅

8月日更

猎杀时刻!疯狂狩猎大厂offer,阿里高工总结698页Spring学习笔记

Java 编程 架构 面试 架构师

啃了三个月!靠着这份大厂Java面试全秘籍,成功入职京东,税前30K

Java 程序员 架构 面试 计算机

嗨!你有一封来自百度世界大会的“情书”,818等你开启

百度大脑

人工智能

博睿数据分布式手机真机监测+两大核心技术,轻松掌控短信服务质量与用户体验

博睿数据

写作 7 堂课——【7. 复盘式写作】

LeifChen

复盘 写作技巧 8月日更

先到先得!Alibaba最新出版的JDK源码剖析手册(究极奥义版)开源

Java 编程 jdk 面试 程序人生

用区块链技术实现电力供给“三流合一”

CECBC

网络攻防学习笔记 Day103

穿过生命散发芬芳

态势感知 网络攻防 8月日更

极客星球 | Android SDK架构设计之路

MobTech袤博科技

架构 sdk andiod

Aosp 之 Property

Qunar技术沙龙

android API properties 字典树 内存映射

【Takin应用日记】记一次TransmittableThreadLocal引起的业务异常

TakinTalks稳定性社区

高可用 性能压测 生产环境全链路压测 takin

2021年7月券商App行情刷新及交易体验评测报告

博睿数据

聊聊我在腾讯和字节工作感受

程序员鱼皮

Java 互联网 求职 IT 实习

Hadoop生态系统Hive:SQL执行(一)

正向成长

hadoop hive

秀到起飞!LeetCode官方推出算法面试指导手册(代码版)限时开源

Java~~~

Java 架构 面试 算法 架构师

清华大牛带领20位大厂专家耗时三年整理出这份2000页Java进阶指南

Java~~~

Java MySQL 架构 面试 微服务

运维工程师核心工作是什么?用什么运维工具好?

行云管家

云计算 运维 IT运维

一个完整的内网渗透是什么样子的

网络安全学海

网络安全 信息安全 网络 渗透测试 漏洞分析

架构训练营 - 模块四 - 作业

姑射仙人

架构训练营

极客星球 | 应用开发的性能优化探索

MobTech袤博科技

性能

员工流动大难管理?织信低代码+人事管理系统轻松掌控员工档案信息

优秀

低代码

Java变量使用小技巧~

Bob

Java 变量 8月日更

熬夜28天肝完这25W字的九大Java核心专题,连续拿下多个大厂offer

Java~~~

Java 架构 面试 JVM 架构师

深耕城市治理场景,百度智能云联合慧联无限推内涝智能检测预警

百度大脑

人工智能 洪水

小心这个陷阱:为什么总是你赔钱?

非著名程序员

认知提升 个人提升 投资理财 8月日更

交易所市值管理机器人搭建,项目方市值管理软件源码

我看 JAVA 之 并发编程【四】线程安全与JMM

awen

Java JMM 线程安全

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