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) 密集式、面向数据式使用事件,订阅者通常是流处理器,从事件流中提取状态,并将状态专递给其他系统