Spring Boot Serverless 实战系列“架构篇”| 光速入门函数计算
ccwgpt 2024-11-06 09:41 27 浏览 0 评论
Spring Boot 是基于 Java Spring 框架的套件,它预装了 Spring 一系列的组件,开发者只需要很少的配置即可创建独立运行的应用程序。
在云原生体系中,有大量的平台都可以运行 Spring Boot 应用,例如虚拟机、容器等。但其中最有吸引力的,是以 Serverless 的方式运行 Spring Boot 应用。我将通过《Spring Boot Serverless 实战》系列文章,从架构,部署,监控、性能、安全等 5 个篇章来分析 Serverless 平台运行 SpringBoot 应用的优劣。
为了让分析更有代表性,我选择了 Github 上 star 数超过 50k 的电商应用 Mall 作为示例。这是该系列文章的第一篇,本文会从架构角度对 Spring Boot 应用的 Serverless 化进行分析。
Mall 架构简介
Mall 是一套电商系统,包括前台商城系统及后台管理系统,基于 Spring Boot + MyBatis 实现。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
Mall 的架构如下图所示,分为网关层,应用层,数据存储层。请求首先通过网关到达 Spring Boot 应用服务。网关实现负载均衡,流量控制等功能。应用层包含 3 个 Spring Boot 应用和1个前端应用:
- mall-admin:后台商城管理系统
- mall-portal:前台商城系统
- mall-search:于Elasticsearch的商品搜索系统
- Mall-admin-web:mall-admin 的前端展示,基于 Vue+Element 实现
Mall 使用了 MySQL,Redis,MongoDB,ElaisticSearch 等多种数据库。主要业务数据存储在 MySQL,缓存数据存储在 Redis,用户行为分析数据存储在 MongoDB,搜索数据存储在 ElasticSearch 中。Spring Boot 应用服务间使用 RabbitMQ 实现异步通信。
Serverless 计算平台 - 函数计算简介
函数计算(Function Compute)是目前国内唯一入选 Forrester 领导者现象的 Faas 产品,是一项事件驱动的全托管 Serverless 计算服务。开发者无需管理服务器等基础设施,用户在上传好代码包或者容器镜像后,函数计算会自动准备好计算资源,并且以弹性、可靠的方式运行代码。
函数计算的产品优势总结为:
- 高效免运维:聚焦业务逻辑开发,无需关心服务器购买、自动伸缩等运维操作
- 弹性高可用:预留实例系统不自动回收,可长驻不销毁,消除冷启动带来的延时毛刺
- 按需低成本:按量付费模型按实际使用计算资源计费、资源利用率高
- 稳定高可靠:函数计算分布式集群化部署,支持多可用区
函数计算提供全面的可观测和问题诊断能力,但是其最突出的特点还是内置了网关层能力,能够实现缩容到 0,快速的自动伸缩。
函数计算的这些特点,使其很适合 Spring Boot 这类 Web 应用。使用函数计算,开发者只需要专注于 SpringBoot 应用逻辑的实现,而不再费心应用运行环境的搭建、部署、监控等无差别的工作。
Mall 应用 Serverless 架构纵览
Mall 是一个非常标准的 3 层架构 Web 应用,改造为 Serverless 架构非常容易,架构如下所示。由于函数计算内置了网关服务,自动拉起实例运行应用,因此开发者只需要上传应用代码即可。
应用实例在函数计算平台上运行,能够自由的访问其他服务,因此和 MySQL,Redis,RabbitMQ 等服务的访问方式相同。
函数计算内置了日志收集和展示能力。开发者为函数计算指定阿里云日志服务的 LogStore,打到标准输出的日志会自动收集到日志服务查询、展示。开发者也可将日志投递到自己的日志处理系统中,但需要做一些额外的配置。在本次示例中(见文末阿里云日志服务网址),我们会采用阿里云日志服务来处理应用日志。
函数计算也提供了一系列工具,帮助开发者通过 Jenkins CICD 工具发布应用。我们将在后续的文章中进一步展示。
在函数计算平台上运行 Spring Boot
在演示阿里云函数计算平台上运行 Web 应用前,先为大家介绍以下几个概念:
服务
函数计算的服务资源对应微服务。一个服务下可以创建多个函数,这些函数共享服务级别的配置,包括日志、权限、VPC 网络访问配置等等。一般来说,开发者根据业务场景设计微服务架构,为每一个微服务创建函数计算的服务。然后再根据需求,将微服务变为更细粒度的函数。比如有些逻辑是计算密集型的,可以将它拆分为另一个函数,配置不同的实例规格,既满足性能要求,又优化了成本。按照微服务的理念,一个服务下的函数个数不宜太多。
函数
函数是运行开发者代码的基本单位。函数的粒度可以很细,比如对应 1 个 API,也可以较粗,对应一组 API。不同的函数配置不同的实例规格。函数计算提供了各种语言的运行时,也提供 custom runtime/custom container 和语言无关的运行时。如果只是用函数计算实现片段代码,可以使用相关语言的运行时。在我们的场景下,因为要无缝迁移 SpringBoot 应用,我们会选择 custom container 运行时。Mall 项目已经支持了将 Mall 应用自动打包为容器镜像,因此只需要将镜像上传至阿里云容器镜像仓库,并在函数上指定相关信息即可。
HTTP 触发器
为函数配置 HTTP 触发器后,函数可通过 HTTP 请求的方式调用。函数计算配套的 Serverless Devs 工具会为 HTTP 触发器生成测试域名,开发者可以方便的调试和运行 Web 应用。
至此,阅读本篇后,相信大家已经对 Mall 应用架构以及 Serverless 平台已经有了一个基本的了解。下周同一时间,我们将在下一篇的《 Spring Boot on FC - 部署篇》中为各位详解如何将 Mall 应用部署到函数计算平台上。
相关链接
1)SpringBoot:https://spring.io/projects/spring-boot
2)Mall:https://github.com/macrozheng/mall
3)函数计算:https://help.aliyun.com/product/50980.html
4)阿里云日志服务:https://help.aliyun.com/product/28958.html
5)服务:https://help.aliyun.com/document_detail/74925.htm
6)函数:https://help.aliyun.com/document_detail/52077.html
7)HTTP触发器概述:https://help.aliyun.com/document_detail/71229.html
8)Serverless Devs:http://www.serverless-devs.com/
作者:西流(阿里云函数计算专家)
原文链接:https://developer.aliyun.com/article/836014?utm_content=g_1000313790
本文为阿里云原创内容,未经允许不得转载。
相关推荐
- 如何基于Spring Security框架实现权限管理
-
SpringSecurity是一个功能强大且高度可定制的身份验证和访问控制框架,用于保护基于Spring的应用程序。SpringSecurity主要是从两个方面解决安全性问题:web请求级别:使...
- 一个轻量级 Java 权限认证框架,Sa-Token 让鉴权变得简单、优雅!
-
一、框架介绍Sa-Token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权等一系列权限相关问题。官网文档:...
- 16.3K Star!简洁高效的Java权限认证与会话管理框架——Sa-Token
-
简介今天给大家推荐一个轻量级的Java权限认证框架——Sa-Token。它可以为JavaWeb应用同完整的权限认证解决方案,它的目标是简化权限管理和登录认证的流程,具备高度灵活性和简单易用的特点。S...
- 从Shiro迁移到Sa-Token:老版JeecgBoot项目权限框架平滑升级方案
-
背景介绍对于许多维护老版JeecgBoot项目的开发者来说,权限框架的升级一直是个棘手问题。这篇文章分享一种实用的方案,用于将老版JeecgBoot中的ApacheShiro替换为更现代的Sa-To...
- 刑法框架体系,对照着框架体系学习可以事半功倍哦
-
有了它,妈妈再也不用担心我司考过不啦!有了它,妈妈再也不用担心我司考过不了啦!其他部门法正在陆续整理制作中哦看不清的话请戳http://mp.weixin.qq.com/s?__biz=MzA3NDE...
- 全新体验版Windows QQ上线,实现三端统一
-
7月3日,全新体验版WindowsQQ正式上线官网,面向用户开放官方下载渠道。记者从腾讯获悉,继QQ对macOS、Linux版本进行升级后,本次Windows版本的更新,标志QQ基于NT技术架构...
- 农村自建房造价多少?包工头教你怎么算
-
通常我们在找专业人士设计农村自建房设计图时,不管你是打算建独栋一层别墅还是独栋二层别墅或是独栋三层别墅,你是否也找他们打听过相应的房屋工程造价呢?下面简单介绍一下农村自建房的傻瓜式造价估算:1、砖混结...
- QQ大会员品牌运营策划与设计(qq大会员有哪些个性装扮)
-
编辑导语:在互联网产品越来越同质化的今天,做出有差异性和符合品牌调性的设计是品牌运营过程中需要重视的问题。本文作者从QQ大会员品牌项目实践出发,分享了品牌运营设计过程中遇到的一些问题以及具体操作方案,...
- 支持鸿蒙平台,腾讯视频ovCompose跨平台框架发布
-
IT之家6月3日消息,腾讯开源今日官宣发布腾讯视频ovCompose跨平台框架,其是腾讯大前端领域Oteam中,腾讯视频团队基于ComposeMultiplatform生态推出的...
- 腾讯 QQ Mac 版推倒重做,全新 1.0 版本开启内测
-
IT之家9月1日消息,据多位IT之家小伙伴投稿,腾讯QQMac版近日迎来了全新通用版内测,版本号重新由1.0开始,目前放出的体验版为1.0.4-305。从下图可以看到,该版本在U...
- 全新体验版Windows QQ正式上线官网,实现三端统一
-
7月3日,全新体验版WindowsQQ正式上线官网,面向用户开放官方下载渠道。记者从腾讯获悉,继QQ对macOS、Linux版本进行升级后,本次Windows版本的更新,标志QQ基于NT技术架构...
- QQ,到了不能不变的境地(怎么发qq邮件到别人邮箱)
-
相比微信一个小更新,乃至一个小动作,都能上热搜的顶级热度。隔壁的老大哥QQ,显得有些冷清。即使更新再快,功能再激情,都很难引起用户们的集体讨论。机友们细想一番,咱们的老朋友QQ,有多久没上过热搜啦?真...
- 基于Electron框架全面重做:全新Linux版QQ开启公测
-
来源:快科技不久前,腾讯QQ项目组曾发布预告,宣布QQforLinux新版本即将开启公测。现在,新的Linux版QQ已经开启公测,不过目前仅支持x86架构,arm64架构还仍在适配中。与此前极为简...
- QQ全面升级?基于Electron技术的Windows内测版本预计将于明年推出
-
在2022年,作为经典的聊天软件的QQ在经历多次的功能调整后,正式选择基于新技术开发新版本的QQ。今日,据相关媒体报道,腾讯QQ项目组发布预告:QQforLinux将在本周迎来公测,全新的QQf...
- 跨平台三端重构正式统一,QQ Windows全新体验版上架官网
-
7月3日,全新体验版WindowsQQ正式上线官网,面向用户开放官方下载渠道。继QQ对macOS、Linux版本进行升级后,本次Windows版本的更新,标志QQ基于NT技术架构,实现了桌面端Q...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 如何基于Spring Security框架实现权限管理
- 一个轻量级 Java 权限认证框架,Sa-Token 让鉴权变得简单、优雅!
- 16.3K Star!简洁高效的Java权限认证与会话管理框架——Sa-Token
- 从Shiro迁移到Sa-Token:老版JeecgBoot项目权限框架平滑升级方案
- 刑法框架体系,对照着框架体系学习可以事半功倍哦
- 全新体验版Windows QQ上线,实现三端统一
- 农村自建房造价多少?包工头教你怎么算
- QQ大会员品牌运营策划与设计(qq大会员有哪些个性装扮)
- 支持鸿蒙平台,腾讯视频ovCompose跨平台框架发布
- 腾讯 QQ Mac 版推倒重做,全新 1.0 版本开启内测
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)