Perbandingan Pemilihan API Gateway Apache APISIX dan Kong
API7.ai
January 18, 2020
Apache APISIX dan Kong keduanya adalah gateway API mikrolayanan sumber terbuka, jadi bagaimana Anda membandingkan dan memilih di antara keduanya?
Kedua proyek ini dilengkapi dengan dokumentasi dan pengujian yang lengkap, dan banyak pengguna produksi telah menggunakannya, jadi tidak perlu khawatir tentang stabilitas dan pengembangan berkelanjutan mereka. Artikel ini akan fokus pada fungsi dan performa yang paling langsung dan dapat diverifikasi. Untuk membuat perbandingan dari perspektif yang berbeda.
Kedua proyek ini dilengkapi dengan dokumentasi dan pengujian yang lengkap, dan banyak pengguna produksi telah menggunakannya, jadi tidak perlu khawatir tentang stabilitas dan pengembangan berkelanjutan mereka. Artikel ini akan fokus pada fungsi dan performa yang paling langsung dan dapat diverifikasi. Untuk membuat perbandingan dari perspektif yang berbeda.
| Fitur | Apache APISIX | KONG |
|---|---|---|
| Upstream dinamis | Ya | Ya |
| Router dinamis | Ya | Ya |
| Pemeriksaan kesehatan | Ya | Ya |
| SSL dinamis | Ya | Ya |
| Proxy L4 dan L7 | Ya | Ya |
| Opentracing | Ya | Ya |
| Plugin kustom | Ya | Ya |
| REST API | Ya | Ya |
| CLI | Ya | Ya |
Untuk perbandingan yang lebih detail.
| Fitur | Apache APISIX | Kong |
|---|---|---|
| Milik | Apache Software Foundation | Kong Inc. |
| Arsitektur Teknologi | Nginx + etcd | Nginx + postgres |
| Saluran komunikasi | Daftar email, grup Wechat, grup QQ, GitHub, meetup | GitHub, freenode, forum |
| CPU single-core, QPS (mengaktifkan plugin limit-count dan prometheus) | 18000 | 1700 |
| Latensi | 0.2 ms | 2 ms |
| Dubbo | Ya | Tidak |
| Rollback konfigurasi | Ya | Tidak |
| Rute dengan TTL | Ya | Tidak |
| Pemuatan panas plugin | Ya | Tidak |
| LB dan rute kustom | Ya | Tidak |
| Transcoding REST API <--> gRPC | Ya | Tidak |
| Tengine | Ya | Tidak |
| MQTT | Ya | Tidak |
| Waktu efektif konfigurasi | Event driven, < 1ms | polling, 5 detik |
| Dashboard | Ya | Tidak |
| IdP | Ya | Tidak |
| HA Pusat Konfigurasi | Ya | Tidak |
| Batas kecepatan untuk jendela waktu tertentu | Ya | Tidak |
| Mendukung variabel Nginx apa pun sebagai kondisi routing | Ya | Tidak |
Performa
Setelah mengaktifkan plugin limit-count dan prometheus, performa Apache APISIX sepuluh kali lipat dari Kong.
Berikut adalah langkah-langkah yang lebih detail: https://gist.github.com/membphis/137db97a4bf64d3653aa42f3e016bd01, Pengembang yang tertarik dapat mengikuti gambar untuk memverifikasi.
Mengapa Apache APISIX Lebih Unggul?
Di sini, kita membahas alasan di balik perbedaan fungsi dan performa:
-
Kompleksitas routing Apache APISIX adalah O(k), yang hanya terkait dengan panjang uri dan tidak ada hubungannya dengan jumlah rute; kompleksitas waktu routing kong adalah O(n), yang meningkat secara linear dengan jumlah rute.
-
Kompleksitas waktu pencocokan IP Apache APISIX adalah O(1), yang tidak akan menyebabkan sumber daya CPU habis dengan banyak penilaian IP.
-
Pencocokan rute Apache APISIX menerima semua variabel Nginx sebagai kondisi dan mendukung fungsi kustom; gateway lain memiliki beberapa kondisi bawaan.
-
Apache APISIX menggunakan etcd sebagai pusat konfigurasi. Tidak ada titik tunggal. Jika satu mesin mati secara acak, kluster gateway masih dapat beroperasi secara normal. Gateway lain yang berbasis database relasional akan memiliki masalah titik tunggal.
-
Konfigurasi Apache APISIX dapat mencapai semua node gateway dalam waktu 1 milidetik, menggunakan etcd watch; gateway lain melakukan polling database secara berkala, dan biasanya membutuhkan 5 detik untuk mendapatkan konfigurasi terbaru.
-
Plugin Apache APISIX telah disetel dengan cermat untuk mempertahankan latensi tingkat milidetik di bawah tekanan tinggi.
-
Pengaturan plugin unik Apache APISIX dan fitur low-code dapat sangat mengurangi ambang batas pengembangan sekunder.