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

21 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Пример шардирования
Обычно под шардированием понимают "распределение чего-либо по множеству узлов (*шардов*) детерминированно и постоянно для указанного ключа". Например, шардирование данных в key-value хранилище обычно происходит на основе ключа. Шардирование запросов между http серверами может происходить на основе имени пользователя или его id. Такое свойство обычно называют *ключом шардирования*.
В этом примере написан самый простой пример шардирования запросов: в словаре указываются url куда слать запрос и имена серверов. Ниже указан список ключей для проверки алгоритма шардирования. Для каждого ключа скрипт выбирает сервер и отправляет на него get запрос, после чего печатает результат в *stdout*.
Запуск:
```bash
# 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. Посмотреть на результаты, что для указанного списка ключей запросы были сделаны на разные сервера
```