ChakraHQChakraHQ

API síncrona vs. assíncrona

A maioria das APIs fornecidas pela Chakra é síncrona. Isso significa que, ao receber uma solicitação de API, o processamento é concluído antes que uma resposta seja enviada ao cliente. Um exemplo simples é a Update Process API.

No entanto, em alguns cenários, não é possível concluir o processamento antes de enviar a resposta da API. Isso pode acontecer porque o tempo necessário para processar é significativamente maior do que o tempo de resposta nominal da nossa API. Também pode ocorrer porque o sistema precisa aguardar um evento que ainda não aconteceu.

Em ambos os casos, esse conjunto de APIs assíncronas aceita a solicitação, envia-a para o nosso serviço de tarefas em segundo plano e retorna uma referência à tarefa. Nesses casos, espera-se que o cliente consulte novamente mais tarde para verificar o status da tarefa em segundo plano.

API de atualização de processos em lote é um exemplo desse tipo de API assíncrona.

Características da API síncrona

A menos que indicado de outra forma, as APIs da Chakra são síncronas. As APIs síncronas garantem a consistência da execução quando chamadas de forma síncrona. Exemplo:

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}

Neste exemplo, atualizamos um processo específico 3 vezes, uma após a outra. Nessas circunstâncias, a pontuação final do lead será 3, como esperado, já que 3 foi a última pontuação definida.

No entanto, se alterarmos o exemplo e enviarmos todas as atualizações quase simultaneamente, sem esperar que as solicitações anteriores sejam concluídas:

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}

A pontuação final do lead, nesse caso, pode ser 1, 2 ou 3. Não há como prever a pontuação final do lead após todas as atualizações. Isso acontece porque as 3 solicitações de API serão aceitas em paralelo e resultarão em uma condição de corrida.

Por isso, no caso de APIs síncronas, recomendamos que o cliente garanta a sincronização ao fazer solicitações para um único recurso.

Características da API assíncrona

Nas APIs assíncronas, o conteúdo da solicitação é processado em segundo plano assim que possível. Essas APIs retornam um ID de tarefa em segundo plano, que pode ser usado para acompanhar o status da solicitação.

APIs assíncronas em lote

As APIs assíncronas que aceitam dados em lote, ou seja, um grande número de solicitações menores, tentam processar o máximo possível dessas solicitações em paralelo. Quanto maior o nível de processamento paralelo, mais rápido será o processamento.

Como o processamento é feito em paralelo, as APIs em lote não garantem a ordem de execução das solicitações menores. Por isso, podem ocorrer condições de corrida se o mesmo recurso (processo/tarefa/registro) fizer parte de várias solicitações menores na mesma solicitação de API.

Por isso, planeje suas chamadas de API em lote para garantir que cada recurso faça parte de apenas uma solicitação menor.

Nesta página