借助 Eventarc,您可以构建事件驱动型和基于消息的架构,而无需实现、自定义或维护底层基础架构。
Eventarc 提供两个版本:Eventarc Advanced 和 Eventarc Standard。这两个版本都提供可伸缩的无服务器全代管式事件处理解决方案,可让您将事件从来源异步路由到目标。如需了解详情,请参阅选择 Eventarc Advanced 或 Eventarc Standard。
Eventarc Advanced 旨在简化应用、服务和端点之间通过消息进行的事件数据提取、编排和传送。借助 Eventarc Advanced,您可以收集系统中发生的事件,并将其发布到中央总线。感兴趣的服务可以通过创建注册来订阅特定消息。您可以使用总线和流水线来实时路由来自多个来源的事件,将这些事件发布到多个目标位置,并可以选择在将事件传递到目标位置之前对其进行转换。
Eventarc Advanced 非常适合具有复杂事件和消息传递需求的组织,特别是那些难以管理众多 Pub/Sub 主题、Kafka 队列或其他第三方消息传递系统的组织。Eventarc Advanced 可为管理员提供增强的集中式可见性和控制权,使组织能够连接不同项目中的多个团队。
您可以通过 Google Cloud 控制台、从命令行(使用 Google Cloud CLI)或使用 Eventarc API 来管理 Eventarc 高级版。
(点击图表可放大)。
主要概念
总线为事件提供可检测的端点,并且是一个路由器,可接收提供方发布的所有事件,并将这些事件传递到零个或多个目的地。借助总线,您可以集中处理、监控和跟踪消息在系统中的流动。您可以使用总线将来自多个来源的事件路由到多个目标。
系统会根据注册(表示对特定总线收集的事件的订阅)的标准来评估到达总线的消息。事件会路由到已订阅这些特定事件的使用者。注册后,您可以使用通用表达式语言 (CEL),通过根据事件属性匹配事件来定义精细的访问权限控制政策。注册还允许您指定匹配的事件应传送到的流水线。
流水线是总线与目标之间的传送中介。 流水线可指定目标目的地,并且在将任何匹配的事件传送到目的地之前,还可以选择对这些事件进行转换。它支持多种载荷格式,可让您在不修改源服务或目标服务的情况下即时调整事件数据,从而处理不同的事件结构。
主要功能
Eventarc 高级版支持目标应用的许多使用场景。一些关键功能包括:
大规模应用集成:您可以连接众多服务和应用,从而实现不同事件格式和架构之间的异步通信。
适用于 AI 和分析的事件流:您可以处理来自 IoT 设备和 AI 工作负载的大量数据,在将事件馈送到分析流水线之前对其进行过滤、转换和丰富。
混合云和多云部署:您可以将事件驱动型架构扩展到 Google Cloud之外,与本地系统和其他云服务提供商集成。借助 Eventarc Advanced,您可以路由来自各种来源(包括 Google 来源和事件的直接发布者)的事件。
了解区域性
Eventarc Advanced 是一项完全区域性的服务:所有 Eventarc Advanced 流量和数据都必须位于同一区域。例如,注册和流水线只能读取和处理来自总线所在区域的数据。通过以下方式可以实现跨区域支持:将事件发布到不同区域中的不同总线,以及在跨多个区域的服务边界内配置网络。
项目布局
所有 Eventarc 资源都必须属于一个 Google Cloud项目。不过,提供方(事件来源)、总线(管理员)和流水线(事件目标)不必位于同一项目中。
您可以结合使用 Identity and Access Management (IAM) 权限来控制资源使用情况,使用 CEL 对数据进行精细访问控制,并使用服务边界来支持不同的入站和出站流量需求,从而满足网络和安全要求。
事件
事件是表示出现及其上下文的数据记录,用于指示资源或环境中的变化。事件是与其他事件无关的独立通信单元。例如,事件可能表示数据库中数据的更改、添加到存储系统的文件或预定作业。
请注意,当组件的状态发生变化时,它也会发出消息,即事件。当事件发生时,消息会发送到事件基础架构,供使用方检索。在事件驱动型架构的背景下,我们通常使用“事件”一词来指代传达事件的消息,而不是指事件本身(即实际发生的消息生成情况)。
事件类型
Eventarc Advanced 支持直接来自 Google 来源的事件。
如需了解详情,请参阅 Eventarc 支持的 Google 事件类型。
事件提供方和目的地
Eventarc Advanced 会从事件提供方收集事件,并将其路由到事件目的地。每个 Eventarc Advanced 流水线只能指定一个目的地作为其路由消息的目标。
支持的提供方包括 Google 提供方和活动的直接发布商。 支持的目标包括 Cloud Run、Cloud Run 函数、托管在 Virtual Private Cloud 网络中的 HTTP 端点、Workflows 和另一个 Eventarc 高级总线。
如需了解详情,请参阅事件提供方和目的地。
事件格式和库
Eventarc 使用二进制内容模式中的 HTTP 请求将事件(无论提供方为何)以 CloudEvents 格式传递到目标目的地。CloudEvents 是一种以通用方式描述事件元数据的规范。
目标目的地(如 Cloud Run functions 和 Cloud Run)使用 HTTP 格式的事件。对于 Workflows 目的地,Workflows 服务会将事件转换为 JSON 对象,并将事件作为运行时参数传递给工作流执行。
使用标准方法描述事件元数据可确保一致性、可访问性和可移植性。事件使用方可以直接读取这些事件,也可以使用各种语言(包括 C++、C#、Go、Java、Node.js、PHP、Python 和 Ruby)的 Cloud 客户端库来读取和解析事件。此外,还有一组特定于语言的 CloudEvents SDK。
Google CloudEvents GitHub 代码库中提供了所有事件的 HTTP 正文结构。
可靠性和传送
不保证按顺序的先进先出传送。请注意,如果严格按顺序传送消息,将会影响 Eventarc 与其传输层 Pub/Sub 匹配的可用性和可伸缩性。如需了解详情,请参阅对消息排序。
对于延迟时间和吞吐量,提供尽力而为的保证。它们会因多种因素而异,包括发布或出站流量是否涉及不同区域、特定服务的配置以及 Google Cloud 区域中资源的网络负载。
请注意,Eventarc 通常具有使用配额和限制。
事件重试政策
Eventarc Advanced 设置的默认消息保留时长为 24 小时,具有指数退避算法延迟。
Eventarc Advanced 使用通过指数退避算法确定的延迟时间来处理可重试的错误。此机制从 1 秒延迟开始,每次尝试失败后延迟时间都会加倍(最多 60 秒,最多尝试 5 次)。
如需了解详情,请参阅重试事件。
重复事件
重复事件可能会传送到事件处理程序。根据 CloudEvents 规范,source
和 id
属性的组合被视为唯一,因此任何具有相同组合的事件被视为重复事件。作为一般最佳实践,您应该实现具有幂等性的事件处理程序。
可观测性
Google Cloud Observability 提供监控、日志记录和诊断工具。这些工具可帮助您监控和分析 Eventarc 活动和增长情况,并了解应用的行为、运行状况和性能。如需了解详情,请参阅 Eventarc 中的可观测性。
您可以从 Cloud Audit Logs 获取 Eventarc、Cloud Run、Cloud Run functions、Pub/Sub 和 Workflows 的详细日志。
合规性标准
Eventarc 符合这些认证和标准。