API可组合性详解:Hasura超图架构提升开发效率与自助式数据集成
文章目录
一. API可组合性概述
在现代软件工程中,应用程序的敏捷开发和高效部署至关重要。随着技术的发展,API可组合性成为解决API消费者常见问题的重要工具,同时显著优化了开发流程。
API可组合性指通过组合和重用API或其端点构建更精细服务或应用程序的能力。这种灵活性在微服务和无服务器架构中尤为重要,因为它们通常关注特定功能或一组相关任务。增强API可组合性可以提升自助组合能力,减少手动API聚合的需求。
对于API消费者而言,整合多个服务的数据常常复杂且耗时,依赖数据团队更新或处理BFF(Backend-for-Frontend)模式重复工作,可能成为开发瓶颈,影响上市速度、开发效率与创新能力。因此,API可组合性不仅方便,更是必需能力。
二. API可组合性的核心价值
在数据驱动生态中,开发者需要从越来越多的数据源获取特定数据集。为了满足需求,API设计必须向高可组合性发展,否则行业将陷入为每种数据组合定制API端点的困境,随着应用规模增加,这种做法不可持续。
1. 超图与API可组合性
超图(Supergraph)核心价值在于其可组合性。超图的可组合性决定自动化能力,减少子图所有者在复杂访问场景中的工作量。可组合性越强,子图开发负担越轻,API消费者调用次数也越少。
提升API可组合性的关键属性包括:
- 连接数据:类似数据库“外键”连接,实现复杂关联查询。
- 嵌套过滤器:根据子实体属性过滤父实体,提高数据检索精度。
- 嵌套排序:根据子实体属性对父实体排序,优化数据组织。
- 嵌套分页:支持父实体及其子实体的分页与排序,简化大数据集展示。
三. 复杂查询的挑战与解决方案
在API集成中,开发CRUD操作、优化性能、整合授权机制及协调利益相关者需求是耗时任务。设计高效查询计划同样具有挑战,需要优化跨数据源的数据获取,同时管理查询顺序并重建一致响应。
1. 查询规划复杂性
复杂查询规划涉及:
- 确定最佳连接顺序
- 选择高效连接算法
- 利用索引提升性能
解决方案包括批处理、缓存、并行化等技术,从多个子图同时获取数据,减少N+1调用问题。同时,API端点编排需要复杂的数据转换和映射策略,如异步数据获取和渐进加载,以优化延迟并提升用户体验。
四. Hasura的API可组合性方法
Hasura通过超图架构解决API可组合性复杂性。其设计基于领域模型和明确的数据访问规则,通过超图引擎高效分配查询。
1. 超图查询规划器组件
- ForEach:为父节点返回的数据获取额外数据
- HashJoin:连接来自不同步骤的数据
- 序列执行:按顺序执行步骤
- 并行执行:并行获取不同数据源数据
这种自动化让开发者自由组合和访问数据,无需手动集成API,实现一致的自助式API组合体验。
五. 高效的数据获取与编排
Hasura多功能连接器架构优化数据获取,可连接传统数据库和特定领域微服务。以PostgreSQL为例:
json_agg()函数:聚合多个JSON对象为一个JSON数组- 横向连接:子查询可引用前面列,实现复杂依赖操作
双层查询编译显著提升数据获取和编排效率。
六. 自助式API组合的授权与安全
在自助式API组合中,授权和访问控制至关重要。Hasura自动应用基于角色的访问控制,实现字段级别动态调整,简化数据集成并保证安全合规。
1. 细粒度访问控制
Hasura支持字段级权限控制,根据用户权限动态隐藏或公开字段,确保安全同时满足无缝集成需求。
七. 向量搜索与全局ID
Hasura支持:
- 向量搜索:结合AI技术,支持KNN搜索和复杂条件过滤
- 全局ID:提供超图对象唯一标识,简化对象识别与检索
这些功能增强了API可组合性能力。
八. 结语
API可组合性是未来软件开发关键趋势。通过Hasura超图架构和创新技术,开发者可高效构建动态、灵活、以用户为中心的应用程序。Hasura提升开发效率,同时为API消费者提供无缝自助组合体验。
随着Hasura DDN的发展,未来将支持跨域关系、事件驱动用例和嵌套聚合等功能,进一步推动API可组合性创新。
原文链接: https://hasura.io/blog/the-future-of-api-is-composability
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- Duolingo API 使用指南:语言学习与智能应用的融合实践
- 超级英雄尽在掌握:超级英雄数据API的超能力
- 了解API端点:初学者指南
- API版本控制:URL、标头、媒体类型版本控制
- Python 查询专利信息:轻松获取最新技术专利数据
- IOT语义互操作性之API接口
- 地图API服务商百度的竞争对手和替代品
- 强化 API 访问控制:基于属性的授权(ABAC)安全实践指南
- SIGN×Bithumb 永续行情 API:边缘缓存 3 天优化策略
- 百度地图批量算路api服务介绍及应用场景
- Express + TypeScript + OpenFGA 权限控制实践指南
- 细粒度授权修复关键API安全风险 – Auth0