Найти в Дзене
System Design

System Design

Подборка статьей для проектирования систем
подборка · 5 материалов
Сравнение возможностей разных "ГеоБД"
PostgreSQL с POSTGIS особо не буду упоминать из-за отсутствия горизонтального масштабирования из под "коробки". Геопоиск по радиусу: Геопоиск по полигону: Нахождение расстояния между точками: Все эти БД умеют в запросах определять расстояние от координат пользователя до хранящихся точек на заданном полигоне/радиусе. Но именно находить расстояние между двумя точками: Если нужно построение оптимальных...
211 читали · 1 год назад
Поиск самого ближайшего узла к пользователю в распределенной системе (GeoDNS vs Anycast)
В CDN применяется два метода для определения самого близкого узла к пользователю, в этой статье расскажем о GeoDNS, Anycast и нюансы их работы. · Anycast – выбирает наиболее эффективные маршруты для доставки интернет-трафика. · GeoDNS – определяет ближайший узел по местоположению запроса. Обычно GeoDNS и Anycast нецелесообразно использовать вместе, если у вас не самая крупная система в мире или если нет бюджета на поддержание всей этой инфраструктуры. Выберите один метод, который больше всего подходит для вашей системы...
Задержки в Kafka и перебалансировка (rebalancing)
В Kafka есть механизм отправки сообщения батчами Продюсером. Когда Продюсер отправляет сообщения в Kafka, он может объединять их в батчи. Батчи помогают уменьшить нагрузку, так как вместо множества мелких запросов обрабатывается один крупный (снижение нагрузки на сеть, экономия ресурсов), но и влияют на задержки доставки сообщений Потребителям. Батч формируется на основе двух параметров: · linger.ms: Время ожидания (в миллисекундах) перед отправкой батча. Если за это время накопились сообщения, то они отправляются как один батч. · batch.size: Максимальный размер батча (в байтах). Если размер накопленных сообщений достигает этого значения, батч отправляется немедленно...
Разбор проблем и понятий по масштабированию БД
Failover – это переключение Мастер узла, когда одна из Реплик берет на себя ответственность Мастера, когда текущий Мастер упал. Для этого Реплика должна хранить одни и те же данные с Мастером, реализовать это нужно с помощью синхронной репликации. Hot standby – Реплика которая использует синхронную репликацию и хранит одни и те же данные, что и Мастер. А также он готов взять на себя ответственность если мастер из сети пропадет. Split Brain – возвращение мертвеца. Когда сервис восстановился после того как пропал из сети и снова попал в кластер. В такой момент в кластере есть 2 МАСТЕРА. В такой...
Raft Алгоритм для распределенного консенсуса - несколько серверов будут совместно решать о том, произошло ли событие или нет, а также синхронизироваться на основе "логов". Сервер может находить в одним из этих состояний: Лидер - используется для записи и занимается отправкой "логов" "Фолловерам". Фолловер - сервер, который только читает новые записи "логов" от "Лидера", также отправляет входящие запросы от клиентов на "Лидера" (hot-standby реплика "Лидера"). Кандидат - состояние сервера, когда данный сервер может быть выбран в качестве нового "Лидера". Исходник