searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

cloudevents事件规范解读

2024-06-26 09:44:50
26
0

一、入门

    事件源生产事件,协议封装事件,触发行为
    事件可以通过各种行业标准协议(如HTTP、AMQP、MQTT、SMTP)、开源协议(例如 Kafka、NATS)或 平台/供应商专有协议(AWS Kinesis、Azure Event Grid)传输
    设计目标
        规范目标:各事件系统的互操作性
        核心规范:定义一组事件元数据(事件属性),序列化,批处理,适配器
    非目标
        协议级路由信息,事件持久化,授权、数据完整性和保密机制
    架构
        基本规范(属性(键值对)),扩展属性,事件格式编码,协议绑定
        互操作性约束条件:事件大小 <= 64KB
        协议错误处理
    属性版本控制
        type, dataschema
    属性
        id: 同一事件源,唯一id
    属性扩展
        必要属性: 任何情况下,对所有事件
        可选属性: 大多数情况下使用
        扩展属性: 不够常见,但会使系统间的互操作性级别受益
        JSON扩展: 上面3种属性,都是 JSON 对象的顶层属性
    创建CloudEvents
        原始事件源、CloudEvents生产者 可能分离,事件嵌套
    合理化协议与编码:广泛使用的协议
    专有的协议与编码
    现有技术
        生产事件:生产者或中间人
        消费事件
            显示、存档、分析、工作流处理、监控状态、提供业务解决方案
            事件唯一性、时间顺序、关联多个事件
        中间件
            管理消费者、过滤、转码、转换事件格式、推送、存储、监控
            元数据鉴别器、数据编码、数据结构布局
        规范的价值
        现有数据格式:各厂商事件格式
 

二、核心规范

    符号和术语
        OPTIONAL属性:生产者、消费者可选支持,中间人要转发
        上下文:上下文环境元数据,用来识别事件与系统、事件与其他事件的关系
        事件格式:序列化,独立事件格式、协议绑定
        消息
            结构化模式消息:使用独立事件格式
            二进制模式消息:事件数据存储在消息体,事件属性作为消息元数据的一部分
        协议绑定:描述如何通过给定的协议发送和接收事件
    上下文属性
        命名约定:小写字母或数字,长度<=20
        类型系统
            转换:规范字符串编码<-->对应抽象类型的运行时/编程语言类型,规范字符串编码<-->协议元数据字段中的对应数据类型
        必要属性
            id:source+id表示唯一事件,可能重复发送
            source:使用UUIDs、URNs、DNS权威机构或特定于应用程序的方案来创建唯一source
            specversion
            type:事件类型,以反向DNS名称作为前缀
        可选属性
            datacontenttype:data值的内容类型
            dataschema:标识data遵守的规范
            subject:source的内部子结构
            time:事件发生的时间戳
        扩展属性
            像HTTP自定义头部
            避免名称冲突、目的冲突
    事件数据
        datacontenttype指定媒体格式
    大小限制
        包括协议帧元数据、事件元数据和事件数据
        中间人<=64KB,消费者>=64KB
        大型数据项:外链
        外链好处:能实现差异化访问控制和选择性披露,避免将敏感详细数据直接嵌入到事件
    隐私与安全
        敏感信息不应在上下文属性中携带
        数据加密
        协议级别的安全性机制


三、SDK

    技术性要求
        支持CloudEvents规范,CloudEvents标准事件<--(编解码)-->传输协议
        支持HTTP structured+binary模型
    对象模型结构
        构建事件
        编码并发送事件
        接收并解码事件
    https冒号//github.com/cloudevents/spec/blob/v1.0.2/cloudevents/translated/zh-cn/SDK_CN.md


四、适配器

    AWS S3 events --> CloudEvents
    CouchDB Document events, CouchDB Database events --> CloudEvents
    GitHub webhook events --> CloudEvents
    GitLab webhook events --> CloudEvents
    其他格式的事件转换为CloudEvents
    https冒号//github.com/cloudevents/spec/blob/v1.0.2/cloudevents/translated/zh-cn/adapters_CN.md


五、协议绑定

    HTTP: 3种数据模式,HTTPS安全访问
    AMQP: 2种模式, structured, binary
    Kafka: 2种模式, structured, binary
    MQTT: 2种模式, structured, binary
    NATS: 1种模式, structured
    WebSockets
        1种模式, structured
        子协议: json, avro, proto


六、事件格式

    avro, json, proto


七、扩展属性

    不是正式、稳定的,不属于核心规范
    数据引用
        dataref
        数据太大、防篡改、访问鉴权
    事件追踪
        traceparent, tracestate
    分区
        partitionkey, 相同key事件放同一个桶
    采样率
        sampledrate: 30, 每30次生成一个事件
        降低事件频次,降低产生事件开销,提高性能
    事件顺序
        sequence(32位连续数字), sequencetype(Integer)


八、Webhooks

    https, post
    认证: Authorization, URI参数
    滥用保护机制: 
        验证请求: WebHook-Request-Origin, WebHook-Request-Callback, WebHook-Request-Rate
        验证响应: WebHook-Allowed-Origin, WebHook-Allowed-Rate


九、CloudEvent 专有协议与编码规范

    Apache RocketMQ Transport Binding
    Google Cloud Pub/Sub Protocol Binding

0条评论
0 / 1000
a****k
15文章数
0粉丝数
a****k
15 文章 | 0 粉丝
原创

cloudevents事件规范解读

2024-06-26 09:44:50
26
0

一、入门

    事件源生产事件,协议封装事件,触发行为
    事件可以通过各种行业标准协议(如HTTP、AMQP、MQTT、SMTP)、开源协议(例如 Kafka、NATS)或 平台/供应商专有协议(AWS Kinesis、Azure Event Grid)传输
    设计目标
        规范目标:各事件系统的互操作性
        核心规范:定义一组事件元数据(事件属性),序列化,批处理,适配器
    非目标
        协议级路由信息,事件持久化,授权、数据完整性和保密机制
    架构
        基本规范(属性(键值对)),扩展属性,事件格式编码,协议绑定
        互操作性约束条件:事件大小 <= 64KB
        协议错误处理
    属性版本控制
        type, dataschema
    属性
        id: 同一事件源,唯一id
    属性扩展
        必要属性: 任何情况下,对所有事件
        可选属性: 大多数情况下使用
        扩展属性: 不够常见,但会使系统间的互操作性级别受益
        JSON扩展: 上面3种属性,都是 JSON 对象的顶层属性
    创建CloudEvents
        原始事件源、CloudEvents生产者 可能分离,事件嵌套
    合理化协议与编码:广泛使用的协议
    专有的协议与编码
    现有技术
        生产事件:生产者或中间人
        消费事件
            显示、存档、分析、工作流处理、监控状态、提供业务解决方案
            事件唯一性、时间顺序、关联多个事件
        中间件
            管理消费者、过滤、转码、转换事件格式、推送、存储、监控
            元数据鉴别器、数据编码、数据结构布局
        规范的价值
        现有数据格式:各厂商事件格式
 

二、核心规范

    符号和术语
        OPTIONAL属性:生产者、消费者可选支持,中间人要转发
        上下文:上下文环境元数据,用来识别事件与系统、事件与其他事件的关系
        事件格式:序列化,独立事件格式、协议绑定
        消息
            结构化模式消息:使用独立事件格式
            二进制模式消息:事件数据存储在消息体,事件属性作为消息元数据的一部分
        协议绑定:描述如何通过给定的协议发送和接收事件
    上下文属性
        命名约定:小写字母或数字,长度<=20
        类型系统
            转换:规范字符串编码<-->对应抽象类型的运行时/编程语言类型,规范字符串编码<-->协议元数据字段中的对应数据类型
        必要属性
            id:source+id表示唯一事件,可能重复发送
            source:使用UUIDs、URNs、DNS权威机构或特定于应用程序的方案来创建唯一source
            specversion
            type:事件类型,以反向DNS名称作为前缀
        可选属性
            datacontenttype:data值的内容类型
            dataschema:标识data遵守的规范
            subject:source的内部子结构
            time:事件发生的时间戳
        扩展属性
            像HTTP自定义头部
            避免名称冲突、目的冲突
    事件数据
        datacontenttype指定媒体格式
    大小限制
        包括协议帧元数据、事件元数据和事件数据
        中间人<=64KB,消费者>=64KB
        大型数据项:外链
        外链好处:能实现差异化访问控制和选择性披露,避免将敏感详细数据直接嵌入到事件
    隐私与安全
        敏感信息不应在上下文属性中携带
        数据加密
        协议级别的安全性机制


三、SDK

    技术性要求
        支持CloudEvents规范,CloudEvents标准事件<--(编解码)-->传输协议
        支持HTTP structured+binary模型
    对象模型结构
        构建事件
        编码并发送事件
        接收并解码事件
    https冒号//github.com/cloudevents/spec/blob/v1.0.2/cloudevents/translated/zh-cn/SDK_CN.md


四、适配器

    AWS S3 events --> CloudEvents
    CouchDB Document events, CouchDB Database events --> CloudEvents
    GitHub webhook events --> CloudEvents
    GitLab webhook events --> CloudEvents
    其他格式的事件转换为CloudEvents
    https冒号//github.com/cloudevents/spec/blob/v1.0.2/cloudevents/translated/zh-cn/adapters_CN.md


五、协议绑定

    HTTP: 3种数据模式,HTTPS安全访问
    AMQP: 2种模式, structured, binary
    Kafka: 2种模式, structured, binary
    MQTT: 2种模式, structured, binary
    NATS: 1种模式, structured
    WebSockets
        1种模式, structured
        子协议: json, avro, proto


六、事件格式

    avro, json, proto


七、扩展属性

    不是正式、稳定的,不属于核心规范
    数据引用
        dataref
        数据太大、防篡改、访问鉴权
    事件追踪
        traceparent, tracestate
    分区
        partitionkey, 相同key事件放同一个桶
    采样率
        sampledrate: 30, 每30次生成一个事件
        降低事件频次,降低产生事件开销,提高性能
    事件顺序
        sequence(32位连续数字), sequencetype(Integer)


八、Webhooks

    https, post
    认证: Authorization, URI参数
    滥用保护机制: 
        验证请求: WebHook-Request-Origin, WebHook-Request-Callback, WebHook-Request-Rate
        验证响应: WebHook-Allowed-Origin, WebHook-Allowed-Rate


九、CloudEvent 专有协议与编码规范

    Apache RocketMQ Transport Binding
    Google Cloud Pub/Sub Protocol Binding

文章来自个人专栏
云组件
15 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0