ChakraHQChakraHQ

API Sinkron Vs Asinkron

Sebagian besar API yang disediakan Chakra adalah API sinkron (synchronous). Artinya, setelah menerima permintaan API, pemrosesan permintaan akan diselesaikan sebelum respons dikirimkan ke klien. Contoh sederhananya adalah API Pembaruan Proses.

Namun, dalam beberapa situasi, pemrosesan tidak dapat diselesaikan sebelum respons API dikirimkan. Hal ini mungkin karena waktu pemrosesan yang dibutuhkan jauh lebih lama daripada waktu respons API normal kami. Atau, sistem mungkin perlu menunggu peristiwa yang belum terjadi.

Dalam kedua kasus tersebut, API asinkron ini menerima permintaan, meneruskannya ke layanan Pekerjaan Latar Belakang kami, lalu mengembalikan referensi ke pekerjaan tersebut. Dalam kasus ini, klien diharapkan untuk memeriksa kembali nanti guna mengetahui status pekerjaan latar belakang.

API pembaruan proses massal adalah contoh API asinkron seperti ini.

Karakteristik API Sinkron

Kecuali disebutkan lain, API Chakra bersifat sinkron. API sinkron memastikan konsistensi eksekusi saat dipanggil secara sinkron. Contoh:

09:00:00.000PUT /v1/ext/procedure/lead/process/lead_id/LEAD-001{"score": 1}09:00:01.000PUT /v1/ext/procedure/lead/process/lead_id/LEAD-001{"score": 2}09:00:02.000PUT /v1/ext/procedure/lead/process/lead_id/LEAD-001{"score": 3}

Dalam contoh ini, kami memperbarui proses tertentu sebanyak 3 kali secara berurutan. Dalam kondisi ini, skor akhir prospek akan menjadi 3. Ini sesuai harapan karena pembaruan skor terakhir adalah 3.

Namun, jika contoh tersebut diubah dan semua pembaruan dikirim hampir bersamaan tanpa menunggu permintaan sebelumnya selesai:

09:00:00.000PUT /v1/ext/procedure/lead/process/lead_id/LEAD-001{"score": 1}09:00:00.001PUT /v1/ext/procedure/lead/process/lead_id/LEAD-001{"score": 2}09:00:00.002PUT /v1/ext/procedure/lead/process/lead_id/LEAD-001{"score": 3}

Dalam kasus ini, skor akhir prospek bisa menjadi 1, 2, atau 3. Tidak ada cara untuk memprediksi skor akhir prospek setelah semua pembaruan dilakukan. Ini karena ketiga permintaan API akan diterima secara paralel dan dapat mengakibatkan race condition.

Jadi, untuk API sinkron, klien disarankan untuk memastikan sinkronisasi saat mengirim permintaan ke satu sumber daya.

Karakteristik API Asinkron

Untuk API asinkron, payload permintaan diproses di latar belakang sesegera mungkin. API ini akan mengembalikan ID pekerjaan latar belakang yang dapat digunakan untuk melacak status permintaan.

API Asinkron Massal

API asinkron yang menerima data massal, yaitu sejumlah besar subpermintaan, akan berupaya memproses sebanyak mungkin permintaan tersebut secara paralel. Tingkat pemrosesan paralel yang lebih tinggi akan meningkatkan kecepatan pemrosesan.

Karena pemrosesan dilakukan secara paralel, API massal tidak menjamin urutan eksekusi subpermintaan. Oleh karena itu, race condition dapat terjadi jika sumber daya yang sama (proses/tugas/rekaman) disertakan dalam beberapa subpermintaan pada permintaan API yang sama.

Jadi, rencanakan panggilan API massal Anda agar satu sumber daya hanya disertakan dalam satu subpermintaan.

Di halaman ini