合併OpenTracing和OpenCensus的趨同路線圖
- 2019 年 12 月 4 日
- 筆記
作者:Ted Young、Pritam Shah和「技術規範委員會」(Carlos Alberto、Bogdan Drutu、Sergey Kanzhelev和Yuri Shkuro)。

簡短的版本
- 我們正在創建一套新的、統一的庫和可觀測遙測技術規範。它將合併OpenTracing和OpenCensus項目,並提供一個受支援的遷移路徑。
- Java參考實現於4月24日發布,跨語言工作將於2019年5月8日正式開始。這裡查看合併的時間表。
- 到2019年9月,我們計劃與現有的C#、Golang、Java、NodeJS和Python項目實現功能對等。有很多事情要做,但是如果我們並行化,我們可以做到。如果你有興趣參與這個項目,請登記並告訴我們你想如何貢獻。
- 當每種語言達到功能對等時,對應的OpenTracing和OpenCensus項目將會消失。這意味著舊的項目將被凍結,但是新項目將通過向後兼容橋繼續支援現有的測儀兩年。
https://storage.googleapis.com/open-source-software/OpenConsensus%20Roadmap.jpg
https://forms.gle/HCGGoLRzoPm6o29K6
項目概述

我們合併!高級目標是將OpenTracing和OpenCensus項目綜合成一個單一的、統一的項目。新項目的核心將是一組乾淨的、經過深思熟慮的介面,以及實現這些介面的庫的規範分發(稱為SDK)。數據和有線協議的推薦標準,以及基礎設施的共同部分,完成了該項目。
其結果將是一個完整的遙測系統,適用於監測微服務和其他類型的現代分散式系統,並將兼容大多數主要的OSS和商業後端。
主要里程碑
- 4月24日 推薦的候選提交評審。
- 5月8日 組成團隊,所有語言的工作開始。
- 5月20日 項目在巴塞羅那KubeCon正式啟動。
- 9月6日 C#、Golang、Java、NodeJS和Python項目實現功能對等。
- 11月6日 OpenTracing和OpenCensus項目正式落下帷幕。
- 11月20日 聖地亞哥KubeCon的可觀測性峰會舉辦日落派對。
趨同時間線

每種語言的遷移包括構建可生產的SDK、流行庫的測儀、文檔、CI、向後兼容性橋,以及關閉相關的OpenCensus和OpenTracing項目(「日落」)。我們已經定下一個雄心勃勃的目標,2019年9月是C#、Golang、Java、NodeJS和Python實現功能對等的目標日期。如果一種語言在那個時候還沒有準備好,我們將把日落的日期推遲到日落的時候。但我們希望這不會發生。
當你檢查下面的目標時,想想你想要如何參與其中。請填寫登記表,或者在OpenTracing和OpenCensus Gitter聊天室中打招呼。
https://forms.gle/HCGGoLRzoPm6o29K6
https://gitter.im/opentracing/public
https://gitter.im/census-instrumentation/Lobby

時間軸的資訊圖表
目標:跨語言規範初稿(5月8日完成)
重要的是項目保持內聚性,即使我們在不同的語言上並行工作。跨語言規範為項目提供了此指導。它是用散文編寫的,並且確保我們維護一個一致的系統,不管使用什麼程式語言,這個系統都感覺很熟悉。
跨語言規範的初稿要求如下:
- 常用術語的定義。
- 用於描述分散式事務、統計和度量的模型。
- 澄清在執行過程中遇到的重要問題。
這個目標阻礙所有其他工作,初稿必須在5月8日前完成。
目標:數據規範初稿(7月6日完成)
數據規範為跟蹤和度量定義了一種通用的數據格式,以便所有流程導出的數據都可以由相同的遙測基礎設施處理,而不管流程如何生成數據。這包括用於跨語言規範中描述的跟蹤模型的數據模式,還包括用於跟蹤用於捕獲的常見操作(如HTTP請求、錯誤和資料庫查詢)的元數據定義。這些語義約定就是一個例子。
https://github.com/opentracing/specification/blob/master/semantic_conventions.md
第一個草案是基於當前OpenCensus數據格式,將包含以下內容:
- 實現跨語言規範的數據模式
- 常見操作的元數據定義。
- JSON和Protobuf定義。
- 客戶端實現參考。
注意,還有一個用於在帶內傳播跟蹤的有線協議,我們希望對其進行標準化。跟蹤上下文(Trace-Context)傳播格式正在通過W3C開發,可以在這裡找到。
https://w3c.github.io/trace-context/
目標:在所有當前支援的語言中實現功能對等(9月6日完成)
為了使新項目取代現有項目,我們必須實現與現有語言生態系統的功能對等。
- 用於跟蹤、度量和上下文傳播的介面定義,基於跨語言規範。
- 一個可用於生產的SDK,它實現這些介面並導出跟蹤數據。當可用時,SDK將通過移植現有OpenCensus實現來創建。
- 用於當前由OpenTracing和OpenCensus覆蓋的流行庫的測儀。
我們重視向後兼容性,並確保從現有項目順利遷移。
- 新的SDK將包含一個OpenTracing橋,它實現了當前的OpenTracing介面。這允許遺留的OpenTracing測儀與同一過程中的新測儀一起工作,因此用戶可以增量地遷移他們的測儀程式碼。
- 當新的SDK準備就緒時,現有OpenCensus用戶的升級計劃將可用。與OpenTracing一樣,遺留的測儀將繼續與新測儀一起工作。
- 到11月,OpenTracing和OpenCensus都將日落。從此以後,將不再發生提交。將在兩年內支援與遺留測儀的向後兼容性。
為每種語言創建一流的SDK需要大量的工作,而這正是我們最需要幫助的地方。
目標:核心文檔(9月6日完成)
文檔對於任何開源項目的成功都是至關重要的。我們非常希望文檔和學習成為一流的組件,編寫文檔的人被認為是這個項目的主要提交者。教開發者如何正確地觀察他們的軟體是我們想要對世界產生影響的關鍵部分。
至少,我們需要以下幾點來開始:
- 項目定位
- 可觀測性101
- 入門
- 語言指南(每種語言一本)
歡迎所有背景和技能水平的作家!新的網站是基於Hugo,markdown編寫,非常容易作貢獻。
目標:Registry v1.0(7月6日完成)
另一個關鍵組件是倉庫,它是OpenTracing倉庫的改進版本。
https://opentracing.io/registry
- 很容易找到庫、插件、安裝程式和其他組件。
- 輕鬆添加和管理倉庫組件。
- 了解每種語言中的SDK特性。
如果你對設計、前端和UX感興趣,這是一個很好的項目。
目標:測試和發布基礎架構(9月6日完成)
我們有一個廣泛的項目承諾,建立一個品質測試和發布管道,以確保我們繼續交付我們可以依賴的安全程式碼。如果你關心測試、基準測試和發布管道,請讓我們知道。我們將清楚地標記生產準備的水平,測試基礎設施的成熟度將是一個主要的決定因素。
目標:日落OpenTracing和OpenCensus(11月6日完成)
到9月6日,如果新項目達到功能對等,現有項目將開始關閉。在每種語言達到功能對等之後的兩個月,相應的OpenTracing和OpenCensus項目將會日落。這意味著:
- 存儲庫將被凍結,不再進行提交。
- 現有測儀將有兩年的支援計劃。
- 用戶可以在繼續使用現有測儀的同時升級到新的SDK。
- 可以增量地遷移測儀。
參與
這是一個巨大的工程,我們需要全體人員齊心協力。如果你對觀察能力很感興趣,這是參與其中的最佳時機!
- 填寫報名表格,加入一個團隊,並直接參与其中。
- 請通過OpenTracing和OpenCensus Gitter通道與我們聯繫。
- 查看當前正在開發的Java參考實現。
https://forms.gle/HCGGoLRzoPm6o29K6
https://gitter.im/opentracing/public
https://gitter.im/census-instrumentation/Lobby
https://github.com/bogdandrutu/openconsensus/
