Модели оптимального размещения таблиц РБД в узлах сети со звездообразной топологией

Рассмотрим подход к построению модели оптимального размещения файлов РБД в сети со звездообразной топологией. В качестве критерия оптимальности примем общее среднее время ответа на запрос по всей распределенной вычислительной системе.

Рассмотрим однородную вычислительную сеть, каждый узел которой состоит из ЭВМ, терминальных устройств и аппаратуры передачи данных. Предположим, что все узлы сети связаны в звездообразную конфигурацию через коммутатор данных, как показано на Рис.1. Обозначим: Kj (j = 1, 2,:,n) - j-й узел сети, состоящий из ЭВМ и аппаратуры передачи данных; Bj (j=1,2,:,п) - локальная база данных, расположенная в запоминающих устройствах узла Kj; Т - терминальное устройство. Будем считать, что запрос, поступающий на терминальное устройство любого узла, предполагает доступ к определенному файлу РБД. Все запросы из фиксированного узла к одному и тому же файлу имеют одинаковую длину и требуют для ответа одинаковый объем данных. Запросы обслуживаются в узле в порядке очереди.

1. Звездообразная топология сети.

Будем различать два вида запросов, поступающих из терминалов:

Тип 1 - запросы, для обработки которых необходимые файлы не содержатся в базе данных узла, на который они поступили;

Тип - запросы, для обработки которых нужные файлы содержатся в базе данных соответствующего узла.

При функционировании вычислительной системы в каждом узле образуется две входные очереди сообщений: первая из запросов типа 1 и ответов из других узлов на запросы этого типа, и вторая из запросов типа 2. Запросы, поступающие из терминалов в соответствующие входные очереди узлов, предварительно классифицируются. Для этой цели используются справочники локальных баз данных узлов. Время классификации считается достаточно малым, поэтому оно не учитывается при построении модели. Обработка сообщений двух входных очередей каждого узла осуществляется с использованием следующей приоритетной схемы: сообщения первой входной очереди имеют высший приоритет обслуживания, чем сообщения второй входной очереди. Сообщения одной и той же очереди обслуживаются в следующем порядке: первым пришел, первым обслуживается (FIFO).

Рассмотрим схему обработки запросов в зависимости от их типа.

Если запрос принадлежит к типу 1, то он согласно очереди пересылается из узла в коммутатор данных, где присоединяется ко входной очереди коммутатора. В коммутаторе очередь образуется в порядке прибытия сообщений. Процессор коммутатора выбирает сообщения из очереди согласно порядку FIFO. Если выбранное из очереди коммутатора сообщение является запросом, то по справочнику коммутатора находится узел, содержащий необходимый файл для обслуживания данного запроса, и запрос пересылается во вторую входную очередь этого узла (т.е. на этом этапе обслуживания запрос типа 1 превращается в запрос типа 2). После его обслуживания (согласно очереди) формируется ответ, которому присваивается высший приоритет. Этот ответ пересылается во входную очередь коммутатора данных.

Если запрос принадлежит к типу 2, то он обслуживается согласно очереди запросов этого типа и ответ выводится на терминал. При этом, если во время обслуживания запроса типа 2 во входную очередь узла поступает сообщение с высшим приоритетом обслуживания (запрос типа 1 или ответ на запрос этого типа), то обслуживание запроса прерывается и немедленно начинается обслуживание сообщения с высшим приоритетом. Обслуживание запроса типа 2 возобновляется только в том случае, если нет больше сообщений с высшим приоритетом обслуживания во входной очереди узла.

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

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

Тип 1. Предположим, что для обслуживания запроса, инициированного на терминале узла Ki, используется файл, содержащийся в локальной базе данных узла Kj. Тогда в порядке следования сообщения в сети возникают следующие задержки:

a.       ожидаемая задержка во входной очереди узла Ki. Эта задержка обусловлена запросами типа 1 и ответами на запросы этого типа, поступившими из терминалов узла Ki и коммутатора данных, находящимися в очереди в момент прибытия рассматриваемого запроса;

b.      задержка, обусловленная временем обслуживания в узле Кi. Указанное время необходимо для пересылки запроса из узла во входную очередь коммутатора данных.

c.       ожидаемая задержка в коммутаторе данных. Эта задержка является следствием других сообщений, находящихся во входной очереди коммутатора в момент прибытия рассматриваемого;

d.      задержка, обусловленная временем обслуживания в коммутаторе данных. Это время необходимо для определения узла, содержащего нужный для обслуживания запроса файл, и пересылки запроса в этот узел;

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

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

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

h.       ожидаемая задержка в коммутаторе данных. Эта задержка определяется аналогично как в пункте (c);

i.         задержка, обусловленная временем обслуживания в коммутаторе данных. Она определяется аналогично как в пункте (d) и обусловлена временем, необходимым для определения узла назначения ответа и пересылки ответа в этот узел;

j.        ожидаемая задержка во входной очереди узла Ki. Эта задержка определяется аналогично как в пункте (a);

k.      задержка, обусловленная временем обслуживания в узле Кi. Указанное время необходимо для вывода ответа на первоначальный терминал узла Ki.

Тип 2. Если для обслуживания запроса, инициированного на терминале узла Ki, используется файл, содержащийся в локальной базе данных этого узла, то в процессе обслуживания запроса возникают следующие задержки:

a.       ожидаемая задержка во входной очереди узла Ki. Эта задержка обусловлена обслуживанием сообщений из первой входной очереди узла Ki, которые имеют высший приоритет, и запросов второй входной очереди, находящихся в очереди до момента прибытия рассматриваемого запроса;

b.      задержка, обусловленная временем обслуживания в узле Кi. Это время необходимо для формирования ответа на запрос и вывода ответа на первоначальный терминал.

Для записи выражений, определяющих среднюю задержку при обслуживании запросов каждого из двух типов, введем следующие обозначения:

Qil     - среднее время ожидания в l-й (l=1,2) входной очереди узла Ki;

Ril      - среднее время обслуживания сообщений из l-й (l=1,2) входной очереди процессором ЭВМ узла Ki;

Q       - среднее время ожидания во входной очереди коммутатора данных;

R       - среднее время обслуживания сообщения процессором коммутатора данных;

Тil      - среднее время ответа на запрос l-го типа, инициированного на терминале узла Ki.

Тогда

,

(1)

,

(2)

При этом учитывается, что запрос, инициированный на терминале узла Ki, использует для своего обслуживания локальную базу данных узла Kj или Ki, в зависимости от того, принадлежит запрос к типу 1 или к типу 2.

Поскольку произвольно инициированный на терминале узла Ki запрос типа 1 может требовать для обслуживания файл, находящийся в локальной базе данных любого узла Kj (j # i), то время Тi1 представим в виде среднего значения по всем узлам Kj (j # i). Для этой цели введем величины:

m       - число независимых файлов, входящих в РБД;

Fj      j-й файл РБД;

pij      - вероятность того, что для обслуживания запроса, инициированного в узле Ki, необходим файл Fj.

Очевидно,

Использовав pij, определим множество величин qsr (s,= 1,2,:,n), где qsr является вероятностью того, что запрос, инициированный в узле Ks, использует для своего обслуживания файл, находящийся в локальной базе данных узла Kr. Значения qsr зависят от распределения файлов по узлам вычислительной сети и от значений pij. Если ввести переменные xij (= 1,2,:,m; = 1,2,:,n), где

то

,

(3)

причем

 

Поскольку вероятность того, что запрос, инициированный на терминале узла Ki, использует для своего обслуживания локальную базу данных узла Kj, равна qij и ожидаемое время задержки, обусловленное обслуживанием такого запроса в узле Kj, равно Qj2 + Rj2, то математическое ожидание времени, необходимого для обработки в отдаленном узле запроса типа 1, порожденного в узле Ki, равно

.

Поэтому формулу для определения Тi1 можно переписать в виде

(4)

Формулы (2) и (4) выражают среднее время задержек для запросов двух типов, порожденных на терминалах узла Ki. Взвешенная сумма этих двух слагаемых определяет среднее время задержки при обслуживании запроса, инициированного в этом узле. Усредняя это время по всем узлам, получаем общую среднюю задержку для всех запросов сети.

Для определения общей средней задержки при выполнении запроса в сети введем следующие величины:

li       - средняя интенсивность запросов, инициированных в узле Ki;

lik      - средняя интенсивность поступления запросов k-го типа во входную очередь узла Ki;

Wik     - среднее время обработки запроса k-го типа в узле Ki;

- дисперсия времени обработки запроса k-го типа в узле Ki;

l       - средняя интенсивность входного потока сообщений в коммутаторе данных;

m       - средняя скорость обслуживания сообщений в коммутаторе данных;

Ti       - среднее время обслуживания запроса, инициированного в узле Ki;

Т       - общее среднее время ответа на запрос по всей вычислительной системе.

Поскольку qii является вероятностью того, что запрос, порожденный в узле Ki, требует для своего обслуживания локальной базы данных этого же узла, то (l - qii) является вероятностью того, что запрос, порожденный в узле Ki, требует для своего обслуживания локальной базы данных другого узла. Поэтому liqii - общий поток запросов типа 2, порожденных в узле Ki, li(l - qii) - общий поток запросов типа 1, порожденных в этом узле. Из этого следует, что

и

,

где

,

(5)

Установим взаимосвязь между величинами lik и li. Очевидно, что имеют место соотношения

,

(6)

,

(7)

где коэффициент 2 в формуле (6) указывает на то, что все дистанционно обслуживаемые сообщения возвращаются в тот же узел Ki после окончания их обслуживания в другом узле, lsqsi в формуле (7) обозначает поток сообщений, порожденных в узле Ks, которые используют для своего обслуживания локальную базу данных узла Ki.

Для средней интенсивности входного потока сообщений в коммутаторе данных имеем формулу

Используя теоретические результаты из теории очередей, для Qi1 и Ri1 получаем выражения

,

.

Подставляя вместо li1 его выражение из (6), имеем

,

(8)

 

 

.

(9)

Аналогично получаем выражения для Qi2 и Ri2:

,

.

Подставляя вместо li1 и li2 их значения из формул (6) и (7), имеем

(10)

 

 

 

 

(11)

 

Для величин Q и R формулы имеют вид

;

(12)

 

 

.

(13)

Подставляя значения для Qi1, Qi2, Ri1, Ri2, Q и R из формул (8)-(13)  в соотношения (2) и (4), получаем

(14)

.

(15)

.

 

Таким образом, задача оптимального распределения файлов состоит в том, чтобы найти минимум функции

(16)

 

при ограничениях

(17)

 

 

;

(18)

 

 

(19)

где S, Ti1, Ti2, lk1, lk2 и qsr определяются соответственно формулами (5), (14), (15), (6), (7) и (3).

Задача (16)16)-(19) является задачей целочисленного нелинейного программирования с линейными ограничениями и булевыми переменными. Для решения такой задачи можно использовать метод полного перебора, что неприемлемо для сетей с большим числом узлов и файлов РБД. Поэтому для реализации таких моделей лучше использовать эвристический алгоритм, с помощью которого можно найти оптимальное или почти оптимальное распределение файлов по узлам сети значительно быстрее, чем при использовании метода полного перебора.

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

Пусть заданы величины:

п        - число узлов вычислительной сети;

т       - число независимых файлов РБД;

Fj      - j-ый файл РБД;

Ki      - i-ый узел сети;

li       - средняя интенсивность запросов, инициированных в узле Ki;

Wik     - среднее время обработки запроса k-го (k = 1,2) типа в узле Ki;

pij      - вероятность того, что для обслуживания запроса, инициированном в узле Ki, необходим файл Fj.

Введем обозначения:

qsr      - вероятность того, что запрос, инициированный в узле Ks, использует для своего обслуживания файл, находящийся в локальной базе данных узла Kr;

lik      - средняя интенсивность поступления запросов k-го (k = 1,2) типа во входную очередь узла Ki.

При этом напомним, что ответ на запрос типа 1, прибывший в узел Ki, относится к запросам типа 1, а запрос типа 1, прибывший в узел Ki для своего обслуживания из другого узла, относится к запросам типа 2.

Если xij (i = 1,2,...,т; j = 1,2,...,п) - переменные, определяемые по формуле

то для нахождения qsr и lik можно использовать соотношения (3), (6) и (7).

Произведение lipij определяет интенсивность запросов к файлу Fj, поступающих на терминальные устройства узла Ki. Поэтому если файл Fj хранится в узле Ks, то суммарная интенсивность запросов типа 1, инициированных на терминальных устройствах всех узлов сети, к файлу Fj определится формулой

.

(20)

С учетом Qjs (j = 1,2,...,т; s = 1,2,...,п) математическая модель задачи будет иметь вид

(21)

при ограничениях

;

(22)

;

(23)

.

(24)