随着云原生的发展(云原生的下一个五年在哪里?),逐步进入深水区,业界须要一种统一的事件定义和描述规范,以提供跨服务、跨平台的交互能力。CloudEvents事件规范应运而生,并获得了行业的普遍关注,包括主要的云提供商和 SaaS 公司。 对于CloudEvent的介绍、规范说明及实践落地,将以三篇系列文章进行说明,本文为《CloudEvent三部曲:初识篇》.html
事件在系统设计中已经变的无处不在,但各种事件的提供方倾向于以不一样的方式来描述事件,缺少一种对事件的统一描述,事件使用方和提供方每每要花费大量的时间沟通字段定义,设计事件属性,并在未来的使用过程当中疲于新增或修改事件的属性。这也限制了类库、工具和基础设施在跨环境时发送事件数据的潜力,如SDK、事件路由器或跟踪系统等。 随着云原生的发展(云原生的下一个五年在哪里?),逐步进入深水区,业界须要一种统一的事件定义和描述规范,以提供跨服务、跨平台的交互能力。CloudEvents事件规范应运而生,并获得了行业的普遍关注,包括主要的云提供商和 SaaS 公司。服务器
CloudEvents 是一种以通用方式描述事件数据的供应商中立的规范,该事件数据定义规范旨在简化跨服务,平台及其余方面的事件声明和发送。 CloudEvents 的相关工做最初是做为云原生计算基金会(Cloud Native Computing Foundation,简称 CNCF)Serverless工做组的一部分开展的,当规范达到v0.1的里程碑以后,于2018年5月15日得到技术监督委员会(Technical Oversight Committee,简称 TOC)批准做为一个全新的独立的CNCF沙盒项目。 2019年10月24日,CloudEvents项目取得了两项重大成果。第一,CNCF的技术监督委员会批准该项目成为 “孵化器“项目(从而使其从CNCF的“沙盒”毕业)。第二,CloudEvents规范发布了1.0版本,这是该规范的第一个主要版本!markdown
现状框架
目前各大第三方云提供商都在大力推广落地CloudEvents规范,例如:less
但大多数云目前缺少CloudEvents规范的相应支持,致使各能力服务之间的联动效率较差,该问题丞待解决。函数
从历史上看,行业缺少描述无服务器的事件元数据的标准,这意味着开发人员须要从新学习如何跨系统使用各类类型的事件数据,从而难以构建可移植的工具。 CloudEvents 定义了一套一致的元数据,且首次将业界的云供应商、企业软件巨头和初创企业的无服务器社区汇集在一块儿,实现并支持该规范。 CloudEvents 具备以下一些优点: a. 消费优点 生产者生产事件供消费者使用时,因为使用了 CloudEvents 规范,消费者再也不须要为平台或服务的差别性编写特定的消费逻辑,改而使用通用逻辑处理事件数据,方便事件消费者提升开发效率,并下降系统复杂度。例如:阿里云的事件总线 EventBridge,微软Azure的Event Grid服务都极大方便了产品的端到端集成。 b. 路由优点 中间件将事件从生产者路由到消费者,或者转发到其余中间件的时,CloudEvents会保留事件的身份和语义完整性。 用于事件的分类过滤或元数据的鉴别。例如:消费者利用过滤功能只关注特定用户;或者利用元数据鉴别只接收后缀为 .doc 的新建文件等。 利用 CloudEvents中间件能够在改变事件的语义含义时承担生成器的角色,在基于事件采起行动时承担消费者的角色,或在路由事件不进行语义更改时承担中间件的角色。例如: Apache RocketMQ 社区发布的OpenMessaging 标准协议兼容CloudEvents规范,从而成为 Serverless 的桥梁,更加高效普遍的进行消息路由。 c. 交互优点 利用 CloudEvents系统框架对内解耦各模块的通讯能力,提升可维护性;对外与其余事件平台基础设施的交互将更简单,而且方便为其余平台设施提供通用 API,下降交互的复杂性,提升系统平台的扩展性。工具
CloudEvents 在以下场景中有普遍的应用价值:oop
不一样的云提供商都在各自的平台上以不一样的格式发布事件,此外同一云提供商上的不一样服务也可能以不一样的格式发布事件。这就迫使事件消费者不得不针对各种平台或各种服务编写针对性逻辑来消费事件数据。而CloudEvents 能够为处理跨平台和跨服务的事件的消费者提供统一的体验。学习
从事件源发送的事件可能会致使各类中间件设备(如事件代理和网关)产生的附加事件序列。利用CloudEvents 包含事件的元数据这一特性(例如:事件通过多个代理时,代理会将自身IP追加到CloudEvents扩展属性中,最终事件消费者能够经过扩展属性中的 IP 信息,知道事件通过哪些代理),能够将这些附加的事件信息做为源事件序列的一部分进行关联,从而进行事件追踪和故障排除。阿里云
Serverless(也称无服务器计算)是IT领域发展最快的趋势之一,它主要是由事件驱动。然而,供应商的锁定是FaaS的一个主要问题,这种锁定部分主要是因为各供应商函数内部接收事件数据的格式差别形成的。CloudEvents 对事件数据的通用描述方式解决了该问题,从而提升了FaaS的可移植性。 微软Azure的Event Grid事件服务提供了对CloudEvens的支持,用户能够将本身的CloudEvents推送到指定的Azure Grid Event主题(topic)。此后,Grid Event支持将符合CloudEvent模式的事件转换为符合特定Event Grid模式的事件,或者反之。
4、参考资料
后续系列请关注CloudNative技术公众号:DCOS。