Orbital自动化了您的数据源之间的集成。
它本质上是去中心化的 - 没有定义中央映射代码。 相反,Orbital由您已经在构建的API规范驱动。
Orbital可以即时创建集成,无需工程师编写粘合代码。
立即开始,在您的机器上启动Orbital
curl https://start.orbitalhq.com > docker-compose.yml
docker compose up -d
然后在浏览器中访问 http://localhost:9022。
Orbital是什么?
Orbital是一个数据网关,可以自动化企业内各数据源(API、数据库、消息代理)之间的集成、转换和发现。
可以将其视为数据联邦(所有源的单一API),而无需转向GraphQL。
Orbital可以即时集成,随着数据源的变化自动调整。
这由Taxi提供支持,它为您现有的API规范添加了丰富的语义元数据,描述了数据源之间的数据关系。
为什么选择Orbital?
- **无粘合代码:**将API连接在一起的粘合代码很脆弱,每当API发生变化时就会破坏。
- **API优先:**Orbital由您现有的API规范驱动,意味着需要维护的代码更少。
- **技术无关:**使用gRPC?REST?SOAP?Kafka?Orbital不在乎。它可以与您现有的技术协同工作。
- **自动适应:**随着您的API规范变化,Orbital会自动调整其集成流程,消费者不受影响。
它是如何工作的?
以下是Orbital的主要思想。
- 定义一些共享术语
创建一个Taxi项目:
taxi init
...然后创建一些类型...
type MovieId inherits Int
type MovieTitle inherits String
// ... 等等...
- 在您的API中添加元数据
# OpenAPI规范的一个摘录:
components:
schemas:
Reviews:
properties:
id:
type: string
+ # 直接在OpenAPI中嵌入语义类型元数据
+ x-taxi-type:
+ name: MovieId
(查看完整文档以了解OpenAPI,或Protobuf和数据库中的其他示例)
- 将您的API规范发布到Orbital
告诉Orbital关于您的API。有几种方法可以做到这一点。
- 查询数据
一些查询示例:
// 查找所有电影
find { Movie[] }
// 查找特定电影
find { Movie(MovieId == 1)}
// 连接一些其他数据
find { Movie[] } as {
title: MovieTitle
// 组合API:
// 我在哪里可以观看这个?
// 这些数据来自另一个REST API
streamingServiceName: 服务名称
price: 月费
// 评论 - 这部电影好看吗?
// 这些数据来自第三个API
reviewScore: 评分
reviewText: 评论内容
}
Orbital为每个查询构建集成,并按需组合API。
因为它是由API规范驱动的:
- 无需维护解析器
- API规范的变更会自动维护
Taxi
在底层,Orbital是一个TaxiQL查询服务器。
链接
联系我们
- 💬 在Slack上与我们联系
- ☎️ 预约与创始人通话
- 🐞 报告bug
- 🙋 提问
常见问题
这与GraphQL有何关系?
Orbital提供了GraphQL的许多优势(API联合、自定义响应模式),但无需将技术栈转移到GraphQL - 而是可以使用现有的技术栈。
主要区别在于:
技术无关
当你在所有地方都使用GraphQL时,GraphQL运作得很好。对于其他情况,你必须维护一个单独的适配层来将RESTful API / 数据库 / 消息队列等适配到GraphQL。
Orbital和Taxi通过在现有API规范(OpenAPI / Protobuf / Avro / JsonSchema等)中嵌入元数据来工作,因此你不需要更改正在使用的底层技术。
去中心化、规范优先的联合
Orbital为去中心化的团队而设计,使团队可以独立发布更改,无需构建和维护单独的集成层。
无解析器
GraphQL中的解析器是需要维护的集成代码 - 通常由专门的GraphQL / 中间件团队维护。这意味着拥有服务的团队必须与单独的集成团队协调变更。
相反,Orbital使用嵌入在API规范中的Taxi元数据来定义数据如何在语义上相关。从这里开始,大多数集成可以自动创建。
这是否意味着我所有的系统都必须有相同的ID方案和请求/响应模型?
不是的。Taxi的设计鼓励团队独立演进,而不共享通用模型。相反,使用语义标量来自动组合模型。
我们在为什么我们创建Taxi中详细讨论了这一点。
我无法在API规范中嵌入标签 - 这是否阻止我使用Orbital?
不会。如果你不能直接编辑API规范(或没有它们),有很多选择 - 比如使用规范的克隆,或者从头开始用Taxi实现规范(这非常快)。