CloudEvents是一种以通用方式描述事件数据的规范。CloudEvents旨在简化跨服务,平台及其他方面的事件声明和发送。CloudEvents最初由CNCF Severless 工作组提出。
一、需求背景
事件无处不在,然而事件发布者对事件的描述却往往不尽相同。
- 一致性:缺乏通用的事件描述方式,意味着开发人员必须为每个事件源编写新的事件处理逻辑。
- 无障碍环境:没有通用的事件格式意味着没有通用的库、工具和基础设施来跨环境投递事件数据。CloudEvents提供了Go、JavaScript、Java、C#、Ruby和
Python的SDK,可用于构建事件路由器、跟踪系统和其他工具。 - 可移植性:整体上阻碍了我们从事件数据中实现的可移植性和生产力。
何为CloudEvents
CloudEvents 是一个以通用方式描述事件数据的规范。CloudEvents旨在大幅简化跨服务、跨平台的事件声明和投递。
CloudEvents是一项新的工作,目前仍在积极开发中。然而,它的工作小组已经收到了令人惊讶的行业兴趣,从主要的云提供商到流行的SaaS公司都有。该规范现在由云原生计算基金会(Cloud Native Computing Foundation/CNCF)负责。
CloudEvents是通过CNCF的Serverless工作组组织的。
二、CloudEvents 1.0
历史发展
CNCF Severless 工作组最初是由 CNCF 技术监督委员会创立的,旨在调查 Serverless 技术和指导 CNCF 在本领域下一步可能展开的相关工作的建议。其中一项建议是创建一个通用的 Event Format,以在不同云供应商提供的Function 之间实现可移植性和事件流处理的互操作性。CloudEvents 规范因此被创建出来。
版本确立
尽管 CloudEvents 的工作最初是作为 Serverless 工作组的一部分开展的,当规范到达 v0.1 里程碑之后,TOC 批准了 CloudEvents 成为一个独立的 CNCF 沙盒项目。2019年10月24日,CloudEvents项目取得了两项重大成果。第一,CNCF的技术监督委员会批准该项目成为 “孵化器 “项目(从而使其从CNCF的 “沙盒”毕业)。第二,CloudEvents规范发布了1.0版本!这是该规范的第一个主要版本,代表了整个serverless社区中一个真正伟大的团队两年来的努力工作。我们已经有几乎所有主要的云提供商参与其中,还有一些 “终端用户 “公司以及许多个人参与者,他们都在努力工作以制作出一个规范,希望在这一里程碑式的发展过程中,能够继续得到更多的采用。除了核心的CloudEvents规范外,还有Primer和协议及格式规范,所有这些都可以在GitHub repo中找到。此外,还有六种不同的SDK-Go、JavaScript、Java、C#、Ruby和Python,帮助生产和消费CloudEvents。CNCF Serverless工作组将决定下一步的工作重点(例如,额外的CloudEvents相关活动,或者解决社区正在经历的其他互操作性痛点)。