近日,微服务查询语言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 之前也介绍了该语言的起源和初始版本的发布。
原文链接:
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论