前言

为什么要迁移?

我们的业务有很多对外提供服务的 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 记录
  • 在路由配置中选择您刚建好的服务和函数
  • 点击 创建
  • 完成!现在可以通过自己的域名访问服务了!





迁移后的效果

面对流量洪峰,我们再也不会手忙脚乱了,阿里云函数计算 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到函数计算的更多相关文章

  1. 如何迁移 Spring Boot 到函数计算

    作者 | 田小单 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上 ...

  2. 从函数计算架构看 Serverless 的演进与思考

    作者 | 杨皓然  阿里巴巴高级技术专家 导读:云计算之所以能够成为 DT 时代颠覆性力量,是因为其本质是打破传统架构模式.降低成本并简化体系结构,用全新的思维更好的满足了用户需求.而无服务器计算(S ...

  3. 一元建站-基于函数计算 + wordpress 构建 serverless 网站

    前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云函数计算平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS ...

  4. 函数计算自动化运维实战 2 -- 事件触发 eip 自动转移

    函数计算 阿里云函数计算是一个事件驱动的全托管计算服务.通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传.函数计算会为您准备好计算资源,以弹性.可靠的方式运行您的代码,并提供日志查询,性能 ...

  5. 快速部署 Spring PetClinic 到函数计算平台

    简介 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准 ...

  6. 独家对话阿里云函数计算负责人不瞋:你所不知道的 Serverless

    作者 | 杨丽 出品 | 雷锋网产业组 "Serverless 其实离我们并没有那么遥远". 如果你是一名互联网研发人员,那么极有可能了解并应用过 Serverless 这套技术体 ...

  7. 从零入门 Serverless | 一文搞懂函数计算及其工作原理

    作者 | 孔德慧(夏莞) 阿里云函数计算开发工程师 什么是函数计算 大家都了解,Serverless 并不是没有服务器,而是开发者不再需要关心服务器.下图是一个应用从开发到上线的对比图: 在传统 Se ...

  8. 阿里云函数计算发布新功能,支持容器镜像,加速应用 Serverless 进程

    我们先通过一段视频来看看函数计算和容器相结合后,在视频转码场景下的优秀表现.点击观看视频 >> FaaS 的门槛 Serverless 形态的云服务帮助开发者承担了大量复杂的扩缩容.运维. ...

  9. 从函数计算到 Serverless 架构

    前言 随着 Serverless 架构的不断发展,各云厂商和开源社区都已经在布局 Serverless 领域,一方面表现在云厂商推出传统服务/业务的 Serverless 化版本,或者 Serverl ...

  10. 让 Serverless 更普惠,阿里云函数计算 FC 宣布全面降价,最大幅度达 37.5%

    11月5日,2022 杭州 · 云栖大会上,阿里云宣布函数计算 FC 开启全面降价,vCPU 单价降幅** 11%,其他的各个独立计费项最高降幅达 37.5%**. 本次云栖大会上,阿里云智能总裁张建 ...

随机推荐

  1. odoo17.0 快递鸟模块

    快递鸟是国内使用较为广泛的快递集成查询平台之一,提供了600+的物流公司对接接口,是比较不错的物流查询服务选择.随着odoo17.0的发布,我们最近也将快递鸟模块升级到了17.0.下面我们来详细看一下 ...

  2. SpringBoot事件机制

    1.是什么? SpringBoot事件机制是指SpringBoot中的开发人员可以通过编写自定义事件来对应用程序进行事件处理.我们可以创建自己的事件类,并在应用程序中注册这些事件,当事件被触发时,可以 ...

  3. 图片Base64相互转换

    一.简介 Base64编码是一种广泛应用于网络传输和数据存储的编码方式.在实际应用中,我们将图片转换为Base64编码,可以大大减少数据量,便于传输和存储.本文将详细介绍图片Base64编码的相互转换 ...

  4. PTA数组及排序查找题解与解题思路

    PTA数组及排序查找题解与解题思路 函数题目 函数题目为平台提供的裁判程序调用所完成的函数进行判题,题目规定语言为C语言 6-1 求出二维数组的最大元素及其所在的坐标 本题较为简单,考察的是如何遍历一 ...

  5. STM32CubeMX教程4 EXTI 按键外部中断

    1.准备材料 开发板(STM32F407G-DISC1) ST-LINK/V2驱动 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) 2 ...

  6. Linux 逻辑卷管理

    如果用标准分区在硬盘上创建了文件系统,为已有的文件系统添加额外的空间是一件十分痛苦的事情.只能在已有的硬盘上的可用空间范围内调整分区大小,如果硬盘空间不够的话,就只能换一个大容量的硬盘,然后手动将已有 ...

  7. 这些常见的python编码习惯,你都会吗

    本文分享自华为云社区<不得不知的十个常见PY编码习惯>,作者:码乐. 简介 语言在发展和变化,编码习惯也在发生改变.这里简单聊聊 17个python中常见的编码习惯或者风格. 1,可变数据 ...

  8. Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战)

    Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战) 导入pom依赖 编写导出模板 @ApiOperation("导出xxx模板") @ ...

  9. k8s集群Node节点管理:节点信息查看及节点label标签管理

    k8s集群Node节点管理:节点信息查看及节点label标签管理 Kubernetes集群Node管理 一.查看集群信息 [root@k8s-master1 ~]# kubectl cluster-i ...

  10. 实时数据流无忧:用 SpringBoot 和 SSE 打造动态前端更新的终极指南

    用 SpringBoot 和 SSE 打造动态前端更新的终极指南 你知道什么是开发者的梦魇吗?慢!慢!慢!在一个需要实时数据更新的应用中,如果数据像乌龟一样慢吞吞地爬行,那用户体验就会像坐过山车一样直 ...