API síncrona vs. asíncrona
La mayoría de las API que ofrece Chakra son síncronas. Esto significa que, al recibir una solicitud de API, el procesamiento de la solicitud se completa antes de que se devuelva una respuesta al cliente. Un ejemplo sencillo es la API Update Process.
Sin embargo, en ciertos casos no es posible completar el procesamiento antes de enviar la respuesta de la API. Esto puede deberse a que el tiempo necesario para procesar la solicitud supera considerablemente nuestro tiempo de respuesta habitual de la API. También puede deberse a que el sistema tenga que esperar un evento que aún no ha ocurrido.
En ambos casos, estas API asíncronas aceptan la solicitud, la envían a nuestro servicio de trabajos en segundo plano y devuelven una referencia a ese trabajo. En estos casos, se espera que el cliente vuelva más tarde para consultar el estado del trabajo en segundo plano.
La API Bulk process update es un ejemplo de este tipo de API asíncrona.
Características de las API síncronas
A menos que se indique lo contrario, las API de Chakra son síncronas. Las API síncronas garantizan la coherencia de la ejecución cuando se invocan de forma síncrona. Ejemplo:
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}En este ejemplo, actualizamos un proceso específico 3 veces, una después de otra. En estas circunstancias, la puntuación final del Lead será 3, como se espera, ya que 3 fue la última puntuación actualizada.
Sin embargo, si cambiamos el ejemplo y enviamos todas las actualizaciones casi al mismo tiempo, sin esperar a que se completen las solicitudes anteriores:
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}En este caso, la puntuación final del Lead podría ser 1, 2 o 3. No hay forma de predecir cuál será la puntuación final del Lead después de todas las actualizaciones. Esto se debe a que las 3 solicitudes de API se aceptarán en paralelo y producirán una condición de carrera.
Por lo tanto, al usar API síncronas, se recomienda que el cliente garantice la sincronización al enviar solicitudes a un mismo recurso.
Características de las API asíncronas
En el caso de las API asíncronas, la carga útil de la solicitud se procesa en segundo plano lo antes posible. Estas API devuelven un ID de trabajo en segundo plano que se puede usar para hacer seguimiento del estado de la solicitud.
API asíncronas masivas
Las API asíncronas que aceptan datos masivos, es decir, un gran número de subsolicitudes, intentan procesar en paralelo tantas solicitudes como sea posible. Un mayor nivel de procesamiento paralelo aumenta la velocidad del procesamiento.
Debido al procesamiento en paralelo, las API masivas no garantizan el orden de ejecución de las subsolicitudes. Por eso, pueden producirse condiciones de carrera si el mismo recurso (proceso/tarea/registro) forma parte de varias subsolicitudes en una misma solicitud de API.
Por lo tanto, planifica tus llamadas a las API masivas para asegurarte de que cada recurso forme parte de una sola subsolicitud.