为什么我要迁移 SpringBoot 到函数计算
简介: 面对流量洪峰,我们再也不会手忙脚乱了,函数计算自动会帮我们扩容!很好的解决了我们的 API 场景和不定时执行各种不同任务的场景。
作者:榴莲
为什么要迁移?
我们的业务有很多对外提供服务的 RESTful API,并且要执行很多不同的任务,例如同步连锁 ERP 中的商品信息到美团/饿了么等平台,在线开发票等。由于各种 API 和任务执行的不确定性,经常会因为资源不足导致服务不可用,但是盲目的扩容又很烧钱。整个团队每天都陷在不停的扩容,缩容之中。关键是有时候稍稍慢了一些,就会对业务照成影响,导致被投诉。每天还要被其他业务部门催着做新功能。更难的是,因为我们没有运维经验,多次被黑客把我们本来就不多的机器用来挖矿。作为一个初创公司的研发团队,我们的资源少,人手少,经验少,面对稳定性,安全性和业务的压力真的是非常痛苦。
在被前同事安利了函数计算以后,我发现这太有用了!迁移的过程非常顺滑,迁移的效果也大大超出了我的预期。下面是我觉得函数计算非常适合我们的理由:
- 默认弹性,可以轻松应对大量 API 请求和任务,不会再因为扩容不及时导致资源耗尽引起的业务不可用了!
- 无流量时支持缩容到 0,省钱神器,再也不用买虚拟机和负载均衡了,对我们来说降本效果杠杠滴!
- 免运维,免去了虚拟机的运维成本!
- 更安全,它不能被 SSH 登陆,而且也不会像虚拟机一样一直开着,等着被人扫描和攻破!
- 零改造,无需修改代码,之前虚拟机上的 JAR 包直接就可以跑在函数计算上!
迁移步骤
有三种使用方式,这里我具体讲一下怎么在控制台上操作。
- 使用函数计算控制台进行迁移。
- 使用函数计算提供的 S 工具,通过命令行 + YAML 的方式进行部署,查看详情 1[1]。
- 使用函数计算控制台上的应用中心,从 GitHub 等源代码库中自动构建并部署。CICD/GitOps 直接就有了,太香了!查看文末详情 2[2]
1. 开通函数计算
访问控制台[3],点击“免费开通”将跳转到开通页面。
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]进行构建。
4. 创建函数
- 在“函数管理”页面,点击“创建函数”,
- 选择“使用自定义运行时平滑迁移 Web Server”
- “运行环境”选择您需要的 Java 版本
- 选择“通过 ZIP 包上传代码”
- “启动命令”为您在虚拟机上启动 JAR 包的命令,例如:java -jar rest-service-initial-0.0.1-SNAPSHOT.jar.zip
- “监听端口”为您的 JAVA 程序在虚拟机上监听的端口,例如:8080
- “请求处理程序类型”选择“处理 HTTP 请求”
- 点击“创建”
5. 测试函数
在函数详情页面的触发器列表中找到“公网访问地址”。注意:因为相关规定,不能直接在浏览器中打开这个 URL,需要配置自己的域名才能在浏览器中访问。
你可以通过 curl 命令进行测试。
你也可以通过函数详情页中的“测试函数”页签直接进行测试。
6. 使用自己的域名访问函数
- 点击“首页”,“域名管理”,“创建域名”,“添加自定义域名”
- 复制页面中的“公网 CNAME”,在云解析 DNS 控制台[6]上为你的域名添加 CNAME 记录
- 在路由配置中选择您刚建好的服务和函数
- 点击“创建”
- 完成!现在可以通过自己的域名访问服务了!
7. 更多进阶文档
配置 NAS 文件系统:
https://help.aliyun.com/document_detail/87401.html
配置 HTTPS:
https://help.aliyun.com/document_detail/90763.html
授权函数访问其他服务:
https://help.aliyun.com/document_detail/181589.html
访问 VPC 内的资源:
https://help.aliyun.com/document_detail/72959.html
访问 RDS 数据库:
https://help.aliyun.com/document_detail/84514.html
访问 Redis 缓存:
https://help.aliyun.com/document_detail/148798.html
更多快速入门文档:
https://fcnext.console.aliyun.com/overview
迁移后的效果
面对流量洪峰,我们再也不会手忙脚乱了,函数计算自动会帮我们扩容!很好的解决了我们的 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 控制台:
本文为阿里云原创内容,未经允许不得转载。
为什么我要迁移 SpringBoot 到函数计算的更多相关文章
- 如何迁移 Spring Boot 到函数计算
作者 | 田小单 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上 ...
- 从函数计算架构看 Serverless 的演进与思考
作者 | 杨皓然 阿里巴巴高级技术专家 导读:云计算之所以能够成为 DT 时代颠覆性力量,是因为其本质是打破传统架构模式.降低成本并简化体系结构,用全新的思维更好的满足了用户需求.而无服务器计算(S ...
- 一元建站-基于函数计算 + wordpress 构建 serverless 网站
前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云函数计算平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS ...
- 函数计算自动化运维实战 2 -- 事件触发 eip 自动转移
函数计算 阿里云函数计算是一个事件驱动的全托管计算服务.通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传.函数计算会为您准备好计算资源,以弹性.可靠的方式运行您的代码,并提供日志查询,性能 ...
- 快速部署 Spring PetClinic 到函数计算平台
简介 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准 ...
- 独家对话阿里云函数计算负责人不瞋:你所不知道的 Serverless
作者 | 杨丽 出品 | 雷锋网产业组 "Serverless 其实离我们并没有那么遥远". 如果你是一名互联网研发人员,那么极有可能了解并应用过 Serverless 这套技术体 ...
- 从零入门 Serverless | 一文搞懂函数计算及其工作原理
作者 | 孔德慧(夏莞) 阿里云函数计算开发工程师 什么是函数计算 大家都了解,Serverless 并不是没有服务器,而是开发者不再需要关心服务器.下图是一个应用从开发到上线的对比图: 在传统 Se ...
- 阿里云函数计算发布新功能,支持容器镜像,加速应用 Serverless 进程
我们先通过一段视频来看看函数计算和容器相结合后,在视频转码场景下的优秀表现.点击观看视频 >> FaaS 的门槛 Serverless 形态的云服务帮助开发者承担了大量复杂的扩缩容.运维. ...
- 从函数计算到 Serverless 架构
前言 随着 Serverless 架构的不断发展,各云厂商和开源社区都已经在布局 Serverless 领域,一方面表现在云厂商推出传统服务/业务的 Serverless 化版本,或者 Serverl ...
- 让 Serverless 更普惠,阿里云函数计算 FC 宣布全面降价,最大幅度达 37.5%
11月5日,2022 杭州 · 云栖大会上,阿里云宣布函数计算 FC 开启全面降价,vCPU 单价降幅** 11%,其他的各个独立计费项最高降幅达 37.5%**. 本次云栖大会上,阿里云智能总裁张建 ...
随机推荐
- 【预训练语言模型】使用Transformers库进行GPT2预训练
基于 HuggingFace的Transformer库,在Colab或Kaggle进行预训练. 本教程提供:英文数据集wikitext-2和代码数据集的预训练. 注:可以自行上传数据集进行训练 目的: ...
- 基于AmbiqMicro-AMA3B2KK-KBR的可穿戴智能手环解决方案之心率测量源码解析
一 前记 梳理该可穿戴产品的手环,产品,是一种成长.也是一个总结. 二 源码解析 1 初始化:这里主要初始化心率的检测间隔时间和心率值的位数. /* initialize heart rate pro ...
- 通达信金融终端解锁Level-2功能 续二 (非法调试 I say NO)
图一: 1. 破解后的逐笔分析可以不受条件正常运行. 2. 打开调试,被防止非法调试代码阻拦. 3. 只好关闭调试. 4. 立马spell符文 "Ship Sheep, Cheap Chip ...
- Spring Boot自动运行之 CommandLineRunner、ApplicationRunner和@PostConstruct
在使用Spring Boot开发的工作中,我们经常会需要遇到一种功能需求,比如在服务启动时候,去加载一些配置,去请求一下其他服务的接口.Spring Boot给我们提供了三种常用的实现方法: 第一种是 ...
- 3DCAT v2.1.3新版本发布,这三大功能更新你不容错过!
3DCAT实时渲染云在近期发布了新的公有云v2.1.3的版本,本次主要更新了应用页的三项功能「语音交互设置」.「多点触控」.「音频信号位深」. 小编将对这三项更新进行讲解: 1. 调整语音通讯机制 新 ...
- Python实现简易版Netcat
Netcat Netcat是一种网络工具,也称为"nc",可用于在计算机网络之间进行TCP/IP或UDP连接.它可以用于连接到其他计算机上的端口,发送和接收数据,扫描端口以及创建服 ...
- Oracle两表关联更新
表结构.测试数据 drop table t1; drop table t2; CREATE TABLE T1 ( name VARCHAR2(10) , code VARCHAR2(10) ); AL ...
- KingbaseES 复制冲突之锁类型冲突
背景 昨天遇到客户现场的一个有关复制冲突的问题 备库报错:ERROR: canceling statement due to conflict with recovery,user was holdi ...
- KingbaseES flashback drop table
KingbaseES 引入回收站功能,实现drop table操作的数据恢复.回收站功能默认关闭,参数名称:kdb_flashback.db_recyclebin.如果不允许一个删除的表进回收站,需要 ...
- Jetty的http3模块
启用http3模块,执行如下命令: java -jar $JETTY_HOME/start.jar --add-modules=http3 命令的输出,如下: ALERT: There are ena ...