API可组合性详解:Hasura超图架构提升开发效率与自助式数据集成
在现代软件工程中,开发和部署应用程序的敏捷性和效率至关重要。随着技术的不断发展,API可组合性逐渐成为解决API消费者常见挑战的重要工具,同时也显著优化了开发流程。
什么是API可组合性?
API可组合性指的是通过组合和重用API或其端点来构建更精细的服务或应用程序的能力。这种灵活性在微服务架构和无服务器计算中尤为重要,因为这些架构通常专注于实现特定功能或一组密切相关的任务。通过增强API可组合性,可以提升自助组合能力,减少手动API聚合的需求。
对于API消费者而言,整合来自多个服务的数据通常是一项复杂的任务。常见的痛点包括依赖数据团队进行更新或变更,以及与后端到前端(BFF)模式相关的重复性工作。这些问题往往导致中间层成为瓶颈,严重影响上市时间、开发效率和创新能力。在这种情况下,API的可组合性不仅是便利的选择,更是必需的能力。
API可组合性的核心价值
在当今数据驱动的生态系统中,开发人员需要从越来越多的数据源中获取特定的数据集。为了满足这种需求,API设计需要向更高的可组合性方向发展。如果没有这种转变,行业可能会陷入为每种数据组合定制API端点的困境,随着应用程序规模和复杂性的增加,这种做法将变得不可持续。
超图与API可组合性
超图(Supergraph)的核心价值在于其内在的可组合性。超图的可组合性决定了其自动化能力,能够减少子图所有者在支持复杂访问场景时的工作量。超图的投资回报率(ROI)取决于API集成和编排的开箱即用程度。可组合性越强,子图所有者需要编写的代码越少,数据消费者需要的API调用也越少。
以下是一些提升API可组合性的关键属性:
- 连接数据:类似于数据库中的“外键”连接,用于实现复杂的关联查询。
- 嵌套过滤器:根据子实体的属性对父实体进行过滤,提升数据检索的精度。
- 嵌套排序:根据子实体的属性对父实体排序,优化数据的组织性。
- 嵌套分页:支持父实体的分页列表及其子实体的分页和排序,简化大数据集的展示。
复杂查询的挑战与解决方案
在API集成过程中,开发CRUD操作、性能优化、授权机制集成以及协调不同利益相关者需求是耗时的基础任务。此外,设计高效的查询计划也极具挑战性,需要优化跨不同数据源的数据获取,同时管理查询执行顺序并重建一致的响应。
查询规划中的复杂性
复杂查询的规划涉及以下方面:
- 确定最佳连接顺序。
- 选择高效的连接算法。
- 利用索引提升性能。
为了缓解这些问题,可以采用批处理、缓存和并行化等技术,从多个子图中同时获取数据,减少N+1调用问题。此外,API端点的编排需要复杂的数据转换和映射策略,例如异步数据获取和渐进加载,以优化延迟并提升用户体验。
Hasura的API可组合性方法
Hasura通过超图架构解决了API可组合性的复杂性。其设计理念基于精心设计的领域模型,并通过明确的数据访问规则进行扩展。Hasura的超图引擎作为一个复杂的编排层,采用查询规划和联邦架构,在不同连接器之间高效分配查询。
超图查询规划器的核心组件
- ForEach:为父节点返回的数据获取额外数据。
- HashJoin:连接来自不同步骤的数据。
- 序列执行:按顺序执行步骤。
- 并行执行:并行获取不同数据源的数据。
这种自动化使开发者能够自由组合和访问数据,而无需手动集成API,提供一致的自助式API组合体验。
高效的数据获取与编排
Hasura通过其多功能连接器架构优化了数据获取过程。这些连接器支持从传统数据库到特定领域微服务的多种数据源。以PostgreSQL为例,Hasura利用其高级功能(如json_agg()和横向连接)高效操作和获取数据。
以下是一个自动生成的SQL查询示例:
json_agg()函数:将多个JSON对象聚合为一个JSON数组。- 横向连接:允许子查询引用前面项目的列,从而实现复杂的依赖操作。
这种架构设计通过双层查询编译显著提升了数据获取和编排的效率。
自助式API组合的授权与安全
在实现自助式API组合时,授权和访问控制是关键挑战。Hasura通过自动应用基于角色的访问控制,确保字段在用户权限范围内动态调整。这种机制不仅简化了数据集成,还保证了数据的安全性和合规性。
细粒度的访问控制
Hasura允许对字段级别的访问进行精确控制,使开发者能够根据用户权限隐藏或公开特定字段。这种灵活性确保了数据的无缝集成,同时满足了安全需求。
向量搜索与全局ID
Hasura支持基于向量的相似性搜索和全局ID功能:
- 向量搜索:结合AI技术,支持高效的KNN搜索和复杂的条件过滤。
- 全局ID:提供整个超图中对象的唯一标识符,简化了对象的识别和检索。
这些功能进一步增强了Hasura在API可组合性方面的能力。
结语
API可组合性是未来软件开发的关键趋势。通过Hasura的超图架构和创新技术,开发者能够更高效地构建动态、灵活且以用户为中心的应用程序。Hasura的解决方案不仅提升了开发效率,还为API消费者提供了无缝的自助式组合体验。
随着Hasura DDN的不断发展,未来将推出更多功能,包括跨域关系、事件驱动用例、嵌套聚合等,进一步推动API可组合性的创新。
原文链接: https://hasura.io/blog/the-future-of-api-is-composability
最新文章
- python并行组合生成原理及实现
- 终极对决:KimiGPT与GLM-4文本生成模型API深度比较
- 如何获取OpenWeather API Key 密钥(分步指南)
- 从Talkie到DeepSeek:揭秘AI应用出海的盈利路径
- 确保OAuth 2.0访问令牌安全,使用持有者凭证证明
- 利用JAVA语言调用豆包大模型接口实战指南
- 如何调用 GraphQL Admin API 查询非Rest API 可以查询到的数据
- API – API是什么?
- 超越网关API(第二部分):如何扩展Envoy … – Tetrate
- 使用 Azure 应用程序网关和 Azure 保护外部 API
- 如何使用 PostgREST 和 Apache APISIX 构建高效、安全的 RESTful API 解决方案
- 什么是SQL注入?理解、风险与防范技巧