来源:OSCHINA 时间:2023-03-04 09:19:25
【资料图】
谷歌宣布在 Apache 2.0 许可下开源 Service Weaver,一个用于构建和部署分布式应用程序的框架;允许用户将应用程序编写为模块化单体,并将其部署为一组微服务。目前,该项目尚处于早期开发阶段。
Service Weaver 由两个核心部分组成:
一组编程库,可让用户将应用程序编写为单个模块化二进制文件,仅使用本机数据结构和方法调用; 一组部署器,协助配置应用程序的运行时拓扑结构,并将其部署为一组微服务,本地或云上都可。通过将应用程序编写过程与运行时考虑因素(例如应用程序如何拆分为微服务、使用何种数据序列化格式以及如何发现服务)分离,Service Weaver 旨在提高分布式应用程序开发速度和性能。
谷歌方面指出,在编写基于微服务的应用程序时,维护多个不同的微服务二进制文件的开销大幅降低了开发速度;Service Weaver 的出现就是为了解决这一问题,同时促使跨二进制文件的修改变得更加容易。“Service Weaver 是一个两全其美的框架:单体应用的开发速度,以及微服务的可扩展性、安全性和容错性。”
Service Weaver 的核心思想是它的模块化单体模型。借助 Service Weaver,用户可以编写仅包含 language-native 数据结构和方法调用的单个二进制文件,然后将二进制文件组织为一组称为 components 的编程语言原生模块。示例,一个使用 Service Weaver 用 Go 语言编写的简单应用程序,由一个main()函数和一个Addercomponent 组成:
type Adder interface { Add(context.Context, int, int) (int, error)} type adder struct{ weaver.Implements[Adder]}func (adder) Add(_ context.Context, x, y int) (int, error) { return x + y, nil}func main() { ctx := context.Background() root := weaver.Init(ctx) adder, err := weaver.Get[Adder](root) sum, err := adder.Add(ctx, 1, 2)}
目前,Service Weaver 的 v0.1 版本为用户带来了用于编写应用程序的核心 Go 库、用于在本地或 GKE 上运行应用程序的多个部署程序,以及一组使用户能够为任何其他平台编写自己的部署程序的 API。值得注意的是,在 v1.0 版本发布之前,开发团队可能还会引入一些 breaking changes。
更多详情可查看官方博客。
TigerVNC 1.13.0 发布,VNC 客户端和服务器|焦点短讯
红帽工程师介绍 Fedora 基于 Web UI 的安装程序
Manticore Search 6 正式发布,C++ 高性能搜索引擎 每日热讯