无知的 tonyseek

Yet Another Seeker

GraphQL 和服务化随想碎片

我大概 2015 年时候对 GraphQL 有过一些想法,当时还在从事用户产品研发,想法主要还是围绕业务公网 API 的。现在我的工作有很长一段时间是围绕服务化相关问题,视角也就有所改变了。加之重温了华翼老师当年的 slide,产生了一些随想。很碎,但是记录下来。

优点

  • 将数据获取需求一步送到服务端,减少 IO 往返次数
  • 涉及数据过滤、剪裁时,使用简单(和 SQL 类似),下游可以较少考虑 RPC 开销优化之类的问题
  • 灵活,下游无须为了新需求而请求上游排期开发、部署特定接口,自己就可以搞掂(同时也是缺点)

缺点

  • 接口语义模糊,太过于“通用”,抽象泄漏
  • 难以设计服务端缓存(无法预知查询语句)
  • 难以治理(完全由用户定制查询类型,服务端难以做监控、告警、QoS 和保护熔断等 ...

GraphQL vs RESTful API 的一些想法

嗯其实又是一篇早就写了的碎碎念, 在我的 simplenote 里躺了有一年了。也发出来充数吧,好显得我并没有把这个博客弃坑…

GraphQL 出来的时候似乎有老司机说它会“重新定义后端”,当然我们心里知道这实际上是重新定义了重新定义。综合官方文章来看,它要解决的问题都很明确 —— 我认为在 HTTP 1.1 时代它是很有工业价值的。然而它并非唯一的解决方案,RESTful API + HTTP/2 就是一种不错的备选。