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


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

文章插图
 
译者 | 布加迪
【事件驱动架构的优点和面临的挑战】数据在急剧增多 。全球每天生成的数据量三年后将达到463 EB 。相比之下,人类迄今生成的所有单词量估计总共也就5 EB 。
为了在当今的数字经济下取得成功,许多企业在实施战略以使用和分析所有这些数据,以便实时做出正确的业务决策 。据估计,到2025年,每个联网人员的平均每日数字交互次数将达到5000次 。企业需要能够满足这种对实时数据、流程和用户体验日益增长的需求 。
一种策略是使用事件驱动架构 。事件驱动架构是一种软件设计模式,它让企业可以针对客户交易等业务事件进行实时操作 。事件驱动架构不是什么新概念,自1970年代就以来一直存在了 。直到最近,这项技术才真正为企业和消费者提供实时服务 。
事件驱动架构现在备受关注,能够解决现代业务问题,提供出众的消费者体验 。
一、事件驱动架构的工作原理及好处
事件驱动架构基于事件,向相关方发出业务系统发生状态变化的信号 。比如说,事件可以是在线购买、产品发货或产品送到客户家门口 。事件在所有行业都在不断发生 。
事件驱动架构中有生产者和消费者 。生产者触发事件,而事件通过事件频道作为消息被发送给感兴趣的消费者,事件在事件频道中被异步处理 。生产者和消费者不必等待对方即可开始下一个任务,因为生产者与接收者松散耦合或完全解耦 。
由于分离了通信和业务逻辑,解耦还提高了可扩展性 。如果订阅者离线或消费减慢速度,发布者可以避免瓶颈并且不受影响 。如果订阅者难以跟上事件的步伐,事件流会记录事件供将来检索 。发布者可以继续发送通知而不受吞吐量限制,并且有很强的故障恢复能力 。
发布/订阅(pub/sub)是事件驱动架构中的一种常见设计模式,它为发布者和订阅者之间交换消息提供了一种框架 。消息代理接收发布者的所有事件,并将发生的事件实时路由到订阅者,即注册接收事件的那些人 。代理还记录事件 。消费者可随时访问事件流,它们可以读取最新的消息,或处理自上次检查事件流以来收到的一系列消息 。
如果使用消息代理,发布者不知道订阅者,即使感兴趣的有关方数量增加,发布者也不会受到影响 。发布到代理让生产者有机会跨不同的设备和平台向一系列消费者传递通知 。
二、实施事件驱动架构面临的挑战
将功能做入到应用程序中以提供大规模实时体验有风险、很复杂、很费钱、很费时 。组织最初可能会花费数月时间用现成的组件搭建定制的解决方案 。随着团队需要应对规模和可靠性要求带来的复杂性,所需的时间很可能变成数年 。
许多应用程序依赖一系列相互依赖的消息 。然而,如果这些消息丢失或无序,会影响用户体验,并且客户数据在此过程中可能受损或丢失 。提供具有数据完整性的实时数字体验所需的技术很复杂,并且常常导致不可接受的取舍,比如公司为了数据完整性而牺牲大规模性能 。
还有性能问题 。设计、构建和扩展实时功能时,延迟不佳或不可预测、高带宽消费方面的问题会给应用程序开发人员带来不确定性 。除了尽量降低延迟和带宽要求外,组织还必须尽量避免这些措施方面的差异,为开发人员提供可预测性,确保交付的体验具有竞争力 。组织也很难设计、构建和运营自己的全球分布式容错实时基础架构 。为了实现容错,组织需要在多个数据中心拥有多个冗余部件,以便其他部件丢失时保持系统正常运行 。
组织开始扩展时,要么获得构建基础架构的方式带来的好处,要么承受带来的后果 。不到位的基础架构无法扩展,或无法提供满足客户实时要求所需的弹性 。此外,对于大多数组织而言,为事件驱动架构构建自己的基础架构只会分散注意力,无法一心开发真正使其产品与众不同的实时体验 。要做到可以依靠基础架构提供有竞争力的体验这地步,就需要团队招聘许多人,并且培养技能,这可能与业务核心几乎没多大相关性 。
三、Ably发布/订阅消息
为了克服这些挑战,Ably边缘消息传递平台提供了相应的API,从而使开发人员能够构建实时通信的应用程序和基础架构,而组织无需管理规模、延迟、消息完整性或网络中断 。
任意数量的订阅设备将实时接收从设备发布到Ably的消息 。为此,Ably将消息流量组织到命名频道中 。一旦连接到Ably,客户端可以是发布者(向Ably推送消息)、订阅者(等待消息从Ably推送)或两者兼而有之 。虽然Ably可能会传递数十亿条消息,但订阅者只会在它们订阅的频道上收到消息 。


推荐阅读