基于graphql实现复杂业务打包服务

什么是Packer

我们的业务存在许多实体,比如item/music/challenge/user等。每个实体之间存在组合关系,比如item中存在使用的music,user拥有post item list。所以实体之间的关系是可以构成一张图。对于调用方来说,如果用标准的Restful方式交互,即先根据id拿到一个实体,再去拿它对应的实体信息,会存在两个问题:1. 整体延时高,特别是涉及到前后端交互的场景;2.调用方需要感知两个实体之间的调用关系,前后端耦合。所以我们需要一个统一的服务将一个实体及其关联的实体的信息打包后返回给客户端

一个好的Packer需要哪些特性

  • 按需获取:对于一个实体,它内部存在许多字段,然而并非每个请求都需要所有字段,并且有些字段可能需要较高的计算量,所以字段按需获取将降低计算代价和降低带宽
  • DAG:实体之间存在依赖关系,比如需要拿到user中的post_item_list_ids才能获取对应的item信息。所以我们需要构建实体之间调用链的DAG
  • 并发访问:对于没有依赖关系的实体,我们可以并发获取信息,从而降低延时

实现

基于graphql实现https://graphql.cn/

概念解释

Schema

schema可以类比于文档数据库的表,由服务端定义,它定义了该服务提供的所有字段。它包含字段名、类型、参数等
example1:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值