Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi
Apigee X. info
Edge Microgateway v. 2.4.x
Audiens
Topik ini ditujukan bagi operator Edge Microgateway yang ingin menggunakan plugin yang sudah ada yang diinstal dengan microgateway. Plugin ini juga membahas plugin pembatasan lonjakan dan kuota secara mendetail (keduanya disertakan dengan penginstalan). Jika Anda adalah developer yang ingin mengembangkan plugin baru, lihat Mengembangkan plugin kustom.
Apa yang dimaksud dengan plugin Edge Microgateway?
Plugin adalah modul Node.js yang menambahkan fungsi ke Edge Microgateway. Modul plugin mengikuti pola yang konsisten dan disimpan di lokasi yang diketahui oleh Edge Microgateway, sehingga microgateway dapat menemukan dan memuatnya secara otomatis. Edge Microgateway menyertakan beberapa plugin yang sudah ada dan Anda juga dapat membuat plugin kustom, seperti yang dijelaskan dalam Mengembangkan plugin kustom.
Plugin yang ada yang disertakan dengan Edge Microgateway
Beberapa plugin yang ada disediakan dengan Edge Microgateway saat penginstalan. Hal ini mencakup:
| Plugin | Diaktifkan secara default | Deskripsi |
|---|---|---|
| analytics | Ya | Mengirim data analisis dari Edge Microgateway ke Apigee Edge. |
| oauth | Ya | Menambahkan validasi token OAuth dan Kunci API ke Edge Microgateway. Lihat Menyiapkan dan mengonfigurasi Edge Microgateway. |
| kuota | Tidak | Menerapkan kuota pada permintaan ke Edge Microgateway. Menggunakan Apigee Edge untuk menyimpan dan mengelola kuota. Lihat Menggunakan plugin kuota. |
| spikearrest | Tidak | Melindungi dari lonjakan traffic dan serangan DoS. Lihat Menggunakan plugin penahanan lonjakan. |
| header-uppercase | Tidak | Contoh proxy yang diberi komentar, yang dimaksudkan sebagai panduan untuk membantu developer menulis plugin kustom. Lihat plugin contoh Edge Microgateway. |
| accumulate-request | Tidak | Mengumpulkan data permintaan ke dalam satu objek sebelum meneruskan data ke handler berikutnya dalam rantai plugin. Berguna untuk menulis plugin transformasi yang perlu beroperasi pada satu objek konten permintaan yang terakumulasi. |
| accumulate-response | Tidak | Mengumpulkan data respons ke dalam satu objek sebelum meneruskan data ke handler berikutnya dalam rangkaian plugin. Berguna untuk menulis plugin transformasi yang perlu beroperasi pada satu objek konten respons yang terakumulasi. |
| transform-uppercase | Tidak | Mentransformasi data permintaan atau respons. Plugin ini merepresentasikan praktik terbaik implementasi plugin transformasi. Contoh plugin melakukan transformasi sepele (mengonversi data permintaan atau respons menjadi huruf besar); namun, plugin ini dapat dengan mudah diadaptasi untuk melakukan jenis transformasi lain, seperti XML ke JSON. |
| json2xml | Tidak | Mentransformasi data permintaan atau respons berdasarkan header accept atau content-type. Untuk detailnya, lihat dokumentasi plugin di GitHub. |
| quota-memory | Tidak | Menerapkan kuota pada permintaan ke Edge Microgateway. Menyimpan dan mengelola kuota di memori lokal. |
| healthcheck | Tidak | Menampilkan informasi tentang proses Edge Microgateway -- penggunaan memori, penggunaan CPU, dll. Untuk menggunakan plugin, panggil URL /healthcheck di instance Edge Microgateway Anda. Plugin ini dimaksudkan sebagai contoh yang dapat Anda gunakan untuk menerapkan plugin pemeriksaan kondisi Anda sendiri. |
Tempat menemukan plugin yang ada
Plugin yang ada dan dibundel dengan Edge Microgateway terletak di sini,
dengan [prefix] adalah direktori awalan npm.
Lihat Di mana Edge Microgateway diinstal.
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins
Menambahkan dan mengonfigurasi plugin
Ikuti pola ini untuk menambahkan dan mengonfigurasi plugin:
- Hentikan Edge Microgateway.
- Buka file konfigurasi Edge Microgateway. Untuk mengetahui detailnya, lihat Melakukan perubahan konfigurasi untuk opsi.
- Tambahkan plugin ke elemen
plugins:sequencefile konfigurasi, seperti berikut. Plugin dijalankan sesuai urutan kemunculannya dalam daftar ini.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - plugin-name
- Konfigurasi plugin. Beberapa plugin memiliki parameter opsional yang dapat Anda konfigurasi di
file konfigurasi. Misalnya, Anda dapat menambahkan stanza berikut untuk mengonfigurasi plugin
spike arrest. Lihat Menggunakan plugin
penahan lonjakan untuk mengetahui informasi selengkapnya.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10
- Simpan file.
- Mulai ulang atau muat ulang Edge Microgateway, bergantung pada file konfigurasi yang Anda edit, seperti yang dijelaskan dalam Melakukan perubahan konfigurasi.
Konfigurasi khusus plugin
Anda dapat mengganti parameter plugin yang ditentukan dalam file konfigurasi dengan membuat konfigurasi khusus plugin di direktori ini:
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config
dengan [prefix] adalah direktori awalan npm.
Lihat Di mana Edge Microgateway diinstal.
plugins/<plugin_name>/config/default.yaml. Misalnya, Anda dapat menempatkan
blok ini di plugins/spikearrest/config/default.yaml, dan blok ini akan menggantikan
setelan konfigurasi lainnya.
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
Menggunakan plugin peredam lonjakan
Bagian ini membahas plugin penahan lonjakan.
Tentang penahanan lonjakan
Spike Arrest melindungi dari lonjakan traffic. Kebijakan ini membatasi jumlah permintaan yang diproses oleh instance Edge Microgateway. Untuk mengetahui informasi selengkapnya, lihat Bagaimana cara kerja penahanan lonjakan? Lihat juga Apa perbedaan antara pembatasan lonjakan dan kuota?.
Menambahkan plugin penahan lonjakan
Untuk mengetahui langkah-langkah dasar yang harus diikuti untuk setiap plugin, lihat Menambahkan dan mengonfigurasi plugin.
Contoh konfigurasi untuk penahanan lonjakan
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10 bufferSize: 5
Opsi konfigurasi untuk penahanan lonjakan
- timeUnit: Seberapa sering periode eksekusi penahanan lonjakan direset. Nilai yang valid adalah detik atau menit.
- allow: Jumlah maksimum permintaan yang diizinkan selama timeUnit.
- bufferSize: (opsional, default = 0) jika bufferSize > 0, spike arrest menyimpan jumlah permintaan ini dalam buffer. Segera setelah "periode" eksekusi berikutnya terjadi, permintaan yang di-buffer akan diproses terlebih dahulu. Lihat juga Menambahkan buffer.
Bagaimana cara kerja penekanan lonjakan?
Anggap saja penahanan lonjakan sebagai cara untuk melindungi secara umum dari lonjakan traffic, bukan sebagai cara untuk membatasi traffic ke sejumlah permintaan tertentu. API dan backend Anda dapat menangani jumlah traffic tertentu, dan kebijakan penahanan lonjakan membantu Anda memperlancar traffic ke jumlah umum yang Anda inginkan.
Perilaku penahanan lonjakan runtime berbeda dari yang mungkin Anda harapkan dari nilai per menit atau per detik literal yang Anda masukkan.
Misalnya, Anda menentukan kapasitas 30 permintaan per menit, seperti ini:
spikearrest: timeUnit: minute allow: 30
Saat pengujian, Anda mungkin berpikir bahwa Anda dapat mengirim 30 permintaan dalam 1 detik, selama permintaan tersebut masuk dalam satu menit. Namun, kebijakan tidak menerapkan setelan dengan cara tersebut. Jika dipikir-pikir, 30 permintaan dalam periode 1 detik dapat dianggap sebagai lonjakan kecil di beberapa lingkungan.
Lalu, apa yang sebenarnya terjadi? Untuk mencegah perilaku seperti lonjakan, penahanan lonjakan memperlancar traffic yang diizinkan dengan membagi setelan Anda ke dalam interval yang lebih kecil, sebagai berikut:
Tarif per menit
Rasio per menit dihaluskan menjadi interval detik yang diizinkan untuk permintaan. Misalnya, 30 permintaan per menit akan dihaluskan seperti ini:
60 detik (1 menit) / 30 = interval 2 detik, atau sekitar 1 permintaan diizinkan setiap 2 detik. Permintaan kedua dalam waktu 2 detik akan gagal. Selain itu, permintaan ke-31 dalam satu menit akan gagal.
Tarif per detik
Rasio per detik dihaluskan menjadi permintaan yang diizinkan dalam interval milidetik. Misalnya, 10 permintaan/detik akan dihaluskan seperti ini:
1.000 milidetik (1 detik) / 10 = interval 100 milidetik, atau sekitar 1 permintaan yang diizinkan setiap 100 milidetik. Permintaan kedua dalam waktu 100 md akan gagal. Selain itu, permintaan ke-11 dalam satu detik akan gagal.
Jika batas terlampaui
Jika jumlah permintaan melebihi batas dalam interval waktu yang ditentukan, pemberitahuan lonjakan akan menampilkan pesan error ini dengan status HTTP 503:
{"error": "spike arrest policy violated"}Menambahkan buffer
Anda memiliki opsi untuk menambahkan buffer ke kebijakan. Misalnya, Anda menyetel buffer ke 10. Anda akan melihat bahwa API tidak langsung menampilkan error saat Anda melebihi batas penahanan lonjakan. Sebagai gantinya, permintaan di-buffer (hingga jumlah yang ditentukan), dan permintaan yang di-buffer diproses segera setelah jendela eksekusi yang sesuai berikutnya tersedia. bufferSize default adalah 0.
Menggunakan plugin kuota
Bagian ini membahas plugin kuota.
Tentang plugin kuota
Kuota menentukan jumlah pesan permintaan yang diizinkan untuk dikirimkan aplikasi ke API selama satu jam, hari, minggu, atau bulan. Jika aplikasi mencapai batas kuota, panggilan API berikutnya akan ditolak. Lihat juga Apa perbedaan antara pembatasan lonjakan dan kuota?.
Menambahkan plugin kuota
Untuk mengetahui langkah-langkah dasar yang harus diikuti untuk setiap plugin, lihat Menambahkan dan mengonfigurasi plugin.
Konfigurasi produk di Apigee Edge
Anda mengonfigurasi kuota di UI Apigee Edge tempat Anda mengonfigurasi produk API. Anda perlu mengetahui produk mana yang berisi proxy yang kompatibel dengan microgateway yang ingin Anda batasi dengan kuota. Produk ini harus ditambahkan ke aplikasi developer. Saat Anda melakukan panggilan API yang diautentikasi menggunakan kunci di aplikasi developer, kuota akan diterapkan ke panggilan API tersebut.
- Login ke akun organisasi Apigee Edge Anda.
- Di UI Edge, buka produk yang terkait dengan proxy yang kompatibel dengan microgateway yang
ingin Anda terapkan kuotanya.
- Di UI, pilih Produk dari menu Publikasikan.
- Buka produk yang berisi API yang kuotanya ingin Anda terapkan.
- Klik Edit.
- Di kolom Kuota, tentukan interval kuota. Misalnya, 100 permintaan setiap
satu menit. Atau 50.000 permintaan setiap 2 jam.

- Klik Simpan.
- Pastikan produk ditambahkan ke aplikasi developer. Anda akan memerlukan kunci dari aplikasi ini untuk melakukan panggilan API yang diautentikasi.
Contoh konfigurasi untuk kuota
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - quota
Opsi konfigurasi untuk kuota
Tidak ada opsi konfigurasi tambahan untuk plugin kuota.
Menguji plugin kuota
Jika kuota terlampaui, status HTTP 403 akan ditampilkan kepada klien, beserta pesan berikut:
{"error": "exceeded quota"}Apa perbedaan antara pembatasan lonjakan dan kuota?
Penting untuk memilih alat yang tepat untuk pekerjaan yang sedang dilakukan. Kebijakan kuota mengonfigurasi jumlah pesan permintaan yang diizinkan untuk dikirimkan oleh aplikasi klien ke API selama satu jam, hari, minggu, atau bulan. Kebijakan kuota menerapkan batas penggunaan pada aplikasi klien dengan mempertahankan penghitung terdistribusi yang mencatat permintaan masuk.
Gunakan kebijakan kuota untuk memberlakukan kontrak bisnis atau SLA dengan developer dan partner, bukan untuk pengelolaan traffic operasional. Misalnya, kuota dapat digunakan untuk membatasi traffic layanan gratis, sekaligus mengizinkan akses penuh bagi pelanggan berbayar. Lihat juga Menggunakan plugin kuota.
Gunakan penahanan lonjakan untuk melindungi dari lonjakan traffic API yang tiba-tiba. Biasanya, pembatasan lonjakan digunakan untuk mencegah kemungkinan serangan DDoS atau serangan berbahaya lainnya.