Por que o Kafka é considerado mais estável em comparação ao REST? O conceito de respostas REST não é igual ao conceito de confirmação no Kafka?
Por que o Kafka é considerado mais estável em comparação ao REST? O conceito de respostas REST não é igual ao conceito de confirmação no Kafka?
A razão é que Kafka aceita mensagens independentemente de qualquer lógica de negócios. Os dados que você envia para o Kafka (eventualmente) devem estar em conformidade com um esquema específico, que é semelhante à validação de esquema para a maioria das interfaces RESTful, mas isso é tudo.
No entanto, ao chamar um endpoint REST, há muitos motivos para uma solicitação retornar o código! = 200, portanto, sem sucesso. Não se trata apenas de disponibilidade, mas também de permissões inválidas, operações inválidas, solicitações semanticamente erradas (tentativa de alterar um objeto que não existe), limitação/limitação de taxa, longos tempos de processamento e tempos limite para processamento caro no back-end. Para evitar a perda de dados, todos estes casos precisam ser tratados por meio de novas tentativas, o que pode levar a um comportamento de bloqueio.
Kafka ajuda a dissociar a entrega de dados da execução da lógica de negócios ou da persistência de dados. Se o back-end estiver sobrecarregado, a entrega da mensagem não será bloqueada e criará contrapressão, mas as mensagens serão enfileiradas em um tópico Kafka. Os problemas podem ser resolvidos independentemente de um produtor e o processamento real (ou entrega ao endpoint RESTful) pode ser gerenciado por um consumidor de forma mais controlada.
É basicamente a diferença entre interfaces síncronas e assíncronas.
Os acks de Kafka são configurações do lado do produtor. Quando você deseja enviar dados para Kafka você pode ter
O ack do Kafka não funciona em HTTP e possui seu próprio mecanismo TCP binário .
No entanto, a resposta REST (suponho que você esteja falando sobre códigos de status HTTP) é uma forma de retribuir na arquitetura cliente-servidor tradicional. Isso significa que o servidor decide como deseja processar sua solicitação e envia uma resposta.
Na minha opinião, não é correto dizer que o ack de Kafka é mais estável. Tem um sabor diferente das APIs REST.