Apollo Router Core是一个用 Rust 编写的可配置的高性能图形路由器,用于运行使用 Apollo Federation 2 的联邦超级图。
Apollo Router Core 经过充分测试,定期进行基准测试,包含 Apollo Gateway 的大多数主要功能,并且能够服务于生产规模的工作负载。
新版本及其发行说明(以及有关任何重大更改的说明)可以在版本页面上找到,并且最新版本始终可以在最新页面上找到。除了完整的更改历史记录之外,此存储库根目录下的CHANGELOG.md
还包含未发布的更改。
目前,我们每 1-2 周发布一次新版本。
按照快速入门教程设置并运行路由器。
请参阅文档了解更多详细信息。
Apollo Router Core 需要一个 supergraph 文件作为--supergraph
参数和一个可选的配置文件传递。待供应。它们要么位于当前目录中,要么通过标志明确指定,要么通过绝对路径,要么通过相对于当前目录的路径。
Usage:
Commands:
config Configuration subcommands
help Print this message or the help of the given subcommand(s)
Options:
--log
Log level (off|error|warn|info|debug|trace) [env: APOLLO_ROUTER_LOG=] [default: info]
--hot-reload
Reload locally provided configuration and supergraph files automatically. This only affects watching of local files and does not affect supergraphs and configuration provided by GraphOS through Uplink, which is always reloaded immediately [env: APOLLO_ROUTER_HOT_RELOAD=]
-c, --config
Configuration location relative to the project directory [env: APOLLO_ROUTER_CONFIG_PATH=]
--dev
Enable development mode [env: APOLLO_ROUTER_DEV=]
-s, --supergraph
Schema location relative to the project directory [env: APOLLO_ROUTER_SUPERGRAPH_PATH=]
--apollo-uplink-endpoints
The endpoints (comma separated) polled to fetch the latest supergraph schema [env: APOLLO_UPLINK_ENDPOINTS=]
--apollo-uplink-poll-interval
The time between polls to Apollo uplink. Minimum 10s [env: APOLLO_UPLINK_POLL_INTERVAL=] [default: 10s]
--anonymous-telemetry-disabled
Disable sending anonymous usage information to Apollo [env: APOLLO_TELEMETRY_DISABLED=]
--apollo-uplink-timeout
The timeout for an http call to Apollo uplink. Defaults to 30s [env: APOLLO_UPLINK_TIMEOUT=] [default: 30s]
--listen
The listen address for the router. Overrides `supergraph.listen` in router.yaml [env: APOLLO_ROUTER_LISTEN_ADDRESS=]
-V, --version
Display version and exit
-h, --help
Print help
Apollo 构建开源工具和商业服务,使应用程序开发变得更容易、更好,并可供更多人使用。我们通过以下方式帮助您更快地发货:
查看 Odyssey 学习平台,这是通过视频和交互式代码挑战开始 GraphQL 之旅的完美场所。加入 Apollo 社区,与 GraphQL 社区互动并获得技术帮助。
Apollo 路由器核心的开发由以下设计原则驱动,这些设计原则为架构决策和实施提供信息。
正确性:路由器努力成为 GraphQL 和 Federation 的最正确实现,我们关心测试和记录规范隐含的所有内容,直至失败案例。路由器的行为应该遵循对开发人员来说最不意外的原则。
可靠性:路由器是 GraphQL API 的关键部分,因此它必须是基础设施中最强大的部分之一。这意味着其行为的稳定性(无崩溃、无限循环、泄漏等)、可用性(可预测的延迟、RAM 和 CPU 使用情况、可扩展性)和可观察性(指标、警报)。它应该给基础设施人员带来强大的信心,让他们相信他们可以了解其局限性并安全地操作它。
安全实验:路由器将支持未来围绕联邦的所有工作,因此它必须允许新的想法和探索,而不会干扰现有功能。该项目仍在进行中,我们不能让它过早具体化,同时仍遵循正确性和可靠性的原则。
可用性:路由器必须易于操作。优先考虑可扩展性而不是配置选项,并确保用户在出现问题时有足够的信息来帮助自己。例如:
以下原则指导:
单元可测试性:所有新代码都应该是可单元测试的,或者有充分的理由说明为什么不能进行单元测试。这可能意味着需要花费一些额外的时间来确保代码可以单独测试。不要仅仅依赖集成测试。
集成测试套件:我们将与网关的测试套件集成并帮助改进它以测试规范的各个方面。特别是,该测试套件将验证无效查询或网络问题等失败案例。集成测试必须是防弹的,并且在测试执行缓慢或竞争条件的情况下不得失败。
测量和学习:必须通过基准测试、分析以及探索路由器的极限来测试和测量可靠性。我们想了解如何操作路由器以及它的标称点是什么。为此,应详细检测路由器,以便我们测量代码更改如何影响它。我们特别注意测量新功能的开销,以最大限度地减少延迟和资源使用。
可扩展性:通过允许扩展和指令修改路由器的行为,我们可以运行实验并测试新功能,而不会影响特定的查询或端点。此外,这些实验很容易在运行时停用(功能标志、金丝雀等)。
阿波罗图公司
此存储库中的源代码受 Elastic License 2.0 的保护。整个存储库的默认许可证是 Elastic License 2.0 下的许可证,除非文件头或子目录中的许可证文件指定了另一个许可证。请参阅许可证以获取完整的许可证文本。