Взвешенная модификация алгоритма Round-Robin в задаче параллельного экспорта файлов | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 30 ноября, печатный экземпляр отправим 4 декабря.

Опубликовать статью в журнале

Библиографическое описание:

Взвешенная модификация алгоритма Round-Robin в задаче параллельного экспорта файлов / В. Ю. Петров, А. В. Мазова, В. С. Костыренко [и др.]. — Текст : непосредственный // Молодой ученый. — 2019. — № 25 (263). — С. 33-36. — URL: https://moluch.ru/archive/263/61057/ (дата обращения: 19.11.2024).



В статье описывается модифицированная версия алгоритма Round-Robin, применяемая в задаче параллельного экспорта файлов внутри распределенной системы хранения данных.

Ключевые слова: параллельный экспорт файлов, Round-Robin, распределенная система хранения данных.

Постановка задачи: есть распределенная система хранения данных, которая, помимо хранения, может экспортировать файлы с одного на N узлов. Необходимо оптимизировать процесс передачи файлов, а именно, минимизировать время простоя узла- источника.

Базовый алгоритм «ROUND_ROBIN» заключается в следующем: на вход исходному узлу (далее SRC_NODE) приходит множество файлов. Он разбивает их на пачки определенного размера, и передает на N конечных узлов (далее i-й конечный узел будем называть DEST_NODE_i).

Рис. 1. Схема распределения файлов по алгоритму ROUND_ROBIN

Пачка распределяется равномерно, по алгоритму ROUND_ROBIN — по кругу каждый файл назначается на свой DEST_NODE. Если количество DEST_NODE'ов меньше числа файлов, то после того как было распределено N файлов, DEST_NODE'ы начинаются сначала, то есть, N+1 файл уйдёт на DEST_NODE_1 и так далее. До тех пор, пока экспорт всех файлов не завершится, SRC_NODE простаивает в ожидании, так как должен получить ответ от всех N DEST_NODE'ов.

Минус базового алгоритма: DEST_NODE'ы могут располагаться на разных по мощности машинах, и в случае если один из них будет слишком долго принимать файлы, или, того хуже, зависнет, вызывающая сторона очень долго не сможет узнать об этом.

Решение

В качестве решения была выбрана модификация — «взвешенный ROUND_ROBIN». Суть алгоритма заключается в присвоении каждому из DEST_NODE'ов некоторой оценки качества его работы. Оценка качества проводится с периодом T. За это время, собирается статистика работы принимающих узлов: как быстро и успешно ли прошёл экспорт, какой из узлов отказался принимать файл и так далее.

Во время T происходит обработка полученной статистики, и на её основе, с помощью описанных далее метрик, определяется значение «веса» того или иного узла. Чем выше вес — тем больше файлов будет экспортировано на этот узел, и наоборот. Это сделано с целью уменьшить среднее по узлам время, затрачиваемое на экспорт, что, соответственно, уменьшает время простаивания SRC_NODE'а.

Помимо этого, измерение веса одного узла относительно других позволяет сделать вывод об его эффективности. В случае, если один из узлов показывает очень плохие результаты и сильно тормозит общий экспорт, он автоматически отключается, и далее экспорт будет происходить на оставшиеся N-1 узлов.

Алгоритм изменения веса

На каждом этапе изменения веса предполагается, что следующий вес никоим образом не зависит от предыдущих, а новый высчитывается лишь исходя из собранной за текущий период Tk статистики по узлам.

Введём следующие обозначения:

N — текущее количество узлов, на которые происходит экспорт

ti = {ti1, ti2, …, tiki} — множество значений времени экспорта на узел i файлов в количестве ki, i = 1,…,N.

Тогда можем посчитать toi = ti1 + ti2 + … + tiki суммарное время, затраченное на экспорт на i-тый DEST_NODE.

Теперь можем посчитать среднее время экспорта среди всех узлов, как:

k = k1 + k2 + … + kN — количество успешно отправленных файлов. Величина τ понадобится нам в дальнейшем.

Также нам понадобится средняя скорость передачи файлов:

Наконец, вычислим новое значение для желаемого количества передаваемых узлов файлов, как:

здесь полускобки — взятие числа без остатка.

Данные веса , i=1,…,N подошли бы нам в случае, если бы число экспортируемых файлов было равно число экспортированных файлов за предыдущий период T. Наша же задача — сделать оптимальный экспорт каждой из пачек файлов. Так что полученные значения необходимо нормализовать.

Рис. 2. Архитектура программной реализации алгоритма

Будем считать, что число файлов p в каждой из пачек примерно одинаково и равно усредненному значению между пачками за предыдущий период, о чем мы тоже знаем из собранной статистики.

Тогда можем сделать вывод, что в каждой пачке должно быть количество файлов, равное:

где C — фиксированный коэффициент. При нормировании он будет равен:

Тогда новые, нормированные веса будут равны:

На рисунке 2 можно увидеть архитектуру модулей, необходимых при реализации данного решения.

Литература:

  1. Соболева О. Н. и др. Разработка приложения для балансировки нагрузки на комплексе серверов виртуальных машин: магистерская диссертация по направлению подготовки: 02.04. 02-Фундаментальная информатика и информационные технологии. — 2016.
  2. https://en.wikipedia.org/wiki/Round-robin_scheduling
  3. https://en.wikipedia.org/wiki/Weighted_round_robin
Основные термины (генерируются автоматически): узел, файл, распределенная система хранения данных, базовый алгоритм, оценка качества, параллельный экспорт файлов, пачка, предыдущий период, число файлов, экспорт.


Ключевые слова

параллельный экспорт файлов, Round-Robin, распределенная система хранения данных

Похожие статьи

Метод желаемой логарифмической частотной характеристики для синтеза регулятора в системе управления

В статье рассматривается метод синтеза регулятора для заданного объекта управления, и его моделирование с помощью встроенных приложений в MATLAB.

Неформальный алгоритм сортировки файла с применением битового сжатия в языке программирования C++

В статье автор рассматривает сортировку файла при помощи битового массива на C++. А также сравнивает затраты оперативной памяти без использования битового массива.

Реализация алгоритма поиска ближайших объектов с помощью K-D tree

В данной статье разработан алгоритм поиска ближайших объектов с помощью вспомогательной структуры, основанной на K-D tree, а также рассматривается приложение на языке Java, реализующее данный алгоритм.

Разработка приложения для решения задачи о максимальном потоке

В статье представлена процесс разработки пользовательского приложения, решающего задачу поиска максимального потока алгоритмами Форда-Фалкерсона и Эдмонса-Карпа.

Реализация поиска минимума функции методом градиентного спуска в среде MatLab

В данной статье описана реализация метода градиентного спуска в программе MatLab.

Многопоточность в языке Swift

В статье рассмотрим основной способ выполнять код асинхронно, который используется в iOS приложениях. Подробно разобран основной функционал Grand Central Dispatch (GCD) и сценарии, в которых можно реализовать многопоточность с его помощью.

Использование байесового сетевого подхода для управления транспортным потоком

В статье рассмотрен алгоритм построения Байесовой сети, на основании которой в дальнейшем предполагается управлять транспортным потоком

Динамическое управление структурой распределенной базы данных

В статье рассматриваются вопросы внедрения алгоритма повышения эффективности работы распределенной базы данных, снижения загруженности серверов и уменьшения время отклика на запрос пользователя за счет динамического перераспределения фрагментов данны...

Направления развития гомоморфного шифрования в Российской Федерации

В статье представлены результаты исследования направлений развития гомоморфного шифрования в Российской Федерации в настоящее время. Выявлены четыре актуальных направления: разработка симметричного полностью гомоморфного шифрования, где за основу взя...

Обработка конкурентных транзакций в распределенных системах на примере Java

При разработке программного обеспечения в высоконагруженных системах требуется определить стратегии при одновременных обновлениях. Множество запросов от одинаковых пользователей приводят к конфликтам транзакций на уровне базы данных. Для предотвращен...

Похожие статьи

Метод желаемой логарифмической частотной характеристики для синтеза регулятора в системе управления

В статье рассматривается метод синтеза регулятора для заданного объекта управления, и его моделирование с помощью встроенных приложений в MATLAB.

Неформальный алгоритм сортировки файла с применением битового сжатия в языке программирования C++

В статье автор рассматривает сортировку файла при помощи битового массива на C++. А также сравнивает затраты оперативной памяти без использования битового массива.

Реализация алгоритма поиска ближайших объектов с помощью K-D tree

В данной статье разработан алгоритм поиска ближайших объектов с помощью вспомогательной структуры, основанной на K-D tree, а также рассматривается приложение на языке Java, реализующее данный алгоритм.

Разработка приложения для решения задачи о максимальном потоке

В статье представлена процесс разработки пользовательского приложения, решающего задачу поиска максимального потока алгоритмами Форда-Фалкерсона и Эдмонса-Карпа.

Реализация поиска минимума функции методом градиентного спуска в среде MatLab

В данной статье описана реализация метода градиентного спуска в программе MatLab.

Многопоточность в языке Swift

В статье рассмотрим основной способ выполнять код асинхронно, который используется в iOS приложениях. Подробно разобран основной функционал Grand Central Dispatch (GCD) и сценарии, в которых можно реализовать многопоточность с его помощью.

Использование байесового сетевого подхода для управления транспортным потоком

В статье рассмотрен алгоритм построения Байесовой сети, на основании которой в дальнейшем предполагается управлять транспортным потоком

Динамическое управление структурой распределенной базы данных

В статье рассматриваются вопросы внедрения алгоритма повышения эффективности работы распределенной базы данных, снижения загруженности серверов и уменьшения время отклика на запрос пользователя за счет динамического перераспределения фрагментов данны...

Направления развития гомоморфного шифрования в Российской Федерации

В статье представлены результаты исследования направлений развития гомоморфного шифрования в Российской Федерации в настоящее время. Выявлены четыре актуальных направления: разработка симметричного полностью гомоморфного шифрования, где за основу взя...

Обработка конкурентных транзакций в распределенных системах на примере Java

При разработке программного обеспечения в высоконагруженных системах требуется определить стратегии при одновременных обновлениях. Множество запросов от одинаковых пользователей приводят к конфликтам транзакций на уровне базы данных. Для предотвращен...

Задать вопрос