各位平台工程师们,大家好!🚀 使用Backstage时,您是否曾好奇catalog-info.yaml文件是如何神奇地出现在屏幕上的?
Backstage目录不仅仅是查询数据库,它更像是一个巨大的“数据管道”。今天,我们将深入探讨这个管道的第一个阶段:Ingestion(数据摄取)!

1. 理解目录后端整体流程 🌊
在深入细节之前,我们先来描绘一下整体蓝图。目录数据主要经历三个阶段:
- Ingestion (数据摄取): 将外部数据(GitHub、YAML等)引入系统内部的阶段 (今天的主角!)
- Processing (处理): 验证已引入的数据并分析其关联关系的阶段
- Stitching (拼接): 汇集分散的数据片段,完成最终“实体(Entity)”对象的阶段
2. 第一道关卡:Ingestion (数据摄取) 📥
这是系统外部的“Raw Data(原始数据)”首次踏入目录世界的阶段。此阶段的目标是“从某个地方读取数据,并将其放入目录数据库的临时存储区(Shadow Table)”。
执行此任务主要有两种方式:
① Entity Providers (实体提供者) 🤖
这是最新Backstage架构中推荐的方式。它用于定期扫描外部系统(例如:AWS、GitHub组织、LDAP),一次性批量推送大量数据。
- 优点: 高效获取大量数据,并针对外部系统变更的同步进行了优化。
② Processors (处理器 – 读取阶段) 📖
这是一种传统方式,通过特定的URL(例如:GitHub上的yaml文件路径)来“读取”数据。
- 操作: 使用UrlReader接口,以文本形式读取指定路径的文件内容。
3. 为什么这个阶段很重要? ✨
Processing或Stitching阶段是“烹饪”已引入数据的过程。但Ingestion阶段则如同“采购食材”的过程。
- 数据源的多样性: 不仅是GitHub,数据库、API、Excel文件等任何数据源,只要实现“摄取”阶段,都可以注册到Backstage中。
- 性能的起点: 数据在此阶段被抓取效率的高低,决定了整个目录的更新速度。⚡
4. 原始数据摄取后会发生什么? 🔄
数据进入系统内部后,仍处于未“拼接”的状态。
- Validation: 检查导入的YAML是否符合规范。
- Relation Parsing: 看到“owner: team-a”这样的语句后,开始寻找该服务与团队之间的关联。
- Final Stitching: 所有检查完成后,我们最终在屏幕上看到的精美实体卡片就完成了!
5. 总结:核心是“Entity Provider”和“Reader” 📝
在Backstage目录后端流程中,在处理和拼接数据之前,将外部原始数据引入系统内部的阶段就是Ingestion。
作为开发者,如果您想将新的数据源与Backstage集成,那么您将从编写此Ingestion阶段的自定义Entity Provider开始。
🏁 总结
Backstage不仅仅是一个简单的网站,它是一个强大的数据集成引擎。为这个引擎提供燃料的过程正是我们今天学习的Ingestion阶段。理解这个过程将帮助您在遇到“为什么我的服务没有出现在目录中?”这样的故障排除情况时,能够从容不迫地找到原因!
发表回复