Google、Lyft及IBM合作開發的微服務管理器Istio,最近推出了1.5版本,而Google說明這個版本其中最大的特色,便是Istio的網路代理Envoy開始支援WebAssembly,而這讓Envoy和Istio能夠獲得WebAssembly擴充套件的加持,藉以將Istio可擴展性從控制層(Control Plane)移到側車代理(Sidecar Proxy)。目前這項功能還在Alpha測試階段。

Lyfty在2016年開源了Envoy服務代理專案,現在逐漸成為雲端原生應用程式部署的固定工具,包括在邊緣以及側車應用都受到歡迎。Envoy原本就有其擴充機制,可以使用預編譯的C++模組或是Lua腳本增加擴充功能,但Google提到,這兩者都有其缺點,由於Istio的設計目標之一,就是要簡化政策、遙測和日誌系統的擴充性,雖然使用控制層元件和程序外配置器可以達到這目的,但是卻會增加多餘的網路跳躍點以及延遲。

WebAssembly是一種二元指令格式,Istio現在透過Envoy把WebAssembly帶進伺服器端中。WebAssembly現在已經是W3C推薦的網頁應用標準,使用者可從30多種語言編譯成WebAssembly程式碼,並在沙盒環境中執行。透過WebAssembly在Envoy代理中擴充功能,則不需要重新編譯程式碼,部署也更加簡單,Istio能夠將擴充套件發布給代理,在不需要重新啟動的情況下,載入擴充套件。

Envoy專案創造者Matt Klein提到,在Envoy中支援WebAssembly,將會解開更多服務網狀網路和API閘道的使用案例。而為了要強化WebAssembly擴充套件的使用體驗,他們與Solo.io合作,Solo.io創建了WebAssembly Hub服務,可用來建置、共享、探索和部署WebAssembly擴充套件,讓使用者夠簡單地將WebAssembly擴充套件部署到Envoy上。

WebAssembly Hub高度自動化了開發和部署WebAssembly擴充套件的步驟,使用WebAssembly Hub工具,使用者可以輕鬆地將任何支援的語言程式碼,編譯成為WebAssembly擴充套件,接著把這些擴充套件上傳至Hub註冊服務中,用戶只要使用單個指令,就可以將擴充套件部署至Istio中。Google提到,WebAssembly擴充套件與容器一樣易於管理,能簡單地安裝以及執行。

WebAssembly Hub在背後處理了許多細節問題,像是ABI版本驗證和權限控制等問題,而且也會自動擴展部署,減少跨Istio服務代理配置的麻煩,避免配置錯誤或是版本不符的意外錯誤。

目前Envoy支援WebAssembly的功能,仍在Alpha測試中,接下來開發團隊會最終確定ABI,並將其轉變為標準,以在標準組織中取得更廣泛的回饋。另外,Google提到,他們會繼續向Envoy上游專案提供支援,並且為相關工具以及WebAssembly Hub尋找適合的社群。


Advertisement

更多 iThome相關內容