关于springboot:Spring-Boot-Serverless-实战系列架构篇-光速入门函数计算

35次阅读

共计 2949 个字符,预计需要花费 8 分钟才能阅读完成。


作者 | 西流(阿里云函数计算专家)

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 利用前,先为大家介绍以下几个概念:

1、服务

函数计算的服务资源对应微服务。一个服务下能够创立多个函数,这些函数共享服务级别的配置,包含日志、权限、VPC 网络拜访配置等等。一般来说,开发者依据业务场景设计微服务架构,为每一个微服务创立函数计算的服务。而后再依据需要,将微服务变为更细粒度的函数。比方有些逻辑是计算密集型的,能够将它拆分为另一个函数,配置不同的实例规格,既满足性能要求,又优化了老本。依照微服务的理念,一个服务下的函数个数不宜太多。

2、函数

函数是运行开发者代码的根本单位。函数的粒度能够很细,比方对应 1 个 API,也能够较粗,对应一组 API。不同的函数配置不同的实例规格。函数计算提供了各种语言的运行时,也提供 custom runtime/custom container 和语言无关的运行时。如果只是用函数计算实现片段代码,能够应用相干语言的运行时。在咱们的场景下,因为要无缝迁徙 SpringBoot 利用,咱们会抉择 custom container 运行时。Mall 我的项目曾经反对了将 Mall 利用主动打包为容器镜像,因而只须要将镜像上传至阿里云容器镜像仓库,并在函数上指定相干信息即可。

3、HTTP 触发器

为函数配置 HTTP 触发器后,函数可通过 HTTP 申请的形式调用。函数计算配套的 Serverless Devs 工具会为 HTTP 触发器生成测试域名,开发者能够不便的调试和运行 Web 利用。
 ​
至此,浏览本篇后,置信大家曾经对 Mall 利用架构以及 Serverless 平台曾经有了一个根本的理解。关注“Serverless”公众号,订阅 Spring Boot Serverless 实战系列话题,咱们将在下一篇的《Spring Boot on FC – 部署篇》中为各位详解如何将 Mall 利用部署到函数计算平台上。

文中波及链接汇总

Sring Boot:https://spring.io/projects/spring-boot
Mall:https://github.com/macrozheng/mall
函数计算:https://help.aliyun.com/product/50980.html
阿里云日志服务:https://help.aliyun.com/product/28958.html
服务:https://help.aliyun.com/document_detail/74925.htm
函数:https://help.aliyun.com/document_detail/52077.html
HTTP 触发器概述:https://help.aliyun.com/document_detail/71229.html
Serverless Devs:http://www.serverless-devs.com/
函数计算 FC: https://www.aliyun.com/product/fc

正文完
 0