Spring Boot Serverless 实战系列“架构篇” | 光速入门函数计算
作者 |:西流(阿里云函数计算专家)
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/
点击此处,即可查看更多函数计算信息!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
GO 语言通用代码生成器:仙童已公布尝鲜版,新增对 PostgreSQL 数据库的支持
GO语言通用代码生成器:仙童,已公布尝鲜版,新增对PostgreSQL数据库的支持 GO语言通用代码生成器:仙童,已公布尝鲜版。在冒烟测试版的基础上,有更多测试和修错,并新增对PostgreSQL数据库的支持。现在支持MariaDB,MySQL8和PostgreSQL三种数据库。所有所附示例均通过测试。更多惊喜等着您去发现。 预计到尝鲜版2。会进一步支持Oracle数据库。 仙童的项目地址:https://gitee.com/jerryshensjf/Fairchild Go语言通用代码生成器:仙童 简介 Go语言通用代码生成器:仙童 架构 基于Java通用代码生成器:光的架构。 生成的代码基于go语言,使用gin作为web框架。目前支持MariaDB,MySQL和PostgreSQL三种数据库。 代码生成物 请参考:https://gitee.com/jerryshensjf/GirlOnly 代码生成器截图 代码生成器正在研发中,第一个尝鲜版已发布。 尝鲜版和冒烟测试版本下载 请去https://gitee.com/jerryshensjf/InfinityJEEEU/attach...
- 下一篇
AI 收藏夹 Vol.004:虚拟爱豆出道!
人工智能是一门融合了计算机科学、图形学、生物学、语言学等学科的前沿科学。随着产学研深度融合创新,人工智能从理论研究逐渐落地,各种应用与设想层出不穷。「AI 收藏夹」将会与大家分享一些 AI 领域实用有趣的文章和工具,与大家一起见证技术的创新与变革。 文章 0 1 虚拟爱豆出道 ! 「与真人网红不同,虚拟网红永远不会拍照迟到,不会在聚会上喝醉,也不会变老……」最近,英国《经济学人》[1.1]发表了一篇题为《下一个是什么?2022 年值得关注的 22 项新兴技术》的文章,写道:「2022 年预计将有 150 亿美元用于网红营销,虚拟网红也会迅速增多。」 5 月 20 日,阿里巴巴旗下的首个数字人员工、NFT 艺术家、数字策展人、潮牌主理人 AYAYI 横空出道; 12 月 3 日,首个元宇宙 NFT 属性的虚拟偶像 CC is Dreaming 以全息图的形式登台演出; 韩国头部经纪公司 SM 打造八人女子偶像团体 aespa ,由来中日韩的四名真人成员和 1:1 建模的 AI 成员共同组成,主打真实与虚幻的交融,自去年出道以来,歌曲、舞蹈、造型都极具未来感。 如何打造一个数字世界的虚拟明...
相关文章
文章评论
共有0条评论来说两句吧...