8个版本
0.0.12 | 2021年8月17日 |
---|---|
0.0.11 | 2021年8月16日 |
在#service-mesh中排名7
每月下载56次
63KB
1.5K SLoC
Asbru - 面向数据的服务网格
/!\ WIP:Asbru将无法在版本0.1.0之前使用 /!
/!\ 目前的目标是现在有一个最小可行产品(MVP),所以代码有时可能很丑,这是故意的,为了首先创建一个原型。 /!
Asbru
是一个async_graphql
面向数据的服务网格生成器:它将从具有解析器、dataloaders、数据转换的模式生成一个async_graphql
项目。它将从您的模式创建一个面向数据的服务网格,这样您只需用描述的模式描述您的微服务即可拥有一个像Airbnb那样的面向数据的服务网格。
Asbru
将能够向Apollo Studio发送度量,使用dataloaders模式,将缓存数据存储到外部数据存储,以无服务器方式提供服务,甚至更多。
Asbru
是一个基于Viaduct的开源项目,Viaduct是Airbnb的一个项目,在这里介绍。
在Rust版本rustc 1.53.0 (53cb7b09b 2021-06-17)
上进行测试
渲染的GraphQL
渲染的代码根据受领域驱动设计启发的三层架构分为三个文件夹
| main.rs
| schema.rs
| application/
| entity/entity.rs
| entity/query.rs
| entity/mutation.rs
| domain/
| entity/entity.rs
| infrastructure/
| http.rs
| db.rs
| ...
infrastructure
将包含构建整个应用程序的所有代码和定义,每个文件都应该描述一个高级API,该API抽象了实现,在实践中,它可能耦合到实现中。例如,而不是直接使用reqwest
进行HTTP调用,我们创建一个更高层次的API,该API描述了如何进行HTTP调用,并提供一个使用reqwest
的实现。
domain
将描述我们的领域数据,这些调用是为了调用一个实体,相关的dataloaders。
application
将描述具有GraphQL实现的实体,以描述查询、突变、订阅。
示例
此配置中提供了一个交互式示例。
可用的模式在此
路线图 v0.1.0
- ✅ 管理配置文件。
- ✅ Docker 构建
- ❌ 生成
async_graphql
布局- ✅ 对象生成布局
- ✅ Modfiles
- ✅ Cargo
- ✅ 在 GraphQL 标量上使用 Rust 类型
- ✅ 枚举
- ✅ 简单查询
- ❌ 接口
- ❌ 联合
- ❌ 变更
- ❌ 连接
- ❌ 架构 & 使用指令连接到服务(在 Airbnb 中类似于
@serviceBackedNode
)。- ✅ serviceBackedQuery
- ❌ serviceBackedNode
- ❌ serviceBackedConnection
路线图 v1.0.0
- 基础设施
- ❌ Dataloaders
- ❌ 请求内缓存
- ❌ 跟踪
- ❌ 扩展(Apollo Studio)
- GraphQL
- ❌ 订阅
- 指令
- ❌ derivedField
- 传输
- ❌ GRPC
箱特征
目前没有功能,但很快会有。
参考
依赖项
~11MB
~215K SLoC