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 下的許可證,除非檔案頭或子目錄中的許可證檔案指定了另一個許可證。請參閱許可證以取得完整的許可證文字。