拓宽“主航道”的Serverless与EDA领域,亚马逊云科技不断创新开拓

3f283267d52c46ec9c584098bd60a2db.png15de08fe0d194ab5beffbb7e4d072820.pngb72ff86ccf4b4baf8cb48970980a2c2d.png在新潮如走马灯般变换的时尚界,每隔几年就会刮起一阵复古风。被誉为“时尚教父”的著名设计师安德烈·莱昂·塔利曾说:“时尚总是在寻找新的灵感和方向,而复古是其中一个重要的来源。”   

无独有偶。日新月异的高科技领域也会出现公认的“过时”技术重新回潮的现象,在业界激起的波澜不亚于新兴技术的突破。近段时间以来,关于单体应用对微服务的“反戈一击”,就格外引人注目。

最新的“爆料”颇为吸睛:知名流媒体公司某项目团队发布了一则案例研究,“他们放弃了无服务器、微服务架构,改以单体应用取而代之,此举为客户节省90%的运营成本,并改善了使用体验”。

Serverless first战略被公认为是未来方向,业界也有很多事件驱动架构(EDA)与微服务领域的实践。从基本的商业逻辑思考,我们已经很难回到单体应用为主的时代,那么背后的深意到底是什么?

不妨先还原该团队在特定场景下的方案选择过程,再来梳理从单体应用到SOA再到微服务的发展轨迹,最终才能对可进化架构的演变方向做出经得起时间考验的判断。

 

客户利益至上:“左右互搏”探索最优路径

通过还原流媒体服务案例中对分布式计算和单体应用方案的甄选过程,既能看到其对“客户利益至上”理念的坚持,又会发现亚马逊云科技适应多元需求的能力是其敢于“左右互搏”的底气。

在最初的解决方案设计中,采用无服务器组件的分布式系统,这对快速构建服务通常是不错的选择。但在实际运行中,该架构遇到了扩展瓶颈——工作流的每一秒都执行多个状态转换,很快就达到了Account的上限,且每次状态转换都要收取费用,累计下来开支不菲。

成本问题还不止于此。为了减少费用较高的视频转换作业,项目团队构建了一个微服务,将视频分割成帧,并将临时图像上传到存储系统,然后再下载且使用相关服务处理图像。不过,存储调用服务的收费依然不低,总体算下来仍难达预期。

此路不通,何妨另辟蹊径。流媒体公司做出大胆的决定,将所有的组件打包到一个流程中。这消除了对视频帧中间存储的需求,数据传输在内存中即可完成,且媒体转换、检测器、编排等组件都在单个Amazon ECS任务中运行。

值得一提的是,在新架构中检测器的数量只能纵向扩展,而项目团队需要定期向服务中添加更多检测器,对单个实例容量造成较大压力。为了解决这一问题,团队使用不同的检测器子集对每个副本进行参数优化,并以轻量级的编排层分发客户请求。

这个案例最核心的价值是打破了对微服务的“信仰崇拜”,肯定了单体架构对部分应用需求的满足,但如果因此而得出单体架构将全面“复辟”的结论,就有些矫枉过正了。

事实上,基于特定场景的路径选择并没有简单的对错,客户愿意采纳单体架构还是微服务方案,取决于其目标设定、既有资源和团队情况等多重因素,一些变量的调整就可能导致抉择的转向。例如:项目中对视频分割成帧的颗粒度倘若不是过于细化,状态转换的频度就会显著下降,存储调用的费用也将趋于合理,微服务方案的优势有望重新凸显。

 

主航道不偏离:Serverless与EDA驱动微服务持续进化

理性的判断离不开基于实验的对比分析,更源于对发展规律的深刻洞察。只有站在历史的长河中审视不同架构的演变轨迹,才能更好地认知从单体应用到面向服务架构体系(SOA)再到微服务的进化历程,不至于落入相对主义或虚无主义的陷阱。

“上古时代”的软件都是将所有功能写在一起,整个软件仿佛一体化运行的机器,单体架构由此得名。伴随软件的功能日益增加,单体架构也变得愈发复杂,很多缺点随之暴露出来。

大型单体应用的开发速度缓慢,在部署和运行时,需要服务器具有充足内存和相关资源,且必须通过在多个服务器上复制应用程序来实现横向扩展,扩展能力受限明显;同时,这些应用程序的各个功能组件采用紧耦合方式,使维护和更新颇为困难。

为了应对上述挑战,必须改变代码的紧耦合状态,将软件拆分成一个个功能单元,“面向服务的体系架构”(SOA)应运而生。在SOA架构中,每个服务独立承担各自功能,服务间借助通信协议连在一起,各项服务可使用不同的语言和工具开发,能部署在差异化的系统环境中。

在云重新定义一切的背景下,容器化潮流的迅猛来袭让更轻量化的SOA成为可能,微服务逐步占据“C位”。在容器环境中,每个服务不必再占用一台服务器,多个容器可基于一台服务器运行,甚至在Serverless架构支撑下能够实现无服务器化演进。用户不必在基础设施维护、更新等方面耗时费力,可将更多精力放到业务逻辑上。

如果说Serverless为微服务的进化按下了快行键,那么事件驱动架构(EDA)则是微服务适应不确定性环境的终极武器。

EDA能让架构中的各个模块按事件发生的顺序灵活地执行,并可把执行结果作为新的事件来驱动下一个模块的运行。Gartner发布的《十大战略技术趋势》报告显示,到2022年,已有逾50%的组织参与到事件驱动的数字化服务生态系统中,EDA会是微服务未来成长的核心动力。

显而易见,在Serverless与EDA的协同助推下,微服务业已成为数字化转型深水区里的主航道。单体应用虽然在特定场景中也具有不可或缺的价值,但从应用架构进化的底层逻辑和现实需求来看,其不可能取代微服务的主导地位。

 

架构随需应变:场景化、可进化指引未来方向

以更长远的眼光来看,应用架构的迭代升级永无止境。伴随人工智能通用化、数据生产要素化进程的提速,云计算平台需要为各种类型的企业提供随需应变、多元选择的应用架构方案,场景化、可进化是未来架构的重要演变方向。

作为全球云服务市场的翘楚,亚马逊云科技始终扮演着引领变革的角色,通过产品与服务的不断创新,为各个行业客户提供符合不同场景特征的架构选择。以Amazon S3为例:从2006年推出的几项微服务扩展到后来的300多个微服务,在存储方法、策略机制等维度持续完善,与客户共同成长。

在有助于拓宽“主航道”的Serverless与EDA领域,亚马逊云科技更是率先垂范。2014年问世的Amazon Lambda吹响了Serverless计算模型普及的号角,其后多年又为Serverless架构添加100多个新功能,进而推动Serverless从单一场景迈向全栈融合;同时,亚马逊云科技已构建起事件驱动架构的完整服务体系,包括Amazon EventBridge、Amazon Step Functions等,不仅提高开发敏捷性、节省成本,还能通过自由组合这些服务,更好地满足企业应用场景需求,将架构优势发挥到极致。

2023年,亚马逊云科技创新阐释“Serverless first”理念,擎起推进应用现代化的大旗。在一片大干快上的热潮中,亚马逊云科技倡导的“Serverless first”不等于“Serverless only”,架构路径的选择不能脱离客户的真实诉求和现实条件,拥有未来的前提是活在当下。

正如罗素所言,参差多态乃幸福本源。一家业务简单、只有几名开发人员的初创公司,与枝繁叶茂、拥有数十名工程师的大中型企业相比,选择不一样的应用架构是再自然不过的事。登高望远能知道目标所在,但也别忘了脚下的土地。

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

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

相关文章

msys2安装与配置: 在windows上使用linux工具链g++和包管理工具pacman C++开发

文章目录 为什么用这个msys2下载、doc安装,很简单初次运行,做些配置更新软件安装与卸载方法安装必要的软件包设置win环境变量在windows terminal中使用在vscode中使用 为什么用这个msys2 方便windows上的C开发demo,不需要VS了方便C开发安装o…

跨越山海,爱在滇西|拓数派为滇西孩子点亮科学梦想

近日,拓数派在共青团浙江大学委员会、景东县教育体育局和景东团县委等单位指导下开展“爱在滇西”2023年公益助学活动,并携手浙大国际科创中心、浙大微纳电子学院、启真科技控股公司和北京德恒律所共同向景东浙大求是中学捐赠爱心助学金,用于…

【RISC-V】昉·星光 2单板计算机初始调试记录

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

JavaSwing+MySQL的飞机订票系统(内含oracle版本)

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88055544 JDK1.8 MySQL5.7 功能:接收客户端发来的数据、处理客户端发来的数据、发送数据包到客户端;客户端:查询所有航班的信息、查看自己所定的票、订票…

mac批量提取文件夹的名称,怎么操作?

mac批量提取文件夹的名称,怎么操作?很多小伙伴想知道在mac电脑上可以一键快速批量的将大量文件夹的名提取出来,而不是采用一个一个名称提取的方法,这是一个有利于提高工作效率的办法,这一项技能在网上几乎找不到解决办…

cloudwatch agent通过squid代理上传指标到cloudwatch

1.安装cloudwatch agent代理 1.1、安装cloudwatch代理包 2.2、更改程序包的目录 3.3.创建cloudwatch代理配置文件 运行以下命令配置向导 sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard 按照提示选择个性化服务 2.安装squid服务器 简…

Git基本操作命令

** 创建仓库 **,用于被git管理 第一步: $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit第二步: 通过git init命令把这个目录变成Git可以管理的仓库: $ git init** 提交代码 **: 第一步&#xff…

JVM概述

1.什么是虚拟机? 虚拟机就是一台虚拟的计算机。它是一款软件,它分为系统虚拟机(比如VMware)和程序虚拟机(比如Java虚拟机)。 2.JVM的作用 Java虚拟机负责装载字节码文件到内部,编译为对应平台上的机器码指令来执行,还有自动的垃…

系统学习Linux-Rsync远程数据同步服务(三)

一、概述 rsync是linux 下一个远程数据同步工具 他可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync 算法减少数据的传输 会对比两个文件的不同部分,传输差异部分,因此传输速度相当快 rsync可拷贝、显示目录属性&#xff0c…

透视表可视化简单案例

import pandas as pd import numpy as np import os basepath/Users/kangyongqing/Documents/kangyq/202307/标准版学期制C2/pathos.path.join(basepath,02freetime.csv) dtpd.read_csv(path,dtype{shifen:object}) print(dt.head()) import matplotlib.pyplot as pltfor i in …

自动化测试-selenium环境搭建

文章目录 1. 什么是自动化2. 自动化测试分类3. selenium的环境搭建4. 测试selenium 1. 什么是自动化 自动化是指使用软件工具、脚本或程序来执行一系列的任务、操作或流程,而无需人工干预或指导。 自动化测试:使用自动化工具和脚本来执行测试用例&#x…

奖牌数领跑是为何?解码长沙华中医卫科技中等职业学校的国防教育成功之道

近些年,越来越多的学生、家长、企业开始重新审视职业教育的价值。在产教融合的大背景下,职业教育已经成为了高新产业发展的人才引擎,职业教育的教学模式、软硬件配置乃至未来毕业生的就业情况,已完全变了模样。 实际上&#xff0…

Windows 组策略 部署打印机

一、服务端 1、打印机管理:添加打印机 2、选择打印机 3、第一次安装,选择这个 4、下载驱动,从磁盘安装 5、已成功安装 6、选中打印机右击属性:列出目录 7、创建一个组策略 8、组策略设置 用户设置 → 首选项 → 控制面板 → 打印…

shell脚本备份数据库

首先是在本地windows环境下尝试备份数据库 打开mysql的bin目录,然后在地址栏cmd,进入cmd界面,输入mysqldump命令,-u输入用户名,-p输入密码 还有数据库名称,以及后面要保存到的位置 mysqldump -uroot -p tes…

webpack插件compression-webpack-plugin

Vue配置compression-webpack-plugin实现Gzip压缩 1、为什么要压缩? 打包的时候开启gzip可以很大程度减少包的大小,页面大小可以变为原来的30%甚至更小,非常适合于上线部署。更小的体积对于用户体验来说就意味着更快的加载速度以及更好的用户…

Langchain-ChatGLM配置文件参数测试

1 已知可能影响对话效果的参数(位于configs/model_config.py文件): # 文本分句长度 SENTENCE_SIZE 100# 匹配后单段上下文长度 CHUNK_SIZE 250 # 传入LLM的历史记录长度 LLM_HISTORY_LEN 3 # 知识库检索时返回的匹配内容条数 VECTO…

python web开发之WSGI/uwsgi/uWSGI详解

1. 三者的定义 WSGI是一种通信协议。uwsgi是一种传输协议。uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。 2.三者的使用场景 WSGI,全称 Web Server Gateway Interface,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接…

基于微信小程序的求职招聘系统设计与实现(Java+spring boot+MySQL+微信小程序)

获取源码或者论文请私信博主 演示视频: 基于微信小程序的求职招聘系统设计与实现(Javaspring bootMySQL微信小程序) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java s…

如何为SoC做ARM CPU适配——以裸核使用malloc为例

本文任务:为陌生的SoC平台编写基础软件,适配 malloc() 函数 0 如何为SoC做ARM CPU适配 今时不同往日,我们平时开发/娱乐接触到的消费级MCU/MPU基本山都是包含处理核与一系列外设的SoC。如果熟悉裸片开发,一定会在厂家提供的标准…

铁电材料极化高压放大器ATA-7025技术指标及使用说明

铁电材料是一类具有特殊电学性质的材料,在现代电子技术和器件中具有广泛的应用。铁电材料的极化是其重要的特征之一,极化测试是评估铁电材料性能的关键方法之一。一般铁电极化测试,是通过根据外电场施加的电压变化来观察材料产生的极化效应。…