Rust GraphQL 服务器类库性能简单测试

2022-06-30 16:25:16 浏览数 (1)

GraphQL 是 Facebook 开发的一种数据查询语言,旨在为移动和 Web 应用程序前端提供服务。最近几年,GraphQL 应用趋势增长明显,如 GitHub 几年前已经仅对开发者提供 GraphQL API。相比较 Restful API,GraphQL 优势明显:

  1. GraphQL API 有强类型 schema;
  2. 按需获取;
  3. GraphQL支持快速产品开发;
  4. 自由组合的 GraphQL API;
  5. 丰富的开源生态和非常活跃的社区

Rust 程序设计语言中,对于 GraphQL 的支持非常活跃,并且均支持异步 async/await。目前,Rust 生态中,存在两个用Rust语言实现的GraphQL服务端库:async-graphql 和 juniper。

async-graphql 较为新生,基于较新的 async-std 异步库开发;而 juniper 较为成熟,基于更为成熟的 tokio 异步库开发。两者均完全兼容GraphQL规范以及绝大部分的扩展功能,类型安全并且高性能。

在 async-graphql 团队的 benchmark 仓库中,提供了两者性能简单比较的示例。经测试,两者性能差别较为明显。

测试数据如下(请注意,测试数据仅供参考,并不能全面反映实际生产环境的压力基准)——

代码语言:javascript复制
# 第 1 次
juniper: 46216 ms
async-graphql: 27354 ms

# 第 2 次
juniper: 45990 ms
async-graphql: 26272 ms

# 第 3 次
juniper: 47518 ms
async-graphql: 28352 ms

# 第 4 次
juniper: 116272 ms
async-graphql: 72569 ms

# 第 5 次
juniper: 114950 ms
async-graphql: 67003 ms

# 第 6 次
juniper: 106416 ms
async-graphql: 61086 ms

如需要进一步了解学习,请访问各自教程。

juniper—— https://juniper.budshome.com

async-std—— https://async-graphql.budshome.com

0 人点赞