Почему Kafka считается более стабильным по сравнению с REST, разве концепция ответов REST не совпадает с концепцией подтверждения в Kafka?





Причина в том, что Kafka принимает сообщения независимо от какой-либо бизнес-логики. Данные, которые вы отправляете в Kafka (в конечном итоге), должны соответствовать определенной схеме, которая аналогична проверке схемы для большинства интерфейсов RESTful, но это все.
Однако при вызове конечной точки REST существует множество причин, по которым запрос возвращает код !=200, следовательно, он не увенчался успехом. Речь идет не только о доступности, но и о недействительных разрешениях, недопустимых операциях, семантически неправильных запросах (попытка изменить несуществующий объект), дросселировании/ограничении скорости, длительном времени обработки и таймаутах для дорогостоящей обработки на стороне бэкенда. Чтобы избежать потери данных, все эти случаи необходимо обрабатывать повторными попытками, что может привести к блокировке.
Kafka помогает отделить доставку данных от выполнения бизнес-логики или сохранения данных. Если серверная часть находится под нагрузкой, доставка сообщений не будет блокироваться и создавать противодавление, а сообщения будут поставлены в очередь в теме Kafka. Проблемы могут решаться независимо от производителя, а фактическая обработка (или доставка в конечную точку RESTful) может управляться потребителем более контролируемым образом.
По сути, это разница между синхронными и асинхронными интерфейсами.
Подтверждения Кафки — это конфигурация на стороне производителя. Если вы хотите отправить данные в Kafka, вы можете
Подтверждение Kafka не работает по HTTP и имеет собственный механизм двоичного TCP.
Однако ответ REST (я предполагаю, что вы говорите о кодах состояния HTTP) — это способ вернуть подтверждение в традиционной архитектуре клиент-сервер. Это означает, что сервер решает, как он хочет обработать ваш запрос, и отправляет ответ.
На мой взгляд, неправильно говорить, что акк Кафки более стабилен. По своему вкусу он отличается от REST API.