Serverless之快速搭建Spring Boot应用

Serverless,也就是无服务器,什么是无服务器,和服务器有什么关系,为什么需要Serverless,还有怎么使用Serverless,这些问题将是本篇文章得到答案。在本篇文章中会简单介绍Serverless的基础概念和利用Serverless快速搭建Spring Boot应用。

1. 什么是无服务器 (Serverless)

1.1 基础概念

现在正常的开发发布流程是首先编码,然后把代码打包成镜像,服务器拉取最新镜像重启更新,我们不仅需要编码,还需要考虑服务器的部署,应用日志,扩容,负载均衡等等,那么有没有什么新的架构能帮助我们省去运维,让开发只关心编码,测试,这就是Serverless。

Serverless(无服务器架构)指的是服务端逻辑由开发者实现,运行在无状态的计算容器中,由事件驱动, 服务器完全被第三方管理,而业务层面的状态则记录在数据库或存储资源中。

用一句话说,就是让开发者只需要关注业务实现,不必要关心与业务无关的东西,比如考虑如何部署到云端,不需要关心扩容,不需要关心运维,这一切东西全部交给提供Serverless的云服务提供商。

与IaaS的区别是,在IaaS中,用户需要提前购买好服务器,并且在请求高的时候提高资源,在请求低的时候减少资源,在没有请求的时候,容器依然就绪等待请求。

Serverless不需要提前购买服务资源,只在需求时启动,在事件触发时分配资源,当没有事件触发时就会关闭容器,等待下一次触发。那么开发者需要做的就是用代码实现业务,然后把代码打包上传到云服务提供商就结束了,剩下的运维全部交给提供商。

1.2 优缺点

首先,我们看看Serverless有哪些缺点:

  1. 冷启动。Serverless 也是在容器中运行应用的。当某个请求传入时,会首先检查是否有正在运行的容器,如果没有正在运行的容器,就会启动一个新的容器去运行应用,这个就是冷启动。既然需要启动新的容器,那么响应的时间就不会那么快。
  2. 切换成本高。由于使用的是云服务商提供的服务,当我们需要更改服务商的时候,成本就会非常高,因为每一家的规范都不相同。
  3. 不灵活。与方便对应的就是不灵活,因为我们所以的运维都交给了提供商,那么我们就不能控制服务器或者优化服务器达到我们的目的。

再来看看优点:

  1. 提高开发效率,这个在前面已经说过多次,就不再赘述。
  2. 降低运维成本,不需要管理服务器,只需要为运行时间付费即可。

1.3 适用场景

既然有这些优缺点,那么哪些场景适合使用Serverless呢?

  1. 短暂,无状态的应用,可以接受冷启动的场景。
  2. 不频繁但是可能请求激增的场景。

比如实时文件处理,数据ETL,无服务器移动后端,音视频分析等场景。

1.4 Serverless产品

  1. AWS Lanmbda:支持文件处理,流处理,Web应用程序,IoT后端,移动后端。
  2. Cloud Functions:支持与第三方服务及API集成,无服务器移动后端,服务器IoT后端,文件处理,视频和图片分析,情感分析。
  3. 阿里云函数计算:具有丰富的触发器类型,支持多种编程语言,有非常便捷的开发工具进行调试部署,还有丰富的计算类型
  4. 腾讯云 Serverless:拥有简化配置,方便运维,一站式开发等特点,支持基于云函数的命令行开发工具,传统应用框架的快速迁移等场景。

下面我们将使用阿里云的函数计算实际部署Spring Boot应用。

2. 快速搭建Spring Boot应用

阿里云的函数计算是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为您准备好计算资源,弹性地、可靠地运行任务,并提供日志查询、性能监控和报警等功能。

2.1 开发流程

函数计算工作流程如下图所示:

  1. 开发者使用编程语言编码代码,目前函数计算支持的编程语言:Java,PHP,Go,Python,Node.js等语言。
  2. 开发者上传代码到函数计算,可以通过函数计算控制台,Funcraft,Serverless Devs,API或SDK等方式上传代码。
  3. 触发函数执行,因为Serverless是事件驱动,所以需要通过HTTP请求,OSS、API网关等方式触发。

2.2 快速部署

在这里我们通过Serverless Devs管理函数。

FC组件和ROS组件都是函数计算团队基于Serverless Devs为您提供的组件,FC组件和ROS组件是用于支持阿里云Serverless应用全生命周期的工具。该组件是Funcraft的进阶版本,和Funcraft的行为描述类似,Funcraft是通过资源配置文件template.yml协助您实现开发、构建、部署等操作的,FC组件和ROS组件则是通过资源配置文件即YAML文件,帮助您快速开发、构建、测试和将应用部署到函数计算。

2.2.1 安装Serverless Devs

可以通过包管理器(npm,yarn)和脚本安装安装。这里我们通过npm安装:

npm install @serverless-devs/s -g

执行完成之后,通过命令s -v验证是否安装成功:

~ s -v
@serverless-devs/s: 2.0.92, darwin-x64, node-v12.18.3
2.2.2 配置Serverless Devs

在使用前,我们需要先进行配置,在终端中执行s config add,根据提示输入Account IDAccess Key IdSecret Access KeyaliasName 即可。

~ s config add
? Please select a template: Alibaba Cloud (alibaba)
🧭 Refer to the document for alibaba key:  http://config.devsapp.net/account/alibaba
? AccountID 1831277402*****
? AccessKeyID LTAIkC5X*****
? AccessKeySecret ZMbINFFtAUlWPykcI51U******
? Please create alias for key pair. If not, please enter to skip default

    Alias: default
    AccountID: 1831277402******
    AccessKeyID: LTAIkC5X******
    AccessKeySecret: ZMbINFFtAUlWPykcI51U*******

Configuration successful
2.2.3 创建Spring Boot项目

在目标目录下执行命令s init devsapp/start-springboot -d projectName初始化项目:

➜ Project s init devsapp/start-springboot -d serverlessSpringboot

🚀 Serverless Awesome: https://github.com/Serverless-Devs/package-awesome

✔ file decompression completed
? please select credential alias default

     _____            _            ______             _
    /  ___|          (_)           | ___ \           | |
    \ `--. _ __  _ __ _ _ __   __ _| |_/ / ___   ___ | |_
     `--. \ '_ \| '__| | '_ \ / _` | ___ \/ _ \ / _ \| __|
    /\__/ / |_) | |  | | | | | (_| | |_/ / (_) | (_) | |_
    \____/| .__/|_|  |_|_| |_|\__, \____/ \___/ \___/ \__|
          | |                  __/ |
          
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值