Layotto(/leɪˈɒtəʊ/) 是一款使用 Golang 开发的应用运行时,旨在帮助开发人员快速构建云原生应用,帮助应用和基础设施解耦。它为应用提供了各种分布式能力,比如状态管理,配置管理,事件发布订阅等能力,以简化应用的开发。
Layotto 以开源的 MOSN 为底座,在提供分布式能力以外,提供了 Service Mesh 对于流量的管控能力。
功能:
- 服务通信
- 服务治理,例如流量的劫持和观测,服务限流等
- 作为 istio 的数据面
- 配置管理
- 状态管理
- 事件发布订阅
- 健康检查、查询运行时元数据
- 基于WASM的多语言编程
如下图架构图所示,Layotto 以开源 MOSN 作为底座,在提供了网络层管理能力的同时提供了分布式能力,业务可以通过轻量级的 SDK 直接与 Layotto 进行交互,而无需关注后端的具体的基础设施。
Layotto 提供了多种语言版本的 SDK,SDK 通过 gRPC 与 Layotto 进行交互,应用开发者只需要通过 Layotto 提供的配置文件配置文件 来指定自己基础设施类型,而不需要进行任何编码的更改,大大提高了程序的可移植性。
Layotto希望可以把 Multi-Runtime 跟Service Mesh两者的能力结合起来,无论你是使用MOSN还是Envoy或者其他产品作为Service Mesh的数据面,都可以在不增加新的sidecar的前提下,使用Layotto为这些数据面追加Runtime的能力。
例如,通过为MOSN添加Runtime能力,一个Layotto进程可以既作为istio的数据面 又提供各种Runtime API(例如Configuration API,Pub/Sub API等)。
此外,随着探索实践,我们发现sidecar能做的事情远不止于此。 通过引入WebAssembly ,我们正在尝试将Layotto做成 FaaS (Function as a service) 和 reloadable sdk 的运行时容器。
如果你对诞生背景感兴趣,可以看下这篇演讲。