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

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

译者 | 布加迪

审校 | 孙淑娟

数据在急剧增多。全球每天生成的数据量三年后将达到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技术栈
相关推荐

2023-08-02 15:46:29

2023-08-22 16:14:36

2011-03-29 13:11:49

混合云架构

2023-07-12 08:30:52

服务架构事件驱动架构

2023-01-11 08:00:00

云计算Serverless安全

2024-01-15 14:39:45

以太网网络电缆PoE系统

2023-08-08 08:00:00

架构Kafka

2018-09-20 10:10:34

2023-08-10 07:04:13

2020-03-26 10:25:48

云安全混合云多云

2013-11-12 09:35:16

大数据

2014-03-06 11:24:48

2024-11-12 15:52:33

2023-09-15 12:30:06

微服务架构管理

2024-08-05 10:26:42

Go语言架构

2021-11-23 23:39:19

微服务开发架构

2012-10-18 09:49:55

SDNADN云计算

2022-11-02 11:46:54

2018-10-24 10:21:15

工业物联网IIoT物联网

2012-12-05 10:07:39

点赞
收藏

51CTO技术栈公众号