亚马逊的无服务器总线EventBridge支持事件溯源 - AWS


亚马逊宣布可在EventBridge中实现事件的存档和重播,这样,使用冷(归档)和热事件存储的机制,就可同时在新代码版本部署期间重放事件,这样能够实现CQRS/ES中的重新投影用于读模型的事件数据。
事件驱动的体系结构使用事件在一个或多个应用程序的组件之间共享信息。事件告诉我们“事情已经发生了”,也许您收到了API请求,文件已上传到存储平台,或者数据库记录已更新。商业事件描述了与您的活动相关的事物,例如,已经创建了新的客户帐户,或者付款已成功。
要使用您自己的应用程序,集成的软件即服务(SaaS)应用程序和AWS服务中的事件将应用程序连接在一起,您可以使用Amazon EventBridge(无服务器事件总线),该总线从事件源提供实时数据流,并将该数据路由到AWS Lambda等目标。
事件告诉我们一个事实,可以与对该信息感兴趣的任何人共享。创建新的客户帐户后,此信息可以被添加的新服务使用,而无需更改现有接口。例如,新的欺诈检测系统可能会对了解所有新客户帐户的创建感兴趣,因为它们将创建以执行安全检查并评估可能的欺诈活动。
有时您可能需要重新处理过去的事件。在许多有用的用例中,例如:

  • 修复错误后,您可以重新处理受影响的事件以获得正确的结果。此方法假定您的应用程序可以多次处理同一事件。
  • 发布新功能时,可以重新处理以前的事件,以将功能范围扩展到过去的数据。例如,已添加到您的应用程序中的欺诈检测系统不仅可以访问新帐户,而且还可以访问在过去几周或几个月内创建的过去帐户。

为了简化操作,我很高兴分享EventBridge现在可以存档和重播事件:
  • 现在,您可以为发布到事件总线的事件创建加密的存档。您可以存档所有事件,或使用EventBridge规则使用的模式匹配语法过滤它们。您可以无限期存储事件,也可以设置保留期限,在此期限之后,较早的事件会自动从存档中删除。
  • 您还可以重放存储在档案中的事件。事件会重播到为事件总线定义的所有规则(但不会重播由其他AWS服务创建的托管规则)或您指定的规则。重播事件包含一个额外的  replay-name字段,以防您需要识别它们。开始重播时,您定义一个时间范围,并且仅重播该时间范围内的事件。当前,您只能将事件重播到与其存档的同一事件总线上。

存档和重播可处理EventBridge处理的所有事件,包括来自AWS平台,来自SaaS集成的事件以及您自己的自定义事件。
在重播期间,您的当前事件吞吐量不会受到影响,因为EventBridge为重播保留了单独的配额。就每秒发布的事件而言,重播的速度与您在该区域中当前的PutEvents限制相同。如果您要求增加PutEvents服务配额,则重放会更快。这样,您的正常操作不会受到重放的影响。但是,您应检查处理重放的下游服务的性能和限制,以确保它们可以处理额外的工作负载。
您可以停止正在进行的重放。您无法恢复已停止的重播,但是可以创建一个新的重播,并且将开始时间设置为lastReplayedEvent先前已停止的重播的时间戳。