Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Apigee Edge memberikan kemampuan untuk mengonfigurasi jumlah permintaan yang diizinkan ke Proxy API untuk periode waktu tertentu menggunakan kebijakan Kuota.
Anti-pola
Permintaan proxy API dapat dilayani oleh satu atau beberapa komponen Edge terdistribusi yang disebut Pemroses Pesan. Jika ada beberapa Pemroses Pesan yang dikonfigurasi untuk API penayangan permintaan, maka kuota kemungkinan akan terlampaui karena setiap Pemroses Pesan menyimpannya sendiri "jumlah" permintaan yang diproses.
Mari kita jelaskan hal ini dengan bantuan sebuah contoh. Pertimbangkan Kebijakan kuota berikut untuk API {i>proxy<i}:
<!-- /antipatterns/examples/1-6.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Allow count="100"/> </Quota>
Konfigurasi di atas seharusnya memungkinkan total 100 permintaan per jam.
Namun dalam praktiknya, ketika beberapa pemroses pesan melayani permintaan API, hal berikut terjadi:
Dalam ilustrasi di atas:
- Kebijakan kuota dikonfigurasi untuk mengizinkan 100 permintaan per jam.
- Permintaan ke Proxy API dilayani oleh dua Pemroses Pesan.
- Setiap Pemroses Pesan mempertahankan variabel jumlah kuotanya sendiri,
quota_count_mp1
danquota_count_mp2
, untuk melacak jumlah permintaan yang diproses. - Oleh karena itu, setiap Pemroses Pesan akan mengizinkan 100 permintaan API secara terpisah. Efek bersih adalah total 200 permintaan diproses, bukan 100 permintaan.
Dampak
Situasi ini menggagalkan tujuan konfigurasi kuota dan dapat memiliki efek yang merugikan server backend yang melayani permintaan.
Server backend dapat:
- Stres karena traffic masuk yang lebih tinggi dari yang diperkirakan
- Menjadi tidak responsif terhadap permintaan API yang lebih baru yang menyebabkan error 503
Praktik Terbaik
Sebaiknya setel elemen <Distributed>
ke true
di Kebijakan kuota ke
memastikan bahwa penghitung umum digunakan untuk melacak permintaan API di semua Pemroses Pesan.
Elemen <Distributed>
dapat ditetapkan seperti yang ditunjukkan dalam cuplikan kode di bawah:
<!-- /antipatterns/examples/1-7.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Distributed>true</Distributed> <Allow count="100"/> </Quota>