Envoy項目文章,作者:Michael Schore
就在一年前,我們發佈了Envoy Mobile的初次開源預覽。今天,我們要分享一些激動人心的消息:Envoy Mobile正式加入其母項目Envoy,成為CNCF的一部分!從一開始,我們就承諾將Envoy Mobile開發為一個開源項目。我們相信,作為移動網絡的一個模式,它有潛力開創新的領域,並且對圍繞着Envoy成長起來的充滿活力的社區的認可,使開源成為我們明確的選擇。在過去的一年裏,與社區的互動帶來了巨大的回報,因為我們已經從最早的概念驗證階段過渡到實驗階段,然後是生產解決方案,完全公開。今天是一個重要的里程碑,我們榮幸地參加了CNCF管理下的項目,就像Envoy、Kubernetes、gRPC等。
簡史
Envoy項目之所以成功,是因為它為一個由多種語言系統組成的網絡提供了一個共同的基礎。部署Envoy意味着在整個機羣中實現一致的可觀察性、可配置性和可擴展性,而不考慮單個服務的任何獨特特徵。Envoy的主動/被動健康檢查模型和最終一致的路由配置,在面對不可預測的網絡和軟件故障時,提供了穩定性和可靠性。
Envoy Mobile項目始於一個問題:為什麼我們將移動設備與後端基礎設施中的節點區別對待?即使企業在這兩個平台上運行關鍵軟件,一個被視為核心基礎設施,而另一個被視為獨立的外部客户端。歷史上默認的假設是,這兩個組成部分是根本不同的。雖然確實存在差異,但移動客户端遇到的許多挑戰類似於我們之前使用Envoy在服務器上解決的問題。
對許多組織來説,實現對移動應用程序運行狀況和性能的可見性是一項持續的鬥爭。類似地,自定義運行時/動態配置解決方案是大規模部署應用程序的標準。考慮到Android和iOS都必須同時支持,共享代碼很困難。此外,與後端基礎設施相比,移動客户端所面臨的網絡條件更不可預測,更容易出現故障。我們在後台利用Envoy作為這些問題的共同解決方案。Envoy能成為移動客户端的解決方案嗎?我們決定:“絕對能夠。”,Envoy Mobile出現了。
移動網絡庫
“Envoy已經成為應用網絡的通用可編程數據平面。我們很高興看到Envoy Mobile將Envoy的好處帶到移動生態系統中。我們現在有能力向客户端應用程序提供可編程性,比如支持真正的端到端雲原生服務的移動應用程序。”
-Anna Berenberg,谷歌雲傑出工程師
在我們開始這個旅程之前,我們花了一些時間來評估其他的可能性。有許多功能強大的移動網絡庫,它們都有強大的追隨者。但是Envoy提供的一個關鍵區別是,它為分佈式應用程序中的所有網絡提供了一個公共層。最終,我們得出結論,我們在移動客户端取得同樣優勢的唯一途徑就是使用Envoy本身。
當然,Envoy並不是設計成進程內庫的,更不用説在移動應用程序中運行了。但是它的許多設計決策使它能夠非常好地適應這個新目標--從它的單線程代碼庫到它的緩衝區管理模型。我們將在以後的文章中分享更多關於這方面的內容,但要深入瞭解我們是如何將Envoy變成一個庫而不是一個服務器,請參閲我們去年在KubeCon和EnvoyCon上的演講(Envoy Mobile in Depth: From Server to Multi-platform Library - Jose Nino & Michael Schore, Lyft)。Envoy的現代架構和設計為證明我們的想法的可行性提供了一個顯著的開端。
開源
當我們第一次發佈Envoy Mobile倉庫時,這個庫僅僅是一個工作原型。Envoy運行並可以在iOS和Android上處理請求。我們有個雄心勃勃的路線圖,但是我們並沒有閉門執行項目,並且只有當我們有一個生產就緒的解決方案時才分享它,我們慎重地決定不僅開放我們的初始項目,而且開放路線圖本身。我們相信,Envoy Mobile背後的理念有可能從根本上改變企業看待移動客户端和物聯網設備的方式,並與之互動。分享這個願景和這個項目最早的版本,部分是我們對這個信念的承諾,部分是對社區的承諾,我們希望為每個人實現這些好處。
一年過去了,Envoy Mobile被彙編到Lyft應用程序中,併發送我們的生產流量。該庫具有一流的綁定,並支持Swift、Kotlin、Objective-C和Java(Python開發中!)我們現在已經擁有了一個真正的基礎,可以構建未來的移動網絡。
下一步
“Envoy的社區增長和無數的使用案例繼續超出我最瘋狂的期望。雖然Envoy對服務器端雲原生分佈式系統的構建方式有着深遠的影響,但移動客户端和物聯網設備與服務器端設備存在相同的問題,包括可觀察性、容錯、負載平衡和配置。Envoy Mobile進入CNCF將加速Envoy作為端到端雲原生網絡平台的採用,使複雜的分佈式應用能夠更健壯地部署。我太激動了。”
- Matt Klein,Envoy的創造者
有了跨客户端和後端服務的統一基礎和公共網絡抽象,特性可以一次性創建並在任何地方使用。我們有Envoy Mobile發展的下一個篇章的宏偉計劃。非常簡短的亮點包括:
- 強類型API生成--允許使用IDL(如protocol buffer)定義API,並利用代碼生成來消除樣板文件和抽象傳輸。
- 通過API/IDL註釋,選擇基於策略支持的網絡特性--包括緩存、重試、延遲API、流、推和優先級。
- 先進的協議支持和網絡優化--支持QUIC、HTTP/3、DNS替代、和自定義協議擴展,智能連接加權和選擇。
- xDS--利用Envoy的配置發現API,通過與傳統網格相同的控制平面動態配置。
要了解更多關於我們的計劃或貢獻的機會,我們的路線圖也是開源的!
Envoy Mobile加入CNCF的時機恰到好處。這個新的,中立的家園將使我們更容易與其他組織合作,並接受來自其他組織的貢獻。它還將使我們更緊密地與Envoy的開發週期保持一致,允許我們執行共享的CI測試覆蓋率,以及兩個項目之間更緊密集成的上游特性。通過這一步,我們期待着與CNCF以及你們所有人一起重新定義我們對客户端到服務器通信的看法。
點擊閲讀網站原文。
CNCF (Cloud Native Computing Foundation)成立於2015年12月,隸屬於Linux Foundation,是非營利性組織。
CNCF(雲原生計算基金會)致力於培育和維護一個廠商中立的開源生態系統,來推廣雲原生技術。我們通過將最前沿的模式民主化,讓這些創新為大眾所用。掃描二維碼關注CNCF微信公眾號。