Apache APISIX API ゲートウェイ
Apache APISIX は、動的、リアルタイム、高性能の API ゲートウェイです。
APISIX API Gateway は、ロード バランシング、動的アップストリーム、カナリア リリース、サーキット ブレーク、認証、オブザーバビリティなどの豊富なトラフィック管理機能を提供します。
APISIX API Gateway を使用すると、従来の North-South トラフィックだけでなく、サービス間の East-West トラフィックも処理できます。 k8s Ingress コントローラーとしても使用できます。
Apache APISIX の技術アーキテクチャ:
コミュニティ
- G2 の APISIX についてレビューを書いてください。
- メーリング リスト: [email protected] にメールを送信し、返信に従ってメーリング リストに登録します。
- Slack ワークスペース - 招待リンク (このリンクの有効期限が切れている場合は問題を開いてください)、#apisix チャネルに参加します (チャネル -> チャネルの参照 -> 「apisix」を検索)。
- - ハッシュタグ
#ApacheAPISIX
を使用してフォローし、交流してください - ドキュメント
- ディスカッション
- ブログ
特徴
APISIX API Gateway をトラフィック入口として使用して、動的ルーティング、動的アップストリーム、動的証明書、A/B テスト、カナリア リリース、ブルーグリーン デプロイメント、制限レート、悪意のある攻撃に対する防御、メトリクス、モニタリングなどのすべてのビジネス データを処理できます。アラーム、サービスの可観測性、サービスのガバナンスなど。
すべてのプラットフォーム
- クラウドネイティブ: プラットフォームに依存せず、ベンダー ロックインがなく、APISIX API Gateway はベアメタルから Kubernetes まで実行できます。
- ARM64 のサポート: インフラ テクノロジのロックインを心配する必要はありません。
マルチプロトコル
- TCP/UDP プロキシ: 動的 TCP/UDP プロキシ。
- Dubbo プロキシ: Dubbo プロキシへの動的 HTTP。
- 動的 MQTT プロキシ:
client_id
による MQTT の負荷分散をサポートし、両方とも MQTT 3.1.*、5.0 をサポートします。 - gRPC プロキシ: gRPC トラフィックをプロキシします。
- gRPC Web プロキシ: gRPC Web トラフィックを gRPC サービスにプロキシします。
- gRPC トランスコーディング: クライアントが HTTP/JSON を使用して gRPC API にアクセスできるように、プロトコル トランスコーディングをサポートします。
- プロキシウェブソケット
- プロキシプロトコル
- HTTP(S) フォワード プロキシ
- SSL: SSL 証明書を動的にロードします。
- QUIC を使用した HTTP/3
フルダイナミック
- ホットアップデートとホットプラグイン: 再起動せずに、設定とプラグインを継続的に更新します。
- プロキシ書き換え: アップストリームに送信する前に、リクエストの
host
、 uri
、 schema
、 method
、 headers
の書き換えをサポートします。 - 応答の書き換え: カスタマイズされた応答ステータス コード、本文、ヘッダーをクライアントに設定します。
- 動的負荷分散: 重みを使用したラウンドロビン負荷分散。
- ハッシュベースの負荷分散: 一貫したハッシュ セッションによる負荷分散。
- ヘルスチェック: 上流ノードでヘルスチェックを有効にし、負荷分散中に異常なノードを自動的にフィルタリングしてシステムの安定性を確保します。
- サーキット ブレーカー: 異常なアップストリーム サービスをインテリジェントに追跡します。
- プロキシ ミラー: クライアントのリクエストをミラーリングする機能を提供します。
- トラフィック分割: ユーザーは、さまざまなアップストリーム間でトラフィックの割合を段階的に振り向けることができます。
きめ細かいルーティング
- フルパスマッチングとプレフィックスマッチングをサポート
- すべての Nginx 組み込み変数をルーティング条件としてサポートするため、
cookie
、 args
などをルーティング条件として使用して、カナリア リリース、A/B テストなどを実装できます。 - ルーティングの判定条件として各種演算子をサポート (例
{"arg_age", ">", 24}
- カスタムルートマッチング機能をサポート
- IPv6: IPv6 を使用してルートを照合します。
- TTLをサポート
- サポートの優先順位
- バッチHTTPリクエストのサポート
- GraphQL属性によるルートのフィルタリングをサポート
安全
- 豊富な認証と認可のサポート:
- キー認証
- JWT
- 基本認証
- オオカミ-rbac
- キャビン
- キーマント
- カスドア
- IP ホワイトリスト/ブラックリスト
- リファラーのホワイトリスト/ブラックリスト
- IdP: Auth0、okta などの外部 ID プラットフォームをサポートします。
- 制限要求
- 制限回数
- 同時実行の制限
- Anti-ReDoS (正規表現サービス拒否): 構成不要の Anti-ReDoS に対する組み込みポリシー。
- CORS API の CORS (クロスオリジン リソース共有) を有効にします。
- URI ブロッカー: URI によるクライアント要求をブロックします。
- リクエストバリデータ
- CSRF
Double Submit Cookie
方法に基づいて、CSRF 攻撃から API を保護します。
OPSに優しい
- ジップキンのトレース: ジップキン
- オープンソース APM: Apache SkyWalking をサポート
- 外部サービス検出と連携: 組み込みの etcd に加えて、Consul、Consul_kv、Nacos、Eureka、および Zookeeper (CP) もサポートします。
- モニタリングとメトリクス: Prometheus
- クラスタリング: APISIX ノードはステートレスであり、構成センターのクラスタリングを作成します。etcd クラスタリング ガイドを参照してください。
- 高可用性: 同じクラスター内で複数の etcd アドレスを構成するためのサポート。
- ダッシュボード
- バージョン管理: 操作のロールバックをサポートします。
- CLI: コマンド ラインから APISIX を開始、停止、再ロードします。
- スタンドアロン: ローカル YAML ファイルからのルート ルールのロードをサポートし、kubernetes(k8s) の下などでより使いやすくなります。
- グローバル ルール: すべてのリクエストに対して任意のプラグインを実行できます (例: 制限レート、IP フィルターなど)。
- 高性能: シングルコア QPS は 18k に達し、平均遅延は 0.2 ミリ秒未満です。
- フォールトインジェクション
- REST 管理 API: REST 管理 API を使用して、デフォルトで 127.0.0.1 アクセスのみを許可する Apache APISIX を制御すると、
conf/config.yaml
のallow_admin
フィールドを変更して、管理 API の呼び出しを許可する IP のリストを指定できます。 。また、Admin API はキー認証を使用して呼び出し元の ID を確認することに注意してください。 - 外部ロガー: アクセス ログを外部ログ管理ツールにエクスポートします。 (HTTP ロガー、TCP ロガー、Kafka ロガー、UDP ロガー、RocketMQ ロガー、SkyWalking ロガー、Alibaba Cloud Logging (SLS)、Google Cloud Logging、Splunk HEC Logging、ファイル ロガー、SolarWinds Loggly Logging、TencentCloud CLS)。
- ClickHouse: ログを ClickHouse にプッシュします。
- Elasticsearch: ログを Elasticsearch にプッシュします。
- Datadog: Datadog エージェントにバンドルされている、UDP プロトコル経由でカスタム メトリクスを DogStatsD サーバーにプッシュします。 DogStatsD は基本的に、Apache APISIX エージェントのカスタム メトリクスを収集し、それを単一のデータ ポイントに集約して、設定された Datadog サーバーに送信する StatsD プロトコルの実装です。
- ヘルムチャート
- HashiCorp Vault: 信頼性の低い環境にある Vault の安全なストレージからシークレットにアクセスするためのシークレット管理ソリューションをサポートします。現在、RS256 キー (公開キーと秘密キーのペア) または秘密キーは、APISIX シークレット リソースを使用して jwt-auth 認証プラグインのボールトからリンクできます。
拡張性が高い
- カスタム プラグイン:
rewrite
、 access
、 header filter
、 body filter
、 log
などの共通フェーズのフックを許可し、 balancer
ステージのフックも許可します。 - プラグインは Java/Go/Python で作成できます
- プラグインはProxy Wasm SDKで作成可能
- カスタム負荷分散アルゴリズム:
balancer
フェーズ中にカスタム負荷分散アルゴリズムを使用できます。 - カスタム ルーティング: ユーザーがルーティング アルゴリズムを自分で実装できるようにします。
多言語サポート
- Apache APISIX はプラグイン開発用の多言語ゲートウェイであり、
RPC
およびWasm
介したサポートを提供します。 - RPC 方式が現在の方式です。開発者はニーズに応じて言語を選択し、RPCで独立したプロセスを開始した後、ローカルのRPC通信を通じてAPISIXとデータを交換します。現時点まで、APISIX は Java、Golang、Python、Node.js をサポートしています。
- Wasm または WebAssembly は実験的な方法です。 APISIX は、Proxy Wasm SDK で作成された APISIX wasm プラグインを介して Wasm バイトコードをロードして実行できます。開発者は、SDK に従ってコードを記述し、それを APISIX を備えた Wasm VM 上で実行される Wasm バイトコードにコンパイルするだけで済みます。
サーバーレス
- Lua 関数: APISIX の各フェーズで関数を呼び出します。
- AWS Lambda: AWS Lambda との統合は、特定の URI に対するすべてのリクエストを AWS API ゲートウェイ エンドポイントにプロキシする動的アップストリームとして機能します。 API キーと AWS IAM アクセス シークレットによる認証をサポートします。
- Azure Functions: 特定の URI に対するすべてのリクエストを Microsoft Azure クラウドにプロキシするための動的アップストリームとしての Azure Serverless Function とのシームレスな統合。
- Apache OpenWhisk: 特定の URI に対するすべてのリクエストを独自の OpenWhisk クラスターにプロキシするための動的アップストリームとしての Apache OpenWhisk とのシームレスな統合。
始めましょう
インストール
インストールに関するドキュメントを参照してください。
はじめる
入門ガイドは、APISIX の基本を学ぶのに最適な方法です。 「はじめに」の手順に従ってください。
さらに、ドキュメントに従ってさらにプラグインを試すことができます。
管理者API
Apache APISIX は、Apache APISIX クラスターを動的に制御するための REST Admin API を提供します。
プラグイン開発
プラグイン開発ガイド、およびサンプル プラグインexample-plugin
のコード実装を参照できます。プラグインの概念を読むと、プラグインについてさらに詳しく知ることができます。
その他のドキュメントについては、Apache APISIX ドキュメント サイトを参照してください。
ベンチマーク
AWS の 8 コア サーバーを使用すると、APISIX の QPS はわずか 0.2 ミリ秒のレイテンシーで 140,000 に達します。
ベンチマーク スクリプトはオープンソース化されているため、試して貢献することを歓迎します。
APISIX は AWS graviton3 C7g でも完全に動作します。
ユーザーストーリー
- 欧州 eFactory プラットフォーム: API セキュリティ ゲートウェイ – eFactory プラットフォームでの APISIX の使用
- コペルニクス参照システム ソフトウェア
- 他のストーリー
APISIX API ゲートウェイを使用するのは誰ですか?
さまざまな企業や組織が研究、生産、商用製品に APISIX API Gateway を使用しています。以下にその一部を示します。
- エアウォレックス
- ビリビリ
- CVTE
- 欧州 eFactory プラットフォーム
- ヨーロッパのコペルニクス参照システム
- 吉利
- 名誉
- ホライゾンロボティクス
- イチーイー
- レノボ
- NASA JPL
- 名雪
- オッポ
- チンクラウド
- スイスコム
- テンセントゲーム
- トラベルスキー
- 生体内
- 新浪微博
- ウィーシティ
- WPS
- XPENG
- ズーム
ロゴ
- Apache APISIX ロゴ(PNG)
- Apache APISIX ロゴ ソース
謝辞
コングとオレンジからインスピレーションを受けています。
ライセンス
Apache 2.0 ライセンス