System Design: вопросы с ответами
12 разобранных вопросов по теме «System Design». Каждый — с правильным ответом и пояснением.
- CAP-теорема. В финтехе что важнее?
При партиционировании выбираем между Consistency и Availability. В платежах обычно C > A (лучше отказать, чем списать дважды).
- Что такое Client-side Load Balancer?
Round-robin → retry → circuit breaker. Обсудить: health checks, backoff, fallback. Реальная задача Middle в Путешествиях.
- SOLID — разобрать каждый принцип?
SRP (одна причина для изменения), OCP (расширение без модификации), LSP (подтипы взаимозаменяемы), ISP (мелкие интерфейсы), DIP (зависимость от абстракций).
- Кейс: два дата-центра, один упал. Как балансировщик узнает?
Health checks: HTTP GET /health каждые N секунд. Если 3 подряд неуспешных → убрать из ротации. Service Discovery (Eureka/Consul): сервис регистрируется, посылает heartbeat. Если heartbeat пропал → deregister.
- Кейс: сервис A — 1000 TPS, сервис B — 200 TPS. Как защитить B?
Rate limiter на стороне A (ограничить исходящие). Kafka как буфер: A пишет в топик → B читает со своей скоростью (backpressure). Circuit Breaker: при перегрузке B → A получает fallback.
- Кейс: сеть «моргнула» на 2 секунды. Что делать?
Retry с exponential backoff + jitter (не все клиенты ретраят одновременно). Circuit Breaker: после N ошибок → OPEN (не шлём запросы) → HALF_OPEN (тестовый) → CLOSED. Idempotency-Key: чтобы retry не создал дубль.
- Что такое Распределённый rate limiter?
Token Bucket vs Sliding Window Log. Redis + Lua-скрипт для атомарности. Обсудить: точность vs производительность.
- Что такое Сервис бронирования отелей?
Поиск с динамическими ценами. Outbox-паттерн для финансовых операций. Идемпотентность платежей. Партнёрские интеграции через API Gateway.
- Что такое Сервис коротких ссылок?
base62 с 62^7 ≈ 3.5 трлн. Redis-кэш популярных. Расчёт: чтения/записи 100:1. Шардирование по хэшу ключа.
- Сервис метрик (Prometheus-like)?
Time-series DB. Ingestion: push (StatsD) vs pull (Prometheus). Downsampling для старых данных. Retention policy.
- Что такое Спроектируй балансировщик нагрузки?
Компоненты: health checker, routing table, connection pool. Алгоритмы: round-robin, weighted, least-connections, consistent hashing. Отказоустойчивость: active-standby (VRRP), hot reload конфигурации.
- Что такое Яндекс Go / такси-сервис?
Геоиндекс (Geohash/H3), matching-сервис, партиционирование по городам, eventual consistency геопозиций.