应用程序编程接口(API)正在推动数字化转型,并在几乎所有企业的IT环境中占据主导地位。推动这一流行趋势的是终端用户日益增长的需求,他们现在期望数字体验具有交互性、响应性和即时性。组织正在转向API,以创建吸引人的高效体验,并优化从运营到客户服务的所有业务领域。事实上,Gartner 2021年的技术趋势之一是总体体验,它定义为结合多种体验、客户体验和员工体验来改变业务成果。
但开发人员如何构建满足这些复杂需求的解决方案?他们正在使用事件驱动架构(EDA)和面向服务的架构设计API。使用EDA,客户端可以异步订阅和接收事件,如果两者都在线,则可以实时订阅和接收事件,从而使客户端无需请求更新或状态更改。通过将架构复杂性的负担从客户转移到生产商,企业可以创造现代用户期望的流畅体验。
什么是事件驱动架构?
EDA使用事件触发解耦应用程序、微服务和连接设备之间的通信,并使信息能够实时流动。为了真正理解它的全部内容,回顾一下分布式软件系统架构的历史以及它在过去几十年中是如何发展的是非常有用的。
20世纪40年代的第一批软件程序使用子例程,根据一组指令执行任务。著名的是,ENIAC团队的程序员在第二次世界大战期间开发了计算导弹轨迹的子程序。
然后,计算架构设计逐渐演变为以能够远程执行多个子例程的编排器系统为中心。从这个结构中出现了请求-响应范式:编排器节点向不同的计算机发送带有请求的子例程,然后计算机处理请求并将响应返回给原始编排器。
1989年Tim Berners-Lee发明万维网后,HTTP成为部署分布式系统的首选方法,URL公开和访问子例程,这自然导致了API。随着业务重点更加关注实时体验,API成为当今企业创新的关键驱动力。
API驱动的用户体验
API通过模拟真实世界的操作来创建体验。让我们以一家在线服装零售商为例。开发人员可以定义一个API来执行下单过程的每个操作。例如,API可以接受订单、管理库存、运行报告和更新交付状态——所有这些都是实时的。该系统需要一个基于web或应用程序的界面,以模拟操作员请求操作或信息。因此,用户不用打电话,而是通过与界面交互来触发API下单或检查交付状态。
以零售商为例,你可以进一步扩展该服务,以开发模拟整个订单管理流程的SaaS应用程序。例如,你可以定义一组REST API来创建订单并跟踪从初始订单到交付的工作流。API还可以管理订单履行过程中的操作和物流,并处理业务事务。
该系统生成虚拟对象,对处理订单所涉及的真实对象进行建模,包括订单本身、付款交易和送货单。使用REST API对事务对象进行建模,API设计变得更具逻辑性和细致入微,因为你可以直接使用对象的特定端点来查询对象,而不是用所有查询重载公共的单一端点。例如,你可以通过查询订单端点来查询订单的状态,API将返回订单的当前状态。
REST API还依赖于通过HTTP的请求-响应模式,要求客户端根据需要提交状态更改或更新请求。当一切顺利时,这个系统运行良好。但是,如果出现问题,例如支付失败或交付延迟,系统将发生故障并影响客户服务。这样的事件就变成了业务关键的“事件”。从客户服务的角度来看,最好让客户尽快知道任何问题,而不是让他们自己去解决。这就是为什么现代的、以人为中心的SaaS应用程序必须比基于传统REST方法的应用程序提供更高质量和更实时的交互。
事件驱动API的未来
在REST框架中,API不知道对象的状态。客户端查询API以了解状态,API的作用是用信息响应客户端。
但是,使用事件驱动的API,客户可以订阅API,有效地指示它监控对象的状态,并通过实时更新进行报告。因此,行为从对可重复、独立请求的无状态处理转变为对模拟真实世界操作的虚拟对象的有状态感知。
事件驱动的API是满足现代最终用户需求的一种很好的方法,这些用户希望定制和即时访问信息。在一次性定制环境中应用这些API很容易。然而,当你需要大规模提供这一级别的服务时,事情会变得更加复杂,而且并非每个企业都准备好处理这一级别的复杂性。为了避免积累大量的技术债务,组织和开发人员应该将这种复杂性转移给第三方,让第三方能够实时、大规模地同步数字体验。
有了正确的实时基础设施支持,组织可以在一系列用例中应用事件驱动的API。它们在传统架构下运行良好,并提供满足现代数字交互需求所需的功能,例如:
更好的实时体验:事件驱动的API吸收了以前分配给最终用户的许多职责,创造了更多的交互体验。
降低更改管理开销:API将使用者(使用API的应用程序)和生产者(服务器)解耦,因为使用者只需要知道事件的数据格式,而不需要知道哪个服务器正在发送数据。同样,生产者对使用者的身份不感兴趣,从而降低了管理费用。
可伸缩性:API生产者不需要管理竞争的使用者——事实上,订阅者的数量与生产者无关。重要的是经纪人将信息传递给订阅者,不管订阅者是谁,也不管他们的数量有多大。
可扩展性和弹性:松耦合的组件易于就地扩展,回归风险低。开发人员还可以在不影响其他消费者的情况下添加功能。类似地,在设计中加入容错也很容易,因为可以划分组件故障。
并发一致性:事件驱动的API通过事件和消息顺序的不变性以及精确的一次交付,使得在分布式系统中更容易实现并发性。
优化使用网络资源:传统的面向服务的方法往往依赖于基于推送的方法,这往往会消耗服务器的资源,例如连续轮询。本质上,事件驱动的API可以更有效地利用网络和计算资源。
技术成熟度:事件驱动方法已经存在了近50年,但现代在线服务交付系统需要很长时间才能赶上。我们生活在一个激动人心的时代,这两种技术可以结合起来满足当今的消费者需求。
EDA是一种竞争优势
自20世纪70年代构思以来,EDA一直在耐心等待。随着事件驱动API的出现,EDA正在成为解决现代业务问题和提供实时用户体验的中心舞台。虽然EDA可能不是每个业务挑战的答案,但当应用到正确的用例时,它可以改变公司的运营和客户服务。越来越清楚的是,企业要想在现代市场中保持竞争力,就需要知道在何处以及如何使用EDA。
原文链接:
https://thenewstack.io/the-rise-of-event-driven-architecture/