您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

事件驱动架构的优点和面临的挑战

时间:2022-10-08 12:20:22  来源:51CTO  作者:

 

译者 | 布加迪

数据在急剧增多。全球每天生成的数据量三年后将达到463 EB。相比之下,人类迄今生成的所有单词量估计总共也就5 EB。

为了在当今的数字经济下取得成功,许多企业在实施战略以使用和分析所有这些数据,以便实时做出正确的业务决策。据估计,到2025年,每个联网人员的平均每日数字交互次数将达到5000次。企业需要能够满足这种对实时数据、流程和用户体验日益增长的需求。

一种策略是使用事件驱动架构。事件驱动架构是一种软件设计模式,它让企业可以针对客户交易等业务事件进行实时操作。事件驱动架构不是什么新概念,自1970年代就以来一直存在了。直到最近,这项技术才真正为企业和消费者提供实时服务。

事件驱动架构现在备受关注,能够解决现代业务问题,提供出众的消费者体验。

一、事件驱动架构的工作原理及好处

事件驱动架构基于事件,向相关方发出业务系统发生状态变化的信号。比如说,事件可以是在线购买、产品发货或产品送到客户家门口。事件在所有行业都在不断发生。

事件驱动架构中有生产者和消费者。生产者触发事件,而事件通过事件频道作为消息被发送给感兴趣的消费者,事件在事件频道中被异步处理。生产者和消费者不必等待对方即可开始下一个任务,因为生产者与接收者松散耦合或完全解耦。

由于分离了通信和业务逻辑,解耦还提高了可扩展性。如果订阅者离线或消费减慢速度,发布者可以避免瓶颈并且不受影响。如果订阅者难以跟上事件的步伐,事件流会记录事件供将来检索。发布者可以继续发送通知而不受吞吐量限制,并且有很强的故障恢复能力。

发布/订阅(pub/sub)是事件驱动架构中的一种常见设计模式,它为发布者和订阅者之间交换消息提供了一种框架。消息代理接收发布者的所有事件,并将发生的事件实时路由到订阅者,即注册接收事件的那些人。代理还记录事件。消费者可随时访问事件流,它们可以读取最新的消息,或处理自上次检查事件流以来收到的一系列消息。

如果使用消息代理,发布者不知道订阅者,即使感兴趣的有关方数量增加,发布者也不会受到影响。发布到代理让生产者有机会跨不同的设备和平台向一系列消费者传递通知。

二、实施事件驱动架构面临的挑战

将功能做入到应用程序中以提供大规模实时体验有风险、很复杂、很费钱、很费时。组织最初可能会花费数月时间用现成的组件搭建定制的解决方案。随着团队需要应对规模和可靠性要求带来的复杂性,所需的时间很可能变成数年。

许多应用程序依赖一系列相互依赖的消息。然而,如果这些消息丢失或无序,会影响用户体验,并且客户数据在此过程中可能受损或丢失。提供具有数据完整性的实时数字体验所需的技术很复杂,并且常常导致不可接受的取舍,比如公司为了数据完整性而牺牲大规模性能。

还有性能问题。设计、构建和扩展实时功能时,延迟不佳或不可预测、高带宽消费方面的问题会给应用程序开发人员带来不确定性。除了尽量降低延迟和带宽要求外,组织还必须尽量避免这些措施方面的差异,为开发人员提供可预测性,确保交付的体验具有竞争力。组织也很难设计、构建和运营自己的全球分布式容错实时基础架构。为了实现容错,组织需要在多个数据中心拥有多个冗余部件,以便其他部件丢失时保持系统正常运行。

组织开始扩展时,要么获得构建基础架构的方式带来的好处,要么承受带来的后果。不到位的基础架构无法扩展,或无法提供满足客户实时要求所需的弹性。此外,对于大多数组织而言,为事件驱动架构构建自己的基础架构只会分散注意力,无法一心开发真正使其产品与众不同的实时体验。要做到可以依靠基础架构提供有竞争力的体验这地步,就需要团队招聘许多人,并且培养技能,这可能与业务核心几乎没多大相关性。

三、Ably发布/订阅消息

为了克服这些挑战,Ably边缘消息传递平台提供了相应的API,从而使开发人员能够构建实时通信的应用程序和基础架构,而组织无需管理规模、延迟、消息完整性或网络中断。

任意数量的订阅设备将实时接收从设备发布到Ably的消息。为此,Ably将消息流量组织到命名频道中。一旦连接到Ably,客户端可以是发布者(向Ably推送消息)、订阅者(等待消息从Ably推送)或两者兼而有之。虽然Ably可能会传递数十亿条消息,但订阅者只会在它们订阅的频道上收到消息。

频道提供了一种实现发布/订阅模式的方法,允许发布者快速有效地将数据推送给订阅者。新数据被推送给订阅者,那样它们不必轮询服务器即可检查新数据。

Ably的存在(presence)功能让客户端可以在频道上宣布其存在。存在功能使开发人员能够构建聊天室、多人游戏或协作工具等协作应用,因为Ably可自动跟踪谁在任何设备上实时存在。频道上存在的每个成员都有唯一的客户端标识符和可选的有效负载以描述成员的状态,比如进入频道、更新状态或离开频道。其他设备或服务实时订阅这些存在事件。

Ably是一个全球分布式系统,频道可以在多个区域独立活跃,从而不会出现单一故障点或拥塞点。

下图说明了Ably如何解决高效全球路由的挑战:

 

图1

纽约的发布者专用服务器使用基于延迟的路由被路由到最近的数据中心(US East)。发布到US East的消息A被路由到US East的客户端,并且一次被路由到托管订阅这些消息的客户端的其他每个数据中心。所有其他区域的订阅客户端将从它们连接的数据中心接收消息。

伦敦的发布者和订阅者客户端使用基于延迟的路由被路由到最近的数据中心(EU West)。发布到EU West的消息B被路由到EU West的订阅客户端,并且一次被路由到托管订阅这些消息的客户端的其他每个数据中心。所有其他区域的订阅客户端从它们连接的数据中心接收消息B。

四、实时体验的未来

数字体验正在经历一场实时革命。消费者要求数字体验是即时的。因此,组织必须实时同步数据。随着更多的设备上线,企业调整以适应更复杂的实时数据经济,它们需要更简单、更可靠的基础架构,以满足当今和未来的实时数据同步需求,到时日常服务将依靠不断变化的数据。

原文链接:https://www.infoworld.com/article/3669414/the-benefits-and-challenges-of-event-driven-architecture.html

来源: 51CTO技术栈



Tags:架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
美团外卖宣布新一轮组织架构调整:提拔多位年轻管理者,年轻化、扁平化成主基调
新浪科技讯 4月11日上午消息,继2月下旬、3月下旬两轮人员调整后,美团到店到家的组织架构调整仍在继续。近日,美团外卖以内部邮件的方式宣布了新一轮的组织调整:外卖事业部下成立...【详细内容】
2024-04-11  Search: 架构  点击:(4)  评论:(0)  加入收藏
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  Search: 架构  点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27  Search: 架构  点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  Search: 架构  点击:(10)  评论:(0)  加入收藏
京东小程序数据中心架构设计与最佳实践
一、京东小程序是什么京东小程序平台能够提供开放、安全的产品,成为品牌开发者链接京东内部核心产品的桥梁,致力于服务每一个信任我们的外部开发者,为不同开发能力的品牌商家提...【详细内容】
2024-03-27  Search: 架构  点击:(13)  评论:(0)  加入收藏
从 MySQL 到 ByteHouse,抖音精准推荐存储架构重构解读
ByteHouse是一款OLAP引擎,具备查询效率高的特点,在硬件需求上相对较低,且具有良好的水平扩展性,如果数据量进一步增长,可以通过增加服务器数量来提升处理能力。本文将从兴趣圈层...【详细内容】
2024-03-22  Search: 架构  点击:(25)  评论:(0)  加入收藏
全程回顾黄仁勋GTC演讲:Blackwell架构B200芯片登场
北京时间3月19日4时-6时,英伟达创始人黄仁勋在美国加州圣何塞SAP中心登台,发表GTC 2024的主题演讲《见证AI的变革时刻》。鉴于过去一年多时间里AI带来的生产力变革,以及英伟达...【详细内容】
2024-03-19  Search: 架构  点击:(17)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13  Search: 架构  点击:(6)  评论:(0)  加入收藏
有了LLM,所有程序员都将转变为架构师?
编译 | 言征 出品 | 51CTO技术栈(微信号:blog51cto)生成式人工智能是否会取代人类程序员?可能不会。但使用生成式人工智能的人类可能会,可惜的是,现在还不是时候。目前,我们正在见...【详细内容】
2024-03-07  Search: 架构  点击:(19)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  Search: 架构  点击:(36)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(12)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(19)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(118)  评论:(0)  加入收藏
站内最新
站内热门
站内头条