Распределённые системы, микросервисы Для поддержания согласованности применяются паттерны Event Sourcing и CQRS Применение асинхронного взаимодействия на основе событий (event-driven architecture) Использование…
Проектирование gRPC API с сохранением backward compatibility gRPC API описывается с помощью Protocol Buffers (proto) Не удаляйте существующие поля — добавляйте новые, назначая им уникальные номера для расширения схемы…
В Go применяется параллельный конкурентный GC В основе лежит трёхфазный алгоритм: маркировка (tracing), приостановка мира и очистка На этапе маркировки GC определяет объекты, которые остаются достижимыми…
Основные архитектурные подходы: монолит, микросервисы, SOA и event-driven Монолит: приложение представляет собой единое целое, все компоненты работают в одном процессе. Такой вариант упрощает разработку и деплой, но…
Гарантии доставки в Kafka Kafka — распределённая очередь сообщений, рассчитанная на высокую доступность. В Kafka предусмотрены три режима доставки: at most once — сообщение доставляется без подтверждения, поэтому оно…
Какие задачи решает ClickHouse? колоночная СУБД для аналитики в реальном времени быстро обрабатывает большие объёмы данных предоставляет SQL-подобный язык запросов эффективен для агрегаций и фильтрации по столбцам…
Недостатки микросервисной архитектуры разработка и сопровождение становятся сложнее: каждым сервисом необходимо управлять отдельно распределённую отладку и мониторинг усложняет большое количество взаимодействующих…
Основные виды коммуникации между сервисами синхронная (HTTP REST, gRPC) — взаимодействие по модели «запрос-ответ», при котором вызывающий сервис блокируется асинхронная (сообщения в очередях, Kafka, RabbitMQ) —…
Зачем Go runtime использует “work stealing” и как устроена эта модель? concurrency model Go (Goroutine scheduler) сокращение простоя CPU за счёт динамической балансировки нагрузки каждый P (processor) располагает…
Проблема согласованности RabbitMQ и транзакций Контекст: RabbitMQ интегрирован с транзакциями базы данных Суть: коммит БД и публикация сообщения могут произойти несогласованно Основной риск: сообщение будет…
Контекст: обработка исключений в Go, concurrency panic аварийно прекращает выполнение текущей горутины если panic не перехвачен через recover, горутина завершится с ошибкой остальная программа продолжит выполняться,…
CAP-теорема: согласованность, доступность и устойчивость к разделению теория распределённых систем, связанная с консенсусом и отказоустойчивостью согласованность (Consistency): после обновления все узлы сразу…