restQL V3 版本发布:速度比之前提升了一倍

阅读数:5758 2019 年 7 月 19 日 08:00

restQL V3 版本发布:速度比之前提升了一倍

近日,微服务查询语言 restQL 发布了其最新版本 V3。该版本提供了很多非常有名的新特性,诸如内容聚合、额外的 HTTP 方法支持、自我修复功能以及一个 Node.js 应用程序版本。全面的性能改善也使该版本的速度比之前提升了一倍。从 V2 到 V3 也没有破坏性改动,因此用户可以安全地升级。 restQL 作为开源项目其代码遵循了 MIT 许可协议。

RestQL 旨在简化那些需要查询多个微服务的前端代码。虽然微服务架构可以使后端系统更容易支持和维护,但这不可避免地会在前端应用程序层增加额外的复杂度。RestQL 减少了对多个微服务调用编排的复杂性。因为它使用了标准的 HTTP 调用,从而可以有效利用本地浏览器的缓存功能。

RestQL 的一个显著特征就是能自动并行调用分离的资源。但是,每一个响应也将被分开,这就需要客户端合并相关的对象,比如拥有多个订单的客户端。在最新版本中,新的 in 操作符允许开发人员在查询中提前指定聚合结构,从而得到一个组合结果。

最新版本也提高了 restQL 服务器的弹性,该服务器位于客户端和微服务 API 之间。当系统检测到超载时,它就会引入一种反压力形式。配置文件定义了可接受处理时间开销的阈值。如果达到该阈值,系统将开始为某些请求返回 HTTP 507 响应(存储空间不足),同时它又允许部分请求继续成功执行。

这种返回失败响应的模式要求应用程序具有某种形式的重试机制。RestQL 的发明者之一 Ricardo Mayerhofer 提到过,这种机制一般通过服务网格实现,例如 Istio 。“我们建议同时使用 restQL 和服务网格。得益于 restQL 的 HTTP 和 REST 特性,它可以很好地处理服务网格(用于传入查询和传出调用)。因为自动伸缩算法已经很常见了,所以在新的节点加入后 restQL 恢复正常只是时间问题。"

RestQL 的早期版本只支持通过 from 关键字来查询数据,该关键字最终被转换为 HTTP 的 GET 请求。V3 版本则分别通过关键字 to、into 和 delete 实现了 HTTP 的 POST、PUT 和 DELETE,这样 restQL 就实现了 HTTP 的完整 CRUD 操作。

RestQL 的发明者意识到,支持和维护一个额外的服务器可能会成为人们使用 restQL 的阻碍,因此他们为 node 应用程序创建了一个 npm 包, @b2wdigital/restQL 。其 GitHub 页面中包含了代码实现示例

Mayerhofer 在最近的一篇博文中描述了 restQL V3 的更多特性。InfoQ 之前也介绍了该语言的起源和初始版本的发布

原文链接

restQL V3 Released

收藏

评论

微博

用户头像
发表评论

注册/登录 InfoQ 发表评论