Batas Penggunaan

Google Play EMM API memiliki batas default 60.000 kueri per menit untuk setiap EMM.

Jika Anda melebihi kuota, Google EMM EMM API akan menampilkan HTTP 429 Too Many Requests. Untuk membantu memastikan Anda tidak melebihi batas penggunaan yang ditetapkan dan menawarkan pengalaman optimal bagi pengguna, pertimbangkan untuk menerapkan beberapa praktik terbaik yang dijelaskan di bagian di bawah ini.

Rekomendasi untuk tetap berada di bawah batas penggunaan API

Saat menggunakan Google Play EMM API, ada beberapa praktik terbaik yang dapat Anda terapkan untuk mendistribusikan permintaan dan mengurangi risiko melampaui batas penggunaan.

Mengacak waktu mulai dan interval

Aktivitas seperti menyinkronkan atau check in perangkat secara bersamaan kemungkinan akan menghasilkan peningkatan volume permintaan yang signifikan. Daripada melakukan aktivitas ini pada interval yang dijadwalkan secara teratur, Anda dapat mendistribusikan beban permintaan dengan mengacak interval ini. Misalnya, daripada menyinkronkan setiap perangkat setiap 24 jam, Anda dapat menyinkronkan setiap perangkat pada jangka waktu yang dipilih secara acak antara 23 dan 25 jam. Hal ini membantu menyebarkan jumlah permintaan.

Demikian pula, jika Anda menjalankan tugas harian yang membuat banyak panggilan API secara berurutan, pertimbangkan untuk memulai tugas secara acak setiap hari untuk mencegah pembuatan permintaan dalam jumlah besar untuk semua pelanggan perusahaan Anda secara bersamaan.

Gunakan backoff eksponensial untuk mencoba lagi permintaan

Jika Anda menjalankan tugas yang terdiri dari banyak panggilan API, gunakan strategi backoff eksponensial sebagai respons terhadap kuota. Backoff eksponensial adalah algoritme yang mencoba ulang permintaan secara eksponensial. Contoh alur untuk mengimplementasikan backoff eksponensial sederhana adalah sebagai berikut:

  1. Buat permintaan ke Google Play EMM API.
  2. Terima respons HTTP 429.
  3. Tunggu 2 detik + random_time, lalu coba lagi permintaan tersebut.
  4. Terima respons HTTP 429.
  5. Tunggu 4 detik + random_time, lalu coba lagi permintaan tersebut.
  6. Terima respons HTTP 429.
  7. Tunggu 8 detik + random_time, lalu coba lagi permintaan tersebut.

random_time biasanya berupa angka acak mulai dari -0.5 * waktu tunggu hingga +0.5 * waktu tunggu. Menentukan ulang random_time baru setiap kali Anda mencoba lagi permintaan. Panggilan API yang diperlukan untuk menyelesaikan tindakan yang dihadapi pengguna dapat dicoba ulang dengan jadwal yang lebih sering (misalnya, 0,5 detik, 1, dan 2 detik).

Proses batch batas kapasitas

Setiap kali proses batch mencapai kuota, latensi tindakan pengguna yang memanggil API akan meningkat. Dalam situasi seperti ini, strategi seperti backoff eksponensial mungkin tidak cukup efektif dalam mempertahankan latensi rendah untuk tindakan pengguna.

Agar tidak mencapai batas penggunaan API secara berulang dan meningkatkan latensi untuk tindakan yang dilakukan oleh pengguna, pertimbangkan untuk menggunakan pembatasan kapasitas untuk proses batch Anda (lihat RateLimiter Google). Dengan pembatas kapasitas, Anda dapat menyesuaikan kapasitas permintaan API agar konsisten berada di bawah batas penggunaan.

Misalnya, mulailah proses batch dengan batas kapasitas default 50 QPS. Selama API tersebut tidak menampilkan error, tingkatkan batas kapasitas secara perlahan (1% setiap menit). Setiap kali Anda mencapai kuota, kurangi rasio permintaan Anda sebesar 20%. Pendekatan adaptif ini menghasilkan rasio permintaan yang lebih optimal sekaligus mengurangi latensi untuk tindakan yang berinteraksi pengguna.