LayottoGolang 開發(fā)的應(yīng)用運(yùn)行時(shí)
Layotto(/le???t??/) 是一款使用 Golang 開發(fā)的應(yīng)用運(yùn)行時(shí),旨在幫助開發(fā)人員快速構(gòu)建云原生應(yīng)用,幫助應(yīng)用和基礎(chǔ)設(shè)施解耦。它為應(yīng)用提供了各種分布式能力,比如狀態(tài)管理,配置管理,事件發(fā)布訂閱等能力,以簡化應(yīng)用的開發(fā)。
Layotto 以開源的 MOSN 為底座,在提供分布式能力以外,提供了 Service Mesh 對于流量的管控能力。
功能:
- 服務(wù)通信
- 服務(wù)治理,例如流量的劫持和觀測,服務(wù)限流等
- 作為 istio 的數(shù)據(jù)面
- 配置管理
- 狀態(tài)管理
- 事件發(fā)布訂閱
- 健康檢查、查詢運(yùn)行時(shí)元數(shù)據(jù)
- 基于WASM的多語言編程
如下圖架構(gòu)圖所示,Layotto 以開源 MOSN 作為底座,在提供了網(wǎng)絡(luò)層管理能力的同時(shí)提供了分布式能力,業(yè)務(wù)可以通過輕量級的 SDK 直接與 Layotto 進(jìn)行交互,而無需關(guān)注后端的具體的基礎(chǔ)設(shè)施。
Layotto 提供了多種語言版本的 SDK,SDK 通過 gRPC 與 Layotto 進(jìn)行交互,應(yīng)用開發(fā)者只需要通過 Layotto 提供的配置文件配置文件 來指定自己基礎(chǔ)設(shè)施類型,而不需要進(jìn)行任何編碼的更改,大大提高了程序的可移植性。
Layotto希望可以把 Multi-Runtime 跟Service Mesh兩者的能力結(jié)合起來,無論你是使用MOSN還是Envoy或者其他產(chǎn)品作為Service Mesh的數(shù)據(jù)面,都可以在不增加新的sidecar的前提下,使用Layotto為這些數(shù)據(jù)面追加Runtime的能力。
例如,通過為MOSN添加Runtime能力,一個(gè)Layotto進(jìn)程可以既作為istio的數(shù)據(jù)面 又提供各種Runtime API(例如Configuration API,Pub/Sub API等)。
此外,隨著探索實(shí)踐,我們發(fā)現(xiàn)sidecar能做的事情遠(yuǎn)不止于此。 通過引入WebAssembly ,我們正在嘗試將Layotto做成 FaaS (Function as a service) 和 reloadable sdk 的運(yùn)行時(shí)容器。
如果你對誕生背景感興趣,可以看下這篇演講。
