Начну со сцены, которую видел каждый, кто эксплуатировал платёжный сервис хотя бы год.Клиент нажимает «Оплатить». Приложение отправляет POST /payments. Проходит пять секунд, и HTTP-клиент падает по таймауту. Ретрай-политика, которую кто-то настроил год назад по гайду, ждёт двести…
Retry и timeout кажутся базовыми механизмами отказоустойчивости. Не прошел запрос — повторим. Ответ не пришел за 500 мс — оборвем. Кажется, что этого достаточно, чтобы система стала надежнее.На практике в распределенных системах retry и timeout могут работать наоборот. Когда сервис уже…
Идемпотентность в System Design: полный примерИдемпотентность часто упоминается при проектировании систем (system design). Ниже будет простыми словами объяснено, что это такое, далее мы разберём основные детали идемпотентности, часто понимаемые неверно и, наконец, проиллюстрируем её на полном примере. Что такое идемпотентность?Операция является идемпотентной, если при однократном или многократном выполнении она всякий раз даёт один и тот же результат. Читать далее
Неблокирующий повтор (retry) в Java и проект Loom Введение Повтор (retry) операции является старейшим механизмом обеспечения надежности программного обеспечения. Мы используем повторы при выполнении HTTP запросов, запросов к базам данных, отсылке электронной почты и проч. и проч. Читать дальше →