Распределённые системы
Распределённый капстоун: проверка с выбором ответа
Шесть вопросов, прорезающих весь трек. Каждый — решение, которое дежурный инженер принимает, когда пайплайн из по отдельности корректных сервисов всё равно выдаёт неверное число в выписке клиента. Ни один из них не определение для зубрёжки.
Убедись, что умеешь соединить кворумную репликацию, выборы лидера с fencing, логические часы, компенсации саги и дисциплину ретраев в одну систему — и найти шов, где два корректных слоя складываются в баг.
Пайплайн заказа из четырёх сервисов иногда дважды возвращает деньги клиенту. Каждый сервис проходит свои юнит-тесты; платёжный идемпотентен для списаний; сага образцовая; у ретраев есть backoff и jitter. Где живёт баг?
Оркестратор саги работает как избранный лидер. Он попадает в долгую паузу GC, его lease истекает, выбирается новый лидер — и тут старый просыпается и пытается записать шаг саги. Что реально мешает ему повредить состояние, которое новый лидер уже продвинул?
Коллега предлагает упорядочивать шаги саги между сервисами сравнением wall-clock меток (Date.now()), чтобы держать порядок 'Payment до Shipping'. Почему сеньор это отвергает и какой механизм верный?
Почему идемпотентность называют несущим примитивом пайплайна, а не просто одной из защит среди многих?
Шторм ретраев усиливает мелкий сбой вниз по стеку до полного отказа: каждый слой повторяет слой под собой. Каков структурный фикс и какое число его якорит?
Каждый дашборд сервиса зелёный, а пайплайн молча подводит клиентов. За каким набором сигналов сеньор реально следит, чтобы ловить провалы композиции?
Сквозная линия трека — одно дерево решений: кворум делает запись долговечной, лидер с fencing-токенами делает координацию безопасной для single-writer, логические часы упорядочивают шаги причинно, саги откатывают компенсациями, потому что распределённого ACID нет, а ретраям нужен бюджет, чтобы сбой не усилился. Идемпотентность по бизнес-намерению — несущий примитив, делающий at-least-once безопасным повсюду. Реальные провалы живут в швах — ретрай, заново стреляющий компенсацией без общего ключа — и ловишь ты их на сигналах швов, а не на зелёных дашбордах на сервис.