Files
hse-2026/materials/08-scaling/seminar/simple-sharding
2026-11-04 19:23:39 +03:00
..
2026-11-04 19:23:39 +03:00
2026-11-04 19:23:39 +03:00

Пример шардирования

Обычно под шардированием понимают "распределение чего-либо по множеству узлов (шардов) детерминированно и постоянно для указанного ключа". Например, шардирование данных в key-value хранилище обычно происходит на основе ключа. Шардирование запросов между http серверами может происходить на основе имени пользователя или его id. Такое свойство обычно называют ключом шардирования.

В этом примере написан самый простой пример шардирования запросов: в словаре указываются url куда слать запрос и имена серверов. Ниже указан список ключей для проверки алгоритма шардирования. Для каждого ключа скрипт выбирает сервер и отправляет на него get запрос, после чего печатает результат в stdout.

Запуск:


# 1. Запустить какие-то сервера, которые будут принимать запрос. Например, [hello-world](../nginx-balancing/README.md) из примера с nginx или [key-value](../kv/README.md) из примера с шардированием ключей.
cd ../nginx-balancing
docker compose up

# 2. Поправить словарь shards, добавить туда свои url (если они отличны от уже указанных)

# 3. Запустить скрипт, выполняющий запросы
python3 client.py

# 4. Посмотреть на результаты, что для указанного списка ключей запросы были сделаны на разные сервера