首页 > 其他分享 >为什么我要迁移SpringBoot到函数计算

为什么我要迁移SpringBoot到函数计算

时间:2022-09-02 14:22:25浏览次数:81  
标签:SpringBoot 虚拟机 aliyun 我要 FC https 迁移 com 函数

前言

为什么要迁移?
我们的业务有很多对外提供服务的 RESTful API,并且要执行很多不同的任务,例如同步连锁 ERP 中的商品信息到美团/饿了么等平台,在线开发票等。由于各种 API 和任务执行的不确定性,经常会因为资源不足导致服务不可用,但是盲目的扩容又很烧钱。整个团队每天都陷在不停的扩容,缩容之中

关键是有时候稍稍慢了一些,就会对业务照成影响,导致被投诉。每天还要被其他业务部门催着做新功能。更难的是,因为我们没有运维经验,多次被黑客把我们本来就不多的机器用来挖矿。作为一个初创公司的研发团队,我们的资源少,人手少,经验少,面对稳定性,安全性和业务的压力真的是非常痛苦。

在被前同事安利了阿里云函数计算 FC 以后,我发现这太有用了!迁移的过程非常顺滑,迁移的效果也大大超出了我的预期。下面是我觉得阿里云函数计算 FC 非常适合我们的理由:

  • 默认弹性:可以轻松应对大量 API 请求和任务,不会再因为扩容不及时,导致资源耗尽引起的业务不可用了!
  • 无流量时支持缩容到 0:省钱神器,再也不用买虚拟机和负载均衡了,对我们来说降本效果杠杠滴!
  • 免运维:免去了虚拟机的运维成本!
  • 更安全:它不能被 SSH 登陆,而且也不会像虚拟机一样一直开着,等着被人扫描和攻破!
  • 零改造:无需修改代码,之前虚拟机上的 JAR 包直接就可以跑在阿里云函数计算 FC 上!

迁移步骤

有三种使用方式,这里我具体讲一下怎么在控制台上操作。

1、使用阿里云函数计算 FC 控制台进行迁移。

2、使用阿里云函数计算 FC 提供的 S 工具,通过命令行 + YAML 的方式进行部署,具体可文末查看详情 [1]。

3、使用阿里云函数计算 FC 控制台上的应用中心,从 GitHub 等源代码库中自动构建并部署。CICD/GitOps 直接就有了,太香了!具体可文末查看详情 [2]。

开通函数计算

访问控制台 [3],点击 免费开通 将跳转到开通页面:


创建服务
点击 服务及函数 ,创建服务,输入 “名称” 后点击 确定 :

对 JAR 包进行压缩,得到 ZIP 文件

注意!这里要对打包好的 JAR 包进行压缩,然后上传 ZIP 包!!!

备注:其实也可以直接上传 JAR 包;
但是启动命令要写为:
java org.springframework.boot.loader.JarLauncher
我个人不是很喜欢这种写法,我还是喜欢:
java -jar gs-rest-service-0.1.0.jar


如果你还没有可用的 JAR 包,请参考 SpringBoot 官方快速开始文档 [4]进行构建。

创建函数

  • 在 “函数管理” 页面,点击 创建函数
  • 选择 使用自定义运行时平滑迁移 Web Server
  • 运行环境选择您需要的 Java 版本
  • 选择 通过 ZIP 包上传代码
  • 启动命令为您在虚拟机上启动 JAR 包的命令,例如:java -jar rest-service-initial-0.0.1-SNAPSHOT.jar.zip
  • 监听端口为您的 JAVA 程序在虚拟机上监听的端口,例如:8080
  • 请求处理程序类型选择 处理 HTTP 请求
  • 点击 创建

测试函数

在函数详情页面的触发器列表中找到 “公网访问地址”。注意:因为相关规定,不能直接在浏览器中打开这个 URL,需要配置自己的域名才能在浏览器中访问。


你可以通过 curl 命令进行测试。

你也可以通过函数详情页中的 测试函数 页签直接进行测试。

使用自己的域名访问函数

  • 点击 首页 ,域名管理,创建域名,添加自定义域名
  • 复制页面中的 “公网 CNAME”,在云解析 DNS 控制台[5]上为你的域名添加 CNAME 记录
  • 在路由配置中选择您刚建好的服务和函数
  • 点击 创建
  • 完成!现在可以通过自己的域名访问服务了!

image.png

迁移后的效果

面对流量洪峰,我们再也不会手忙脚乱了,阿里云函数计算 FC 自动会帮我们扩容!很好的解决了我们的 API 场景和不定时执行各种不同任务的场景。对我们这种不懂 Docker,不懂 Kubernetes,没有运维人员,虚拟机扩容缩容对我们来说都很难的小团队来说真是一大福利。

同时,我们再也不用买虚拟机和负载均衡了!缩容到 0 和按量付费的方式也极大的降低了我们的成本!还有,我们再也没有被黑客攻破,用我们的钱来挖矿了!整体来说就两个字!真香!

更多进阶了解
[1] 详情 1:
https://github.com/devsapp/start-web-framework/tree/master/web-framework/java/springboot
[2] 详情 2:
https://fcnext.console.aliyun.com/applications/create
[3] 控制台:
https://fcnext.console.aliyun.com/
[4] SpringBoot 官方快速开始文档:
https://spring.io/guides/gs/rest-service/
[5] 云解析 DNS 控制台:
https://dns.console.aliyun.com/
[6] 配置 NAS 文件系统:
https://help.aliyun.com/document_detail/87401.html
[7] 配置 HTTPS:
https://help.aliyun.com/document_detail/90763.html
[8] 授权函数访问其他服务:
https://help.aliyun.com/document_detail/181589.html
[9] 访问 VPC 内的资源:
https://help.aliyun.com/document_detail/72959.html
[10] 访问 RDS 数据库:
https://help.aliyun.com/document_detail/84514.html
[11] 访问 Redis 缓存:
https://help.aliyun.com/document_detail/148798.html
[12] 更多快速入门文档:
https://fcnext.console.aliyun.com/overview

更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。

标签:SpringBoot,虚拟机,aliyun,我要,FC,https,迁移,com,函数
From: https://www.cnblogs.com/Serverless/p/16649720.html

相关文章

  • 基于函数计算自定义运行时快速部署一个 springboot 项目 什么是函数计算?
    什么是函数计算?函数计算是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为您准备好计算资源,弹性地可靠地运行任......
  • vue+Springboot下载文件
    前端代码<el-buttontype="primary"@click="dowload2('1662023440868上传测试.jpg')">下载</el-button>js代码dowload2(msg){lethref="http://......
  • SpringBoot整合Redis
    14、SpringBoot整合Redis14.1、概述SpringBoot操作数据库:spring-data,jpa,jdbc,mongodb,redisSpringData也是和SpringBoot齐名的项目!说明:在SpringBoot2.x之后,原来使用的jed......
  • springboot项目使用jsp
    异常问题场景提示:这里简述项目相关背景springboot课堂学习问题详情提示:这里描述项目中遇到的问题jsp无法访问原因分析提示:这里填写问题的分析没有jsp解......
  • 在线数据迁移,数字化时代的必修课 —— 京东云数据迁移实践
    混合多云新趋势云原生时代的到来,企业上云需求日益细致化,从而推进了企业IT架构进化,混合多云已经成为企业上云新趋势。据混合云产业联盟最新发布的《中国混合云用户调查报告......
  • SpringBoot的异步、定时、邮件任务
    13、异步、定时、邮件任务13.1、前言在我们的工作中,常常会用到异步处理任务,比如我们在网站上发送邮件,后台会去发送邮件,此时前台会造成响应不动,直到邮件发送完毕,响应才会......
  • SpringBoot简单使用(2)
    1.2.7:CommandLineRunner接口:开发中可能会有这样的情景。需要在容器启动后执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我......
  • Springboot整合Sentinel实现流控
    在Springboot项目中整合Sentinel实现流控,Gateway整合Sentinel见Gateway整合Sentinel,Sentinel-daahboard的改造见Sentinel-dashboard改造(普通流控和网关流控规则持久化到Nac......
  • SpringBoot上传文件
    前端使用ElementUI+Vue后端使用SpringBoot1前端代码1.0组件导入&初始化导入ElementUI、Axios、Vue的资源。完成Vue的初始化和生效区域的设置。这些资源都能找到,把......
  • SpringBoot-Http请求工具类
    一、编写请求配置类importcom.alibaba.fastjson.JSONObject;importorg.springframework.context.annotation.Configuration;importorg.springframework.http.*;imp......