Skip to content

alina3657362/distributed-storage

Repository files navigation

Распределенное Хранилище Данных

Этот проект представляет собой реализацию распределенного хранилища данных, использующего консистентное хеширование для распределения данных по узлам (нодам).

Основные Команды

1. PUT <key> <value> - cохраняет данные на узлах-репликах.

  • <key>: Ключ, по которому будут сохранены данные.
  • <value>: Значение, которое нужно сохранить.

2. GET <key> - получает данные по заданному ключу.

  • <key>: Ключ, по которому будут сохранены данные.

3. DELETE <key> - удаляет данные по заданному ключу.

  • <key>: Ключ, по которому будут сохранены данные.

4. CLOSE - завершает работу системы распределенного хранилища.

Описание классов и основных методов

'ConsistentHashing'

реализует механизм консистентного хеширования для распределения данных по узлам.
  • get_hash(key: str) -> int: вычисляет хеш для заданного ключа.

  • add_node(self, node: Node) -> None: добавляет узел в кольцо консистентного хеширования.

  • get_replicas(self, key: str, count: int) -> list[Node] | None: возвращает список реплик для заданного ключа.

'Node'

представляет собой узел в распределенной системе хранения данных.
  • store(self, key: str, value: bytes) -> None: сохраняет данные на узле.

  • get(self, key: str) -> bytes: получает данные по заданному ключу.

  • delete(self, key: str) -> None: удаляет данные по заданному ключу.

  • get_hash(key: str) -> int: вычисляет хеш для заданного ключа.

'NodeHandler'

обрабатывает HTTP-запросы к узлу.
  • do_PUT(self): обрабатывает PUT-запросы для сохранения данных.

  • do_GET(self): обрабатывает GET-запросы для получения данных.

  • do_DELETE(self): обрабатывает DELETE-запросы для удаления данных.

  • log_message(self, format, *args): переопределяет метод логирования для отключения вывода логов.

DistributedStorage

управляет распределенным хранилищем данных.
  • start(self): запускает систему распределенного хранилища.

  • get_replicas(self, key: str, replicas=2) -> list[Node]: возвращает список реплик для заданного ключа.

  • process_request(self, request: Request) -> str: обрабатывает запрос пользователя.

  • put_data(request: Request, replicas: list[Node]) -> str: сохраняет данные на указанных репликах.

  • get_data(request: Request, replicas: list[Node]) -> str: получает данные с указанных реплик.

  • delete_data(request: Request, replicas: list[Node]) -> str: удаляет данные с указанных реплик.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages