CloudEvents
以通用方式描述事件数据的规范,常用于分布式系统,用来构建松耦合且可独立部署的分布式系统。
介绍
CloudEvents
规则最初由CNCF下的Serverless Working Group创建,用来定义事件的规范。从v0.1后,该规范被升级为CNCF沙盒项目。
特点
- 一致性:统一描述事件的通用格式
- 可访问性:CloudEvents 为 Go、JavaScript、Java、C#、Ruby、PHP、PowerShell、Rust 和 Python 提供 SDK,可用于构建事件路由器、跟踪系统和其他工具
- 可移植性:可以从事件数据中实现的可移植性和生产力总体上受到阻碍
集成支持者
- Adobe I/O Events
- Alibaba Cloud EventBridge
- Argo Events
- Azure Event Grid
- Choria
- commercetools
- Debezium
- Direktiv
- Falco
- Google Cloud Eventarc
- IBM Cloud Code Engine
- Keptn
- Knative Eventing
- Kogito
- OpenFaaS
- Oracle Cloud
- Serverless.com Event Gateway
- Serverless Workflow
- Tekton Pipelines
- Tencent Cloud EventBridge
- TriggerMesh
- VMware Event Broker Appliance
- wasmCloud
概念
事件(Event)
:是一段不可变的数据,记录系统在特定时间内的特定行为,或转态的转变
- 事件包括某个实际情景(occurrence)的上下文和数据,和一个唯一标识
- 通过事件流,可以重塑系统的运行历史
- 事件通常用于后端代码或子系统中
事件源(Event Source)
生成事件(Event)
被封装在协议中生成传输单元(Message)
以方便传输,事件到达目的端后,将触发基于事件数据的动作(Action)
- 传输协议:支持行业的各种标准协议(如HTTP、AMQP、SMTP等)、开源协议(如KAFKA、NATS)等
动作(Action)
通常是由特定来源的特定事件触发,是专门处理该类事件的代码,可允许与 Serverless Function 逻辑中
事件源(Event Sourcing)
是事件数据的持久化模式
事件驱动
不存在规范的、严格的定义,任何使用事件通知范式(pub/sub)
的系统都是事件驱动系统,一般分为两类:
响应时(reactive)
本质是分同步性质的函数调用(通过HTTP RESTFULL、RPC、GRPC调用)
流处理(stream processing)
密集式、面向数据式使用事件,订阅者通常是流处理器,从事件流中提取状态,并将状态专递给其他系统