Статья опубликована в рамках: XLVI Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 07 июня 2018 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
РЕАЛИЗАЦИЯ РАСПРЕДЕЛЕННОЙ ХЭШ-ТАБЛИЦЫ С ПОМОЩЬЮ ТЕХНОЛОГИИ REMOTE PROCEDURE CALL
Распределенная хэш-таблица (далее DHT) — это класс децентрализованных распределённых систем поисковой службы, работающей подобно хэш-таблице. Как структура данных, хэш-таблица может представлять собой ассоциативный массив, содержащий пары (ключ-значение). (из вики) Классические DHT должны реализовывать 3 основные функции работы с данными:
- Get(key)
- Delete(key)
- Insert(key, value)
Рассмотрим каждую из них подробонее:
- Get(key) – функция, которая возращает значение, которой соответствует заданный ключ (key).
- Delete(key) – функция, удаляющая значение по соответствующему ключу
- Insert(key, value) – функция, добавляющая в таблицу заданное значение по заданному ключу.
Так как DHT является распределенной системой, то требуется чтобы каждый узел системы мог реализовывать эти функции, а так же общаться с другими узлами системы. Для этих целей обычно используют самописные сетевые протоколы обмена информации, проблема заключается в том, что такие написание и отладка таких протоколов стоит много ресурсов и усложняет разработку в несколько раз. Как альтернативу таким протоколам можно использовать технологию Remote Call Procedure (RPC) — класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых компьютерах). Обычно реализация RPC-технологии включает в себя два компонента: сетевой протокол для обмена в режиме клиент-сервер и язык сериализации объектов (или структур, для необъектных RPC) (из вики).
Для реализации DHT был выбран gRPC – высокопроизводительная универсальная RPC-инфраструктура с открытым кодом от компании Google.
Для «общения» между узлами gRPC использует Protocol Buffers (Protobuf).
Protocol Buffers — протокол сериализации (передачи) структурированных данных, предложенный Google как эффективная бинарная альтернатива текстовому формату XML.
Рисунок 1. Схема работы gRPC
Реализуем протокол для общения узлов DHT на «языке» Protobuf:
Данное представление протокола общения имеет множество плюсов, относительно самописного:
- Расширяемость - легко добавить или убрать одно из сообщений
- Легкость сериализации сообщения для отправления\получения через сеть - gRPC автоматически сериализовывает сообщения protobuf в удобное для отправки по сети вид
- Удобство – псевдоязык Protobuf является самодокументированным
Далее реализуем процедуры «узла gRPC» :
Мы определили 3 функции, которые будут вызываться при получении определенного сообщения, формировать результат в «ответное» сообщение и отправляться обратно отправителю.
Рисунок 2. Протокол DHT
Таким образом мы определили протокол для «общения» узлов DHT.
Вывод: Технология RPC позволяет упростить разработку распределенных систем за счет встроенной сериализации и управлением подключений узлов, так же удобство реализации распределенной системы через RPC заключается в легкости расширения протокола и высокой производительности.
Список литературы:
- Распределённая хеш-таблица // Википедия – свободная энциклопедия [Электронный ресурс]. - URL: https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D0%B0%D1%8F_%D1%85%D0%B5%D1%88-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0 (дата обращения: 31.05.2018)
- Protocol Buffers // Википедия – свободная энциклопедия [Электронный ресурс]. - URL: https://ru.wikipedia.org/wiki/Protocol_Buffers (дата обращения: 31.05.2018)
- gRPC [Электронный ресурс]. - URL: https://grpc.io/about/#osp (дата обращения: 31.05.2018)
дипломов
Оставить комментарий