The Apollo GraphOS 平台
使用 GraphQL 统一您的基础设施
Apollo GraphOS 是构建、管理和扩展 supergraph 的平台,这是一个统一的网络,包括您的组织的服务及其 数据源,全部组成一个单一的分布式 API。
通过向 supergraph's 路由器 发出一个 查询,应用程序客户端可以检索 services 的任何组合数据:
客户端 query supergraph,使用一种叫做 GraphQL 的强大语言,它们可以检索所需的确切数据,而无需过度检索。即使您的超图架构不公开暴露,客户端也可以向单个端点(您的 路由器)发送查询,无论他们需要什么数据。
超级图不是您现有基础设施的替代品。相反,它是一种连接您现有基础设施的方法,使它对与您的数据交互的每个人更加易于访问和实用。
GraphOS 有什么?
GraphOS 平台提供了一个不断增长的工具和服务集合,帮助您构建超级图,并安全地将其与您的组织一起扩展。
以下特征是 GraphOS 的核心:
- 云路由
- 模式注册表
- GraphOS追踪您所有GraphQLAPI的模式,并还处理将那些模式组合成一个超级图模式用于您的路由器。
- 针对每种用例的界面
- 如果您想在Studio或Rover之外自动化自己的工作流程,您可以使用官方的GraphOS平台API来实现。我们将逐步通过平台API开放更多GraphOS功能。
要了解更多关于这些和更多GraphOS功能的信息,请参阅完整的GraphOS文档。
超图中有什么?
如果GraphOS是构建和管理超图的平台,那么了解超图的内容是很重要的。
每个超图都使用一个名为Apollo Federation的开源架构,它包括以下部分:
- 图路由器
- 图路由器作为超级图的客户端可访问的入口点。它接收所有传入的查询。
- 正如其名称所示,路由器将每个传入的查询路由到适当的子图组合(见下一项)。它也有责任将多个子图响应组合成单个响应供客户端使用。
- GraphOS可以为您处理和托管超级图的路由器's。
- 一个或多个子图
- 您的GraphQLAPI每个都为您的超级图的可用数据提供子集,所以我们称它们为子图客户端不会直接查询您的子图——只有路由器才会。
- 通常,您的每个现有微服务都作为不同的子图's。
- 后台数据源(数据库、REST API等)
- 您的子图使用这些数据来为传入的查询填充数据。
上面的图表显示了一个包含GraphOS路由器、两个子图和两个相应的数据源的基本超图
以下视频提供了一个有助于理解Apollo Federation架构如何帮助组织根据数据扩展的有益可视化:
为什么采用超图?
采用超图可以显著提高每个(无论是内部还是外部)与您组织数据互动的团队的开发者体验。这些改进使开发者能够更快地发布产品和功能,同时对它们的可靠性和性能更有信心。
超图的许多好处是由GraphQL语言和Apollo Federation架构提供的。
超图使开发者能够使用强大的工具来进行模式管理、指标聚合和更改验证。了解有关GraphOS工具的更多信息。
我该如何实施超图?
实现一个超图,你需要设置其各个组成部分:图路由和你的子图。Apollo为每个部分提供了库和工具。更重要的是,我们提供了教程来帮助你。
教程
- 如果你是GraphQL的初学者,我们建议你使用“起飞教程系列”开始你的超图之旅。
- 熟悉基本的GraphQL概念是充分利用超图的先决条件。
- 如果你已经在使用GraphQL,我们建议你从第一个图OS云端超图开始。查看快速入门指南。
- 你还可以查看“航行”教程系列,了解如何从头开始创建一个完整的超图。
路由器的实现
如果你创建了一个GraphOS云超图,Apollo将为你提供和托管你的超图路由器。
对于需要在自己的基础设施中运行路由器的企业组织,Apollo提供了两个可以作为路由器使用的库:
- GraphOS路由器(强烈推荐)
- GraphOS路由器由Apollo Router Core提供支持——一个由Rust编写的超高性能二进制文件,即使在极高流量下也能为请求处理增加极小的延迟。查看更多,甚至在高流量下也能实现最小的延迟。
- 由于Apollo Router Core作为一个预编译的二进制文件发布,你不需要编写任何样板代码就可以将其部署到后端。它只需要一个配置文件来自定义任何行为。
- 云端超图路由器在内部使用GraphOS路由器。
- Apollo Server与
@apollo/gateway
- 这是Apollo的开源Node.js GraphQL服务器库,您可以根据需要进行配置,使其作为supergraph网关运行。
如果您开始使用这些库之一,后来决定切换到另一个,您可以在不修改supergraph其他部分的情况下进行切换。
实现子图
每个subgraph本身就是一个GraphQL API。因此,它使用GraphQL服务器库来处理路由器转发的查询。
要作为subgraph运行,GraphQL服务器库需要支持Apollon Federation的subgraph规范。幸运的是,许多流行的库都支持。请查看Federation兼容的subgraph实现。
您可以根据您组织的需要对任何服务器库进行选择。不同的subgraph甚至可以使用完全不同的库,这对于您的各个微服务使用不同语言的情况非常有帮助。
客户端如何查询我的supergraph?
对于客户端应用程序,您的supergraph与其他GraphQL API看起来相同。因此,它们使用相同的客户端库进行查询。
Apollo为以下平台提供了GraphQL客户端库:
- React / JavaScript
- 除了Apollo官方的React支持外,还有社区维护的用于其他流行视图层的库。
- iOS
- Kotlin
这些都是可定制、开源的库,具有强大的缓存和状态管理功能。客户端缓存允许应用本地复制它关心的部分supergraph。应用可以自行查询数据,如果数据已存在,则通过消除重复的网络请求显著提高性能。
从哪里开始?
我们有许多有用的资源可以帮助您开始您的supergraph之旅:
- 交互式教程,包括Apollo Odyssey
- 使用GraphOS创建云supergraph的快速入门指南创建云supergraph使用GraphOS
- 连接您自己的GraphQL API,或尝试使用Apollo托管示例子图的平台。
- 一个带有详细README和多个子图定义的示例超图仓库。
需要更多指导吗?在我们的社区论坛发帖,我们会帮您指明正确的方向。