写点什么

微服务查询语言 restQL 已在 GitHub 上发布

2018 年 1 月 15 日

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

微服务查询语言 restQL 已经成为了一个开源项目,使用 MIT 开源许可。restQL 语言旨在简化客户端访问 RESTful 微服务的常用场景,包括并行调用和链式调用。由拉丁美洲最大的电子商务公司 B2W 开发的 restQL,是为了避免 Falcor GraphQL 这两个更为人熟知的数据查询和管理框架的一些限制而诞生的。

Falcor 仅适用于使用 JavaScript 的客户端,而 restQL 对于任何支持 HTTP REST 调用的客户端都适用。这意味着 restQL 也能适用于使用 Swift 和 Java 编写的移动应用。尽管 GraphQL 现在已经是一种成熟的数据查询语言,但是它不支持一些对 RESTful 服务来说简单或约定俗成的特性,比如 HTTP 响应状态码或者本地浏览器缓存。

与其他查询语言类似,restQL 语句描述了要获取的资源,并用参数进行过滤。比如:

复制代码
from hero
with
name = "Restman"

默认情况下,查询是并行执行的,无须任何特殊语法。对于更复杂也更常见的场景,比如链式调用或者多路复用调用(如下例所示)也非常清晰直观。

复制代码
from hero
with
name = "Restman"
from sidekick
with
hero = hero.id

对 restQL 查询的解析和响应由 restQL 服务端处理。restQL 服务端是用 Clojure 实现的,它充当着提交 restQL 查询的客户端和后端 APIs 之间的桥梁。所有的配置信息都是存在服务端的,以匹配资源名称和相应的调用端点(endpoint)。由于 restQL 服务端开放了标准的 REST 调用端点,所以不需要专门处理的客户端。

在一篇声明restQL 的博客文章中,B2W Digital 的IT 经理,同时也是restQL 的作者之一的Ricardo Mayerhofer 提到,这个项目是在公司向微服务迁移的过程中诞生的。开发团队很快从向微服务的迁移中受益,因为应用程序变得更小,相应的维护也更简单。但是,前端代码变得更加复杂了,因为需要向多个微服务发送请求,而不是像以前那样只用向一个整体的服务发送一个请求。Ricardo 总结了他们的经验:“基于微服务的架构并不是什么银弹。尽管能给服务端团队带来直接的好处,但是它的特性给使用者带来了复杂性和性能方面的挑战。”在参考了Falcor 和GraphQL 后,restQL 诞生了,并被证明有助于简化客户端对大量后端服务的访问。

你可以在项目主页 http://restql.b2w.io/ 上找到更多关于 restQL 的信息。源代码则在 GitHub 上。

查看英文原文: restQL, a Microservices Query Language, Released on GitHub

2018 年 1 月 15 日 18:004954

评论 1 条评论

发布
用户头像
感觉没啥用,就是个语法糖
2019 年 12 月 19 日 10:49
回复
没有更多了
发现更多内容

Newbe.Claptrap 框架如何实现多级生命周期控制?

newbe36524

架构 微服务 微服务架构 .net core ASP.NET Core

第九周学习总结

赵龙

这一周,我肝了公司的聚合代扣支付网关!

诸葛小猿

微信 支付宝 周期扣款 委托代扣 协议扣款

创业公司技术体系建设-APM

星际行者

APM

谈一谈webpack打包

林浩

Java webpack 前端进阶训练营

<<前端进阶篇>> PDF 出炉了 — 「阿宝哥」,精心准备的 6 万多字 170 页的前端进阶资料

阿宝哥

前端 前端进阶 前端教程

架构师训练营第八章-作业1

A Matt

技术管理者带团队的几个实用技巧

Phoenix

团队管理 企业文化 团队 价值观

计算机网络基础(十一)---网络层-OSPF协议

书旅

计算机网络 网络 协议栈 OSPF

第九周总结

晨光

编程经典案例之函数

顿晓

函数式编程

程序的机器级表示-算术与逻辑运算

引花眠

计算机基础

ARTS打卡 第10周

引花眠

ARTS 打卡计划

N皇后问题的回溯法实现(C++)

老王同学

Android |《看完不忘系列》之okhttp

哈利迪

android

手写一个重入锁

诸葛小猿

synchronized CAS 重入锁 compareAndSwap ReentrantLock

老哥,您看我这篇Java集合,还有机会评优吗?

cxuan

Java 后端

第九周作业

赵龙

JVM系列之:JIT中的Virtual Call

程序那些事

Java JVM JIT

架构师训练营第九周作业

qihuajun

第九周作业

晨光

智能膜切机,解决手机贴膜行业难题

Geek_116789

英特尔®AI计算盒参考设计发布 加速智能边缘崛起

最新动态

飞天茅台超卖事故:Redis分布式锁请慎用!

程序员生活志

redis 分布式

初识分布式:MIT 6.284系列(一)

Kerwin

分布式 MIT 28天写作

什么?不写代码也能做功能开发! -RUOYI 教程二

HPioneer

Java 无代码开发 若依

JVM垃圾回收

羽球

JVM 垃圾回收原理

飞雪

架构师训练营第九周学习总结

qihuajun

用Queue实现Stack,Moya网络框架,Sublime列操作,网络通信协议 非阻塞网络I/O NIO 数据库架构原理 John 易筋 ARTS 打卡 Week 11

John(易筋)

ARTS 打卡计划 数据库架构原理 网络通信协议 Moya 非阻塞网络I/O

系统设计系列之如何设计一个短链服务

看山

架构 面试 分布式 架构设计 短链服务

微服务架构下如何保证事务的一致性

微服务架构下如何保证事务的一致性

微服务查询语言restQL已在GitHub上发布-InfoQ