借助 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 Advanced。
主要概念
总线可为事件提供可检测的端点,并且是一种路由器,用于接收提供方发布的所有事件,并将其传送到零个或多个目的地。借助总线,您可以集中管理、监控和跟踪系统中的消息流。您可以使用总线将事件从多个来源路由到多个目标。
系统会根据注册标准来评估到达总线的消息,注册表示对特定总线收集的事件的订阅。事件会路由到订阅了这些特定事件的使用方。通过注册,您可以使用通用表达式语言 (CEL) 定义精细的访问权限控制政策,方法是根据事件属性匹配事件。通过注册,您还可以指定应将匹配的事件传送到的流水线。
流水线是总线与目标之间的传送中介。流水线会指定目标目的地,还可让您选择在将任何匹配的事件传送到目的地之前对其进行转换。它支持多种载荷格式,可让您在不修改源服务或目标服务的情况下,动态调整事件数据,从而处理不同的事件结构。
主要功能
Eventarc Advanced 支持目标应用的许多使用场景。其中一些关键功能包括:
大规模应用集成:您可以连接众多服务和应用,实现跨不同事件格式和架构的异步通信。
适用于 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 函数、托管在虚拟私有云网络中的 HTTP 端点、Workflows 以及其他 Eventarc Advanced 总线。
如需了解详情,请参阅事件提供方和目的地。
事件格式和库
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
属性的组合被视为唯一,因此任何具有相同组合的事件被视为重复事件。作为一般最佳实践,您应该实施具有幂等性的事件处理程序。
可观测性
您可以从 Cloud Audit Logs 获取 Eventarc、Cloud Run、Cloud Run Functions、Pub/Sub 和 Workflows 的详细日志。