Apollo Router Core は、Apollo Federation 2 を使用するフェデレーテッド スーパーグラフを実行するために Rust で書かれた構成可能な高性能グラフ ルーターです。
Apollo Router Core は十分にテストされ、定期的にベンチマークが行われており、Apollo Gateway のほとんどの主要機能が含まれており、実稼働規模のワークロードに対応できます。
新しいリリースとそのリリース ノート (重大な変更に関するメモとともに) はリリース ページで見つけることができ、最新リリースは常に最新ページで見つけることができます。このリポジトリのルートにあるCHANGELOG.md
には、変更の完全な履歴に加えて、未リリースの変更も含まれています。
現在、1 ~ 2 週間ごとに新しいリリースを公開しています。
クイックスタート チュートリアルに従って、ルーターを立ち上げて実行します。
詳細については、ドキュメントを参照してください。
Apollo Router Core では、スーパーグラフ ファイルを--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 コミュニティと交流したり、GraphQL コミュニティから技術的なサポートを受けたりしてください。
Apollo Router Core の開発は、アーキテクチャの決定と実装に影響を与える次の設計原則によって推進されます。
正確さ:ルーターは、GraphQL とフェデレーションの最も正確な実装になるよう努めており、障害ケースに至るまで、仕様に暗示されているすべてのテストと文書化に気を配っています。ルーターの動作は、開発者にとって最小限の驚きの原則に従う必要があります。
信頼性:ルーターは GraphQL API の重要な部分であるため、インフラストラクチャの最も強力な部分の 1 つである必要があります。これは、動作の安定性 (クラッシュ、無限ループ、リークなどがない)、可用性 (予測可能なレイテンシ、RAM と CPU の使用率、スケーラビリティ)、および可観測性 (メトリクス、アラート) を意味します。それは、インフラストラクチャ担当者に、その限界を学び、安全に運用できるという強い自信を与えるはずです。
安全な実験:ルーターはフェデレーションに関する今後のすべての作業をサポートするため、既存の機能を妨げることなく新しいアイデアや探索を可能にする必要があります。プロジェクトはまだ進行中です。正確性と信頼性の原則に従いながら、早期に具体化することは許されません。
使いやすさ:ルーターは操作が簡単でなければなりません。構成オプションよりも拡張性を優先し、問題が発生したときにユーザーが自分で対処できる十分な情報を確実に得られるようにします。例えば:
次の原則がガイドとなります。
単体テスト可能性:すべての新しいコードは単体テスト可能であるか、そうでない十分な理由がある必要があります。これは、コードが単独でテスト可能であることを確認するために、少し余分に時間を費やすことを意味する場合があります。統合テストのみに依存しないでください。
統合テスト スイート:ゲートウェイのテスト スイートと統合し、仕様のあらゆる側面をテストできるように改善を支援します。特に、このテスト スイートは、無効なクエリやネットワークの問題などの失敗ケースを検証します。統合テストは完璧でなければならず、テストの実行が遅い場合や競合状態の場合でも失敗してはなりません。
測定と学習:信頼性は、ベンチマーク、プロファイリング、ルーターの限界の調査を通じてテストおよび測定する必要があります。ルーターの操作方法とその基準点を知りたいと思っています。そのために、ルーターを詳細に計測し、コードの変更がルーターにどのような影響を与えるかを測定できるようにする必要があります。レイテンシーとリソース使用量を最小限に抑えるために、新機能のオーバーヘッドの測定に特に注意を払っています。
拡張性:拡張機能とディレクティブでルーターの動作を変更できるようにすることで、特定のクエリやエンドポイントに影響を与えることなく、実験を実行して新機能をテストできます。さらに、これらの実験は実行時に簡単に無効化できます (機能フラグ、カナリアなど)。
アポログラフ株式会社
このリポジトリのソース コードは Elastic License 2.0 の対象です。ファイル ヘッダーまたはサブディレクトリ内のライセンス ファイルで別のライセンスが指定されていない限り、リポジトリ全体のデフォルトは Elastic License 2.0 に基づくライセンスです。ライセンスの全文については、ライセンスを参照してください。