8个版本

0.0.12 2021年8月17日
0.0.11 2021年8月16日

#service-mesh中排名7

Download history 17/week @ 2024-06-30 11/week @ 2024-07-21 45/week @ 2024-07-28

每月下载56

MIT许可证

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