API Gateway Apache APISIX と Kong の選択比較
API7.ai
January 18, 2020
Apache APISIXとKongは、どちらもオープンソースのマイクロサービスAPIゲートウェイです。では、これらをどのように比較し、選択すればよいのでしょうか?
これらのプロジェクトは、完全なドキュメントとテストでカバーされており、多くのプロダクションユーザーが使用しているため、安定性や持続可能な開発について心配する必要はありません。この記事では、最も直接的で検証可能な機能とパフォーマンスに焦点を当て、異なる視点から比較を行います。
| 機能 | Apache APISIX | KONG | 
|---|---|---|
| ダイナミックアップストリーム | はい | はい | 
| ダイナミックルーター | はい | はい | 
| ヘルスチェック | はい | はい | 
| ダイナミックSSL | はい | はい | 
| L4およびL7プロキシ | はい | はい | 
| Opentracing | はい | はい | 
| カスタムプラグイン | はい | はい | 
| REST API | はい | はい | 
| CLI | はい | はい | 
より詳細な比較は以下の通りです。
| 機能 | Apache APISIX | Kong | 
|---|---|---|
| 所属 | Apache Software Foundation | Kong Inc. | 
| 技術アーキテクチャ | Nginx + etcd | Nginx + postgres | 
| コミュニケーションチャネル | メーリングリスト、Wechatグループ、QQグループ、GitHub、ミートアップ | GitHub、freenode、フォーラム | 
| シングルコアCPU、QPS(limit-countおよびprometheusプラグイン有効時) | 18000 | 1700 | 
| レイテンシー | 0.2 ms | 2 ms | 
| Dubbo | はい | いいえ | 
| 設定ロールバック | はい | いいえ | 
| TTL付きルート | はい | いいえ | 
| プラグインホットローディング | はい | いいえ | 
| カスタムLBおよびルート | はい | いいえ | 
| REST API <--> gRPCトランスコーディング | はい | いいえ | 
| Tengine | はい | いいえ | 
| MQTT | はい | いいえ | 
| 設定有効時間 | イベント駆動、< 1ms | ポーリング、5秒 | 
| ダッシュボード | はい | いいえ | 
| IdP | はい | いいえ | 
| 設定センターHA | はい | いいえ | 
| 指定時間ウィンドウでの速度制限 | はい | いいえ | 
| Nginx変数をルーティング条件としてサポート | はい | いいえ | 
パフォーマンス
limit-countおよびprometheusプラグインを有効にした後、Apache APISIXのパフォーマンスはKongの10倍です。
詳細な手順はこちら:https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01、興味のある開発者は画像を参照して検証できます。
なぜApache APISIXが優れているのか?
ここでは、機能とパフォーマンスの違いの背後にある理由について説明します:
- 
Apache APISIXのルーティングの複雑さはO(k)で、uriの長さのみに関係し、ルートの数とは無関係です。Kongのルーティングの時間複雑さはO(n)で、ルートの数に比例して増加します。 
- 
Apache APISIXのIPマッチングの時間複雑さはO(1)で、大量のIP判断を行ってもCPUリソースを使い果たすことはありません。 
- 
Apache APISIXのルートマッチングは、Nginxのすべての変数を条件として受け入れ、カスタム関数をサポートします。他のゲートウェイにはいくつかの組み込み条件があります。 
- 
Apache APISIXはetcdを設定センターとして使用します。単一障害点がなく、任意のマシンがダウンしてもゲートウェイクラスターは正常に動作します。リレーショナルデータベースに基づく他のゲートウェイは単一障害点の問題を抱えています。 
- 
Apache APISIXの設定は、etcd watchを使用して1ミリ秒以内にすべてのゲートウェイノードに到達します。他のゲートウェイは定期的にデータベースをポーリングし、最新の設定を取得するのに通常5秒かかります。 
- 
Apache APISIXのプラグインは、高負荷下でもミリ秒レベルのレイテンシーを維持するように慎重に調整されています。 
- 
Apache APISIXの独自のプラグイン配置とローコード機能により、二次開発のハードルを大幅に下げることができます。