Spring Boot Serverless 实战系列“架构篇” | 光速入门函数计算

简介:如何以 Serverless 的方式运行 Spring Boot 应用?

技术专题banner.png

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

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个前端应用:

2.png

  • 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 架构非常容易,架构如下所示。由于函数计算内置了网关服务,自动拉起实例运行应用,因此开发者只需要上传应用代码即可。

3.png

应用实例在函数计算平台上运行,能够自由的访问其他服务,因此和 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 应用。

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从 “香农熵” 到 “告警降噪” ,如何提升告警精度?

简介:ARMS 智能降噪功能依托于 NLP 算法和信息熵理论建立模型,从大量历史告警事件中去挖掘这些事件的模式规律。当实时事件触发后,实时为每一条事件打上信息熵值与噪音识别的标签,帮助用户快速识别事件重要性。 作者:…

AI 机器学习如何不被底层资源和数据“拉胯”,听听亚马逊云科技怎么说

编辑 | 宋慧 出品 | CSDN 云计算 在人工智能从爆火到普及应用之后,数据分析今年又一次被技术界广泛关注,热度再次到达高点。 分析与咨询机构也纷纷发表与数据相关的报告,德勤在刚刚发布的《 2022年度技术趋势 》中,第一个趋势即是…

Flow vs Jenkins 实操对比,如何将Java应用快速发布至ECS

简介:Jenkins 由于其开源特性以及丰富插件能力,长久以来都是中小企业搭建 CICD 流程的首选。不过 Jenkins 存在维护成本高、配置复杂等缺点,云效 Flow 较好地解决了这些问题。 本文从一个 Java 应用部署到云服务器(ECS&#xff09…

CSS 中的简写到底有多少坑?以后不敢了...

作者 | 零一来源 | 前端印象简写(语法糖)可能给我们编码带来了很多便利,但简写也会带来一些问题,今天来讨论一下 CSS 中的简写的"爱恨情仇"为什么说是爱恨情仇呢?因为简写给我们带来了很多的便利&#xff0c…

智能巡检云监控指标的实践

简介:在真实的企业生产中,对研发和运维的同学都会面临一个十分繁复且艰难的问题,就是对指标的监控和告警。具体我枚举一些特定的问题请对号入座,看看在算力爆炸的时代能否通过算力和算法一起解决! 背景介绍 在真实的…

新常态成型,飞连联手Forrester聚焦数字化办公新体验

随着互联网技术不断发展,在企业办公领域时间与空间的限制正在逐步消弭。但是,当企业面对内外部大量的不确定因素时,以往的办公模式无论是效率、安全性还是体验等各方面都将大打折扣。而在数字时代,混合办公模式则有望成为企业办公…

聊聊我们在业务链路升级中做的数据洞察

简介:关于数据相关的词条很多,虽然有不同的定义,但是本质上是相辅相成,通常结合使用才能拿到结果。类比词条诸如 数据分析,数据挖掘, 数据洞察。本文将聊聊我们在业务链路升级中做的数据洞察。 作者 | 金铎…

阿里云佘俊泉:创新探索不停,边缘云持续为客户创造价值

简介:在12月15日上午举办的分布式云领袖论坛中,阿里云边缘云产品负责人佘俊泉先生发表了《阿里云边缘云产品创新与场景探索》的主题演讲,分享了阿里云在边缘云领域的探索和思考,如何从产品演进、技术创新、场景应用等方面助力企业…

oracle 如何迁移到 mysql_怎么将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL...

有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle。很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面。当然,Navicat的数据库迁移无法做到完美,一些依…

深度解析单线程的 Redis 如何做到每秒数万 QPS 的超高处理能力!

作者 | 张彦飞allen来源 | 开发内功修炼服务器端只需要单线程可以达到非常高的处理能力,Redis 就是一个非常好的例子。仅仅靠单线程就可以支撑起每秒数万 QPS 的高处理能力。今天我们就来带大家看看 Redis 核心网络模块的内部实现,学习下 Redis 是如何做…

阿里云李克:边缘云技术发展与实践

简介:7年磨砺,阿里云边缘云的技术积累和沉淀哪了些?今年全面升级后的技术形态具有什么特性?它可以成熟地赋能哪些商业化技术应用场景?阿里云资深技术专家李克带来分享。 备受关注的2021全球分布式云大会深圳站于12月1…

小程序下一破局点?钉钉小程序卡片,应用与平台的深度集成

简介:卡片技术在钉钉上的运用。 20秒了解小程序卡片 案例1:幸福大巴一键抢座 “幸福大巴”是阿里员工在域内使用的城际客运功能,但因为需要来回跳转VPN工具和H5页面,在用户体验上带来了一定的障碍 抢座流程对比: 以…

建站就用这个方法,无需购买服务器10分钟快速部署你的静态网页

简介:阿里云云开发平台重磅推出开源应用中心,聚合最热门的开源应用,让你像安装app一样快速上线一个网站。面向新人和持续活跃的开发者用户推出上线激励加油包,最高100元无门槛代金券免费送,现在体验还能够领取年轻人的…

用 Spring boot 简单搭建一个微服务项目

作者 | 桃花键神来源 | CSDN博客前言:工欲善其事,必先利其器。在对Spring Cloud各部分组件进行具体介绍之前,我们会对Spring Cloud微服务的基础Spring Boot进行介绍。Spring Boot是Spring一套快速配置开发的脚手架,可以基于Spring…

云未来、新可能 - 绿色、无处不在、可信的计算

简介:阿里云资深技术专家、容器服务研发负责人易立在大会主论坛进行了主题为 “云未来,新可能” 的演讲,分享了阿里云基于大规模云原生实践下的技术趋势判断和技术创新进展。 2021 年 12 月 9 日至 10 日,KubeCon CloudNativeCo…

线上教育核心竞争力是什么?声网发布在线素质、职业教育解决方案

5月11日,声网在线上举办了主题为“聚焦场景力,释放生态力”的在线教育发布会,正式发布了新生态下在线教育多场景教学解决方案,包括在线音乐、在线美术、在线职业教育、在线编程、Stem在线教学解决方案。同时为兼顾降低教学场景研发…

ClickHouse Keeper 源码解析

简介:ClickHouse 社区在21.8版本中引入了 ClickHouse Keeper。ClickHouse Keeper 是完全兼容 Zookeeper 协议的分布式协调服务。本文对开源版本 ClickHouse v21.8.10.19-lts 源码进行了解析。 作者简介:范振(花名辰繁)&#xff0c…

pidof -x 不管用_专业摄影师最佳助手富士X-T200评测

作为X-T100的升级款,X-T200可谓是一经发布就受到了众多关注。相对来说,前作X-T100我们认为已经足够出色,而这次的富士X-T200又有多方面的提升,尤其是视频及视频对焦性能。关于这款机器实际的表现究竟如何我们接下去看。富士X-T200…

Oracle数据到MaxCompute乱码问题详解

简介:集成Oracle数据到MaxCompute,乱码问题分析; 为什么,在oracle数据不乱码,集成到MaxCompute就乱码了? 问题在哪里? 1.1 乱码现象 DataWorks的数据离线集成(DataX)集成Oracle数据到MaxCompute的数据有…

Gartner:2022年全球半导体收入预计将增长13.6%

半导体元件供应链所受到的限制预计将在2022年逐步缓解 根据Gartner的预测,2022年全球半导体收入预计将达到6760亿美元,相比2021年增长13.6%。 Gartner研究副总裁Alan Priestley表示: “由于芯片短缺而引发的半导体平均销售价格(AS…