Разработчики провели практический эксперимент. Они сравнили две архитектуры — синхронную RPC и асинхронную событийную. Системы тестировали под пиковой нагрузкой.
Симулировали переменные задержки и временные сбои. Добавляли всплески трафика. Наблюдали за поведением систем.
Синхронные запросы создают цепную реакцию. Один сбойный сервис тянет за собой другие. Система быстро выходит из строя.
Асинхронная архитектура работает иначе. Сообщения попадают в очередь. Система обрабатывает их по мере возможности.
Повторные запросы — главная проблема. Они увеличивают нагрузку на нездоровый сервис. Это похоже на снежный ком.
Инженеры используют защитные механизмы. Экспоненциальная задержка между повторами. Автоматические выключатели для больных сервисов.
Результаты измеряли метриками. Задержка в хвосте распределения. Количество повторных попыток. Сообщения в очереди мёртвых писем.
Выбор архитектуры — это компромисс. RPC даёт мгновенный ответ. Событийная система жертвует скоростью ради устойчивости.