книги2 / монография 31
.pdfТаблица 4.26. Характеристики распределенной системы
Распределение |
Затраты на |
Среднее |
|
|
функционирование |
время |
|
|
системы |
обработки |
|
|
|
запроса |
|
Предыдущее |
10 443 |
3 |
|
распределение |
|||
|
|
||
После |
|
|
|
перераспределения |
11 739 |
2 |
|
фрагментов |
|
|
|
Ухудшение / |
|
|
|
Улучшение |
+ 1 296 |
- 1 |
|
характеристики |
|
|
В данном случае в результате перераспределения фрагментов, получено улучшение среднего времени обработки запросов, но при этом возросли затраты на функционирование системы.
Таким образом, можно сделать вывод о том, что для разных состояний распределенной системы, имеющих существенные отличия в параметрах работы, один и тот же алгоритм перераспределения фрагментов, работающий в разные моменты времени, может давать оптимальные решения с различной величиной стоимостных затрат на функционирование системы. То есть (N+1, N+2,…N+m-й) запуск алгоритма перераспределения фрагментов находит оптимальное решение с большей или меньшей суммой затрат на эксплуатацию системы по сравнению с аналогичными затратами, полученными на предыдущем этапе работы алгоритма. Это естественно объясняется тем, что один и тот же алгоритм выполняется при различных исходных параметрах распределенной системы, которые динамично меняются с течением времени.
Краткие выводы
В данной главе представлен комплексный метод проектирования логической структуры фрагментов таблиц данных совместно с синтезом программных модулей, используемых в
139
прикладных процессах, которые используют данные из полученных фрагментов таблиц.
Также представлена формальная модель распределенной системы, использующей РБД с фрагментами таблиц данных. При этом подразумевается, что ряд параметров распределенной системы динамичны, то есть со временем меняют свои значения. В рамках этой модели сформулирована задача поиска оптимального перераспределения фрагментов с тем, чтобы достигалось оптимальное значение суммарных затрат на функционирование системы. Учитываются затраты на хранение фрагментов таблиц в узлах системы, затраты на передачу запросов по каналам связи и затраты на обработку запросов в узлах системы. В силу большой вычислительной сложности сформулированной задачи для ее решения предложен эвристический алгоритм, работа которого проиллюстрирована на двух примерах.
140
ГЛАВА 5. РАЗДЕЛЕНИЕ УЗЛОВ РАСПРЕДЕЛЕННОЙ СИСТЕМЫ НА ЛОГИЧЕСКИЕ КЛАСТЕРЫ И РАЗМЕЩЕНИЕ
ВНИХ ФРАГМЕНТОВ ТАБЛИЦ ДАННЫХ
Вданном параграфе рассматриваются проблемы и задачи разбиения узлов крупномасштабных распределенных систем на кластеры меньшего размера с последующим размещением фрагментов таблиц баз данных в полученном множестве кластеров.
Крупномасштабные распределенных системы принадлежат классу больших и сложных систем, распределенных на больших территориях, которые требуют больших ресурсов для поддержания эффективной работы и для дальнейшего их развития.
Кластеризация узлов компьютерной сети, на основе которой работает РСОД, является эффективным способом повышения эффективности работы распределенной системы за счет минимизации времени и затрат на использование каналов связи при обработке запросов к данным системы. Однако задача кластеризации узлов крупномасштабных систем все еще остается открытой исследовательской проблемой, поскольку ее оптимальное решение является NP-полным. Основная цель кластеризации заключается в поиске близкого к оптимальному решения, которое группирует узлы системы в непересекающиеся кластеры для того, чтобы свести к минимуму затраты времени и ресурсов для обмена данными между отдельными узлами системы. Группировка большого количества узлов системы в небольшое количество кластеров эффективно сокращает время отклика системы, обеспечивает лучшее распределение данных по узлам системы и повышает производительность всей системы.
Еще одним эффективным методом повышения производительности и надежности работы распределенных систем является фрагментирование таблиц данных, используемых в системе, и размещение фрагментов по узлам кластеров распределенной системы.
Вданной главе представлен эвристический метод группировки узлов распределенной системы в логические кластеры для последующего размещения в этих кластерах реплик фрагментов таблиц распределенных баз данных.
141
5.1.Проблема логической кластеризации узлов распределенной системы
Важным принципом группировки узлов распределенных систем в логические кластеры и размещения в них реплик фрагментов является принцип «локальность ссылки» (locality of reference) или «принцип локальности» (principle of locality) [30,47]. В контексте задачи группировки узлов системы в логические кластеры и размещения фрагментов таблиц в узлах кластеров системы используется принцип «пространственной локальности» (spatial locality) [47]. В данном случае, этот принцип означает, что наиболее часто генерируемые в узлах системы (узлах кластеров) запросы к данным должны маршрутизироваться в узлы с репликами фрагментов, наиболее близко расположенные к узлам источникам запросов.
В соответствии с этим принципом целесообразно размещать фрагменты таблиц данных в таких узлах системы, чтобы при возникновении в некотором узле запроса к данным этих фрагментов, передача данных по каналам связи была минимальной или, в оптимальном случае, нулевой.
Идея группировки узлов распределенной системы в логические кластеры с последующим размещением в них реплик фрагментов следует принципу пространственной локальности (spatial locality) [47] и позволяет улучшить такие важные характеристики системы, как быстродействие и надежность функционирования. Быстродействие системы повышается за счет того, что основное количество запросов к данным фрагментов адресуется в узлы, входящие в один кластер, расположенные на близком расстоянии от узла – источника запросов. То есть в границах одного кластера основная масса запросов являются локальными, когда и узел – источник запросов и узел, в котором эти запросы обрабатываются, расположены в границах одного кластера, в относительной близости друг к другу. В идеальном случае узел – источник запроса и узел, обрабатывающий запрос, это один и тот же узел.
Только малая часть запросов, возникающая в узлах кластера, являются глобальными запросами, т.е. запросами, которые маршрутизируются для обработки в узлы системы, расположенные на большом удалении и вне данного кластера. Обработка локальных
142
запросов требует использования существенно меньшего количества ресурсов каналов связи сети, что приводит к увеличению производительности системы и надежности ее работы. Надежность работы системы в этом случае повышается по той причине, что вероятность сбоя при передаче запроса и ответа на него по короткому пути внутри кластера существенно ниже, чем при обработке глобальных запросов, которые маршрутизируются в узлы, расположенные вне текущего кластера [48–51].
В данной главе предложен эвристический алгоритм группировки узлов распределенной системы в логические кластеры с последующим распределением фрагментов таблиц в границах отдельных кластеров. Данный подход значительно снижает сложность задачи размещения фрагментов среди всех узлов системы.
5.2. Группировка узлов системы в логические кластеры
Разбиение таблиц данных РБД на фрагменты само по себе не улучшает характеристики работы системы. Что бы улучшить надежность и производительность работы распределенной системы, использующей РБД с фрагментами таблиц, необходимо наилучшим (оптимальным) образом распределить эти фрагменты по узлам сети. Известно, что задачи поиска оптимального распределения фрагментов по узлам компьютерной сети являются NP сложными, и для их решения, как правило, предлагаются методы получения решений, близких к оптимальному решению, за счет использования различных эвристик [21,48,49].
Одним из методов уменьшения вычислительной сложности такого рода задач является метод группировки узлов компьютерной сети в логические кластеры. Такая группировка узлов производится на основе неких общих признаков узлов системы. Например, в одном кластере группируются узлы системы, расположенные географически близко друг к другу. После такой группировки узлов распределение фрагментов таблиц ведется уже в рамках отдельных кластеров, количество узлов в которых значительно меньше, чем во всей системе. Это позволяет значительно сократить вычислительную сложность задачи распределения фрагментов.
Цель группировки узлов в кластеры заключается в том, чтобы обмен данными между узлами (например, запросами к данным и ответами на эти запросы) происходила в основном внутри границ
143
кластера, т.е. между узлами, включенными в один кластер. В большинстве случаев запросы, генерируемые в узлах кластера, являются локальными, когда запрос к данным из одного узла кластера маршрутизируется в другой узел того же кластера или обрабатывается в том же узле, где запрос был сгенерирован. И только небольшая часть запросов является глобальными запросами, которые маршрутизируются через каналы связи в один или несколько узлов глобальной сети, расположенные вне кластера, в котором расположен узел – источник запроса.
Это приводит к тому, что при использовании кластеризации узлов сети минимизируются затраты на использование каналов связи и увеличивается производительность распределенной системы.
Проиллюстрируем данное преимущество кластеризации узлов на примере условной распределенной системы, топология которой представлена на рисунке 5.1.
На рисунке показаны связи между узлами распределенной системы, в которой не производилась логическая кластеризации узлов. В данной конфигурации все запросы к данным можно условно разделить на две группы запросов: локальные запросы и глобальные запросы.
Локальными будем считать те запросы, которые:
обрабатываются в том же узле, в котором запросы были сгенерированы и в котором хранятся необходимые для обработки запросов данные;
либо запросы, которые адресуются в ближайший смежный узел с необходимой для обработки запроса информацией.
На рисунке 5.1 такие запросы изображены в виде петель со стрелкой и двойными стрелками между некоторыми смежными узлами, находящимися на небольшом расстоянии друг от друга.
Группу глобальных запросов образуют те запросы, которые маршрутизируются из узлов-источников запросов для их обработки в другие, удаленные узлы сети по каналам связи, входящим в кратчайший путь между узлами – источниками запросов и узлами, в которых запросы будут обрабатываться. Такие запросы изображены на рисунке двунаправленными стрелками черного цвета.
144
Рис. 5.1. Распределенная сеть, не использующая кластеризацию узлов
На рисунке 5.2 показана конфигурация распределенной системы после выполнения логической кластеризации узлов сети. Узлы сети сгруппированы в три кластера, ограниченные овалами, границы которых обозначены двумя пунктирными линиями и одной сплошной линией. Кроме того, в границах каждого отдельного кластера в узлах этого кластера размещены реплики фрагментов таблиц данных. Распределение реплик фрагментов по узлам кластеров выполнено на основе анализа характеристик запросов к данным фрагментов, генерируемых в узлах сети.
145
Рис. 5.2. Распределенная сеть с логическими кластерами
За счет того, что в узлах кластеров размещены реплики фрагментов таблиц данных, существенно изменилась маршрутизация запросов. Увеличилось количество локальных запросов. Новые локальные запросы изображены пунктирными двунаправленными стрелками.
Кроме того, значительно уменьшилось количество глобальных запросов, обработка которых требует больших затрат на связь и больших затрат времени на обработку по сравнению с локальными запросами. Это приводит к увеличению эффективности работы распределенной системы и ее большему быстродействию.
Предложенный в данном параграфе метод группировки узлов распределенной системы в логические кластеры значительно уменьшает вычислительную сложность задачи поиска оптимального распределения по узлам сети реплик горизонтальных и вертикальных фрагментов таблиц данных РБД. Это достигается за счет того, что одна глобальная ресурсоемкая задача распределения фрагментов по всему множеству узлов системы сводится к решению нескольких более простых, локальных задач размещения реплик фрагментов таблиц на подмножествах узлов, входящих в состав разных логических кластеров. Предложенный подход особенно
146
актуален в случае крупномасштабных распределенных систем с большим количеством узлов, расположенных на большом удалении друг от друга.
5.2.1.Предлагаемый метод группировки узлов распределенной системы в логические кластеры
Задача группировки узлов в кластеры является NP-сложной и обладает существенной вычислительной сложностью, особенно для крупномасштабных систем с большим количеством узлов. Поэтому в работе предлагается представленный ниже эвристический алгоритм группировки узлов в логические кластеры.
В данном параграфе приводится описание эвристического метода группировки узлов сети в логические кластеры, основанный на оценке величины затрат на обмен данными между узлами, включенными в один логический кластер.
Предположим, что РСОД использует распределенную базу данных и работает на основе компьютерной сети из множества K
узлов: = { , … |
… , }. Топология сети представлена |
1 |
|
взвешенным графом = ( , Г).
Допустим, что компьютерная сеть, на базе которой работает система, однородная и в ней используются серверы с аналогичными
характеристиками. |
Для каналов связи сети задана матрица = |
|||
{ } стоимости |
связи – т.е. величина затрат на передачу |
|||
|
|
|
̅̅̅̅̅ |
|
единицы данных между парами узлов сети ( , |
) , , = |
|||
1, . |
||||
|
|
|
|
|
На основе элементов матрицы , используя любой известный алгоритм поиска кратчайших путей между узлами графа (Алгоритм Дейкстры, Флойда, Данцига [34,52]), строится матрица =
{ |
}, |
̅̅̅̅̅̅ |
, в которой элемент |
(Data Transfer Cost) |
, = 1, |
||||
|
|
|
|
|
это стоимость передачи единицы данных по кратчайшему пути между парой узлов ( , ) сети. При этом предполагается, что запросы и ответы на них имеют одинаковый размер, а сервера, используемые в сети, имеют одинаковые характеристики (быстродействие, объемы внутренней и внешней памяти и т.д.).
Решение о включении или не включении двух любых узлов системы ( , ) в один логический кластер принимается на основе
147
значения булевой переменной ( , ) (The Decision of Nodes Clustering), значения которой рассчитываются в соответствии с формулой:
1, если ( , ) ≤ ( , ) = {0, если ( , ) >
В этой формуле MCC (Maximum of Communication Cost) это заданная максимальная стоимость связи (передачи единицы данных) между любой парой узлов во всех логических кластерах системы. При группировке узлов в кластеры должно выполняться условие, заключающееся в том, что затраты на обмен данными между любой парой узлов одного кластера не должны превышать это максимальное значение. Значение MCC устанавливается администратором распределенной системы.
Большая вычислительная сложность задачи группировки узлов в кластеры делает необходимым использовать для ее решения эвристики. В данной главе предложен эвристический алгоритм, описание которого приведено ниже.
5.2.2.Эвристический алгоритм группировки узлов в кластеры
Входными параметрами для предлагаемого эвристического алгоритма являются следующие данные:
-K – количество узлов в компьютерной сети,
-DTC – матрица, элементы которой это стоимость передачи данных по кратчайшим путям между парами узлов сети,
-MCC – ограничение на максимальную стоимость передачи информации по кратчайшим путям между парами узлов в кластерах.
Врезультате работы алгоритма получается матрица ( , ), (Cluster Nodes) (потенциального) включения узлов в кластеры. Элементы матрицы принимают значение 1, если два узла , могут
войти в состав одного логического кластера, и значение 0, если узлы не могут быть включены в состав одного кластера.
148
