Google Play EMM API memiliki batas default 60.000 kueri per menit untuk setiap EMM.
Jika Anda melebihi kuota, Google Play EMM API akan menampilkan HTTP 429 Too Many Requests
.
Untuk membantu memastikan bahwa Anda tidak melebihi batas penggunaan yang dinyatakan dan menawarkan pengalaman yang optimal bagi
pengguna, pertimbangkan untuk menerapkan beberapa praktik terbaik yang dijelaskan di bagian bawah.
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 melebihi batas penggunaan.
Mengacak waktu mulai dan interval
Aktivitas seperti menyinkronkan atau memeriksa masuk perangkat secara bersamaan kemungkinan akan menyebabkan peningkatan volume permintaan yang signifikan. Daripada melakukan aktivitas ini pada interval yang terjadwal secara rutin, Anda dapat mendistribusikan beban permintaan dengan melakukan pengacakan 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 pada waktu acak setiap hari untuk mencegah pembuatan permintaan dalam volume tinggi untuk semua pelanggan perusahaan Anda secara bersamaan.
Menggunakan backoff eksponensial untuk mencoba ulang permintaan
Jika Anda menjalankan tugas yang terdiri dari banyak panggilan API, gunakan strategi backoff eksponensial sebagai respons atas tercapainya kuota. Backoff eksponensial adalah algoritma yang mencoba ulang permintaan secara eksponensial. Contoh alur untuk mengimplementasikan backoff eksponensial sederhana adalah sebagai berikut:
- Buat permintaan ke Google Play EMM API.
- Menerima respons
HTTP 429
. - Tunggu 2 detik +
random_time
, lalu coba lagi permintaan tersebut. - Terima respons
HTTP 429
. - Tunggu 4 detik +
random_time
, lalu coba lagi permintaan tersebut. - Terima respons
HTTP 429
. - Tunggu 8 detik +
random_time
, lalu coba lagi permintaan tersebut.
random_time
biasanya berupa angka acak yang berkisar dari -0,5 * waktu tunggu
hingga +0,5 * waktu tunggu. Tentukan ulang random_time
baru setiap kali Anda mencoba ulang
permintaan. Panggilan API yang diperlukan untuk menyelesaikan tindakan yang ditampilkan kepada pengguna dapat dicoba lagi dengan jadwal yang lebih sering (misalnya, 0,5 detik, 1 detik, dan 2 detik).
Proses batch pembatasan 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.
Untuk menghindari batas penggunaan API yang tercapai berulang kali dan meningkatkan latensi untuk tindakan yang ditampilkan kepada pengguna, sebaiknya gunakan pembatas kapasitas untuk proses pengelompokan Anda (lihat RateLimiter Google). Dengan pembatas kapasitas, Anda dapat menyesuaikan kapasitas permintaan API sehingga Anda secara konsisten tetap berada di bawah batas penggunaan.
Misalnya, mulai proses batch dengan batas kapasitas default 50 QPS. Selama API tidak menampilkan error, tingkatkan batas kapasitas secara perlahan (1% setiap menit). Setiap kali Anda mencapai kuota, kurangi frekuensi permintaan Anda sebesar 20%. Pendekatan adaptif ini menghasilkan rasio permintaan yang lebih optimal sekaligus mengurangi latensi untuk tindakan yang ditampilkan kepada pengguna.