CLOUDEVENTS三部曲:初識篇

隨着雲原生的發展(雲原生的下一個五年在哪裏?),逐步進入深水區,業界須要一種統一的事件定義和描述規範,以提供跨服務、跨平臺的交互能力。CloudEvents事件規範應運而生,並獲得了行業的普遍關注,包括主要的雲提供商和 SaaS 公司。 對於CloudEvent的介紹、規範說明及實踐落地,將以三篇系列文章進行說明,本文爲《CloudEvent三部曲:初識篇》.html

1、規範背景

1.1 需求背景

事件在系統設計中已經變的無處不在,但各種事件的提供方傾向於以不一樣的方式來描述事件,缺少一種對事件的統一描述,事件使用方和提供方每每要花費大量的時間溝通字段定義,設計事件屬性,並在未來的使用過程當中疲於新增或修改事件的屬性。這也限制了類庫、工具和基礎設施在跨環境時發送事件數據的潛力,如SDK、事件路由器或跟蹤系統等。 隨着雲原生的發展(雲原生的下一個五年在哪裏?),逐步進入深水區,業界須要一種統一的事件定義和描述規範,以提供跨服務、跨平臺的交互能力。CloudEvents事件規範應運而生,並獲得了行業的普遍關注,包括主要的雲提供商和 SaaS 公司。服務器

1.2 歷史背景

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

  • 2018年,微軟宣佈將經過Event Grid服務(一項由Azure集中管理的事件服務,支持用戶經過「發佈-訂閱」機制發送和接收事件)提供對CloudEvents的支持
  • 2019年,阿里雲開始推廣 OpenMessaging 標準協議,但願讓 Apache RocketMQ 兼容 Cloudevent 體系,成爲 Serverless 的橋樑
  • 2020年,字節跳動在其函數計算產品中利用CloudEvents規範統一事件源標準,極大方便以後的能力擴展。

但大多數雲目前缺少CloudEvents規範的相應支持,致使各能力服務之間的聯動效率較差,該問題丞待解決。函數

2、規範優點

從歷史上看,行業缺少描述無服務器的事件元數據的標準,這意味着開發人員須要從新學習如何跨系統使用各類類型的事件數據,從而難以構建可移植的工具。 CloudEvents 定義了一套一致的元數據,且首次將業界的雲供應商、企業軟件巨頭和初創企業的無服務器社區彙集在一塊兒,實現並支持該規範。 CloudEvents 具備以下一些優點: a. 消費優點 生產者生產事件供消費者使用時,因爲使用了 CloudEvents 規範,消費者再也不須要爲平臺或服務的差別性編寫特定的消費邏輯,改而使用通用邏輯處理事件數據,方便事件消費者提升開發效率,並下降系統複雜度。例如:阿里雲的事件總線 EventBridge,微軟Azure的Event Grid服務都極大方便了產品的端到端集成。 b. 路由優點 中間件將事件從生產者路由到消費者,或者轉發到其餘中間件的時,CloudEvents會保留事件的身份和語義完整性。 用於事件的分類過濾或元數據的鑑別。例如:消費者利用過濾功能只關注特定用戶;或者利用元數據鑑別只接收後綴爲 .doc 的新建文件等。 利用 CloudEvents中間件能夠在改變事件的語義含義時承擔生成器的角色,在基於事件採起行動時承擔消費者的角色,或在路由事件不進行語義更改時承擔中間件的角色。例如: Apache RocketMQ 社區發佈的OpenMessaging 標準協議兼容CloudEvents規範,從而成爲 Serverless 的橋樑,更加高效普遍的進行消息路由。 c. 交互優點 利用 CloudEvents系統框架對內解耦各模塊的通訊能力,提升可維護性;對外與其餘事件平臺基礎設施的交互將更簡單,而且方便爲其餘平臺設施提供通用 API,下降交互的複雜性,提升系統平臺的擴展性。工具

3、落地場景

CloudEvents 在以下場景中有普遍的應用價值:oop

  1. 跨平臺和服務的事件規範化

不一樣的雲提供商都在各自的平臺上以不一樣的格式發佈事件,此外同一雲提供商上的不一樣服務也可能以不一樣的格式發佈事件。這就迫使事件消費者不得不針對各種平臺或各種服務編寫針對性邏輯來消費事件數據。而CloudEvents 能夠爲處理跨平臺和跨服務的事件的消費者提供統一的體驗。學習

  1. 事件追蹤

從事件源發送的事件可能會致使各類中間件設備(如事件代理和網關)產生的附加事件序列。利用CloudEvents 包含事件的元數據這一特性(例如:事件通過多個代理時,代理會將自身IP追加到CloudEvents擴展屬性中,最終事件消費者能夠經過擴展屬性中的 IP 信息,知道事件通過哪些代理),能夠將這些附加的事件信息做爲源事件序列的一部分進行關聯,從而進行事件追蹤和故障排除。阿里雲

  1. 提升Serverless的可移植性

Serverless(也稱無服務器計算)是IT領域發展最快的趨勢之一,它主要是由事件驅動。然而,供應商的鎖定是FaaS的一個主要問題,這種鎖定部分主要是因爲各供應商函數內部接收事件數據的格式差別形成的。CloudEvents 對事件數據的通用描述方式解決了該問題,從而提升了FaaS的可移植性。 微軟Azure的Event Grid事件服務提供了對CloudEvens的支持,用戶能夠將本身的CloudEvents推送到指定的Azure Grid Event主題(topic)。此後,Grid Event支持將符合CloudEvent模式的事件轉換爲符合特定Event Grid模式的事件,或者反之。

4、參考資料

CloudEvents三部曲:初識篇

後續系列請關注CloudNative技術公衆號:DCOS。

相關文章
相關標籤/搜索