Научная статья на тему 'ОБЗОР ПРИНЦИПА РАБОТЫ ПИРИНГОВЫХ СЕТЕЙ И ИЗУЧЕНИЕ ВОЗМОЖНОСТИ ИХ ПРИМЕНЕНИЯ ДЛЯ КОММУТАЦИИ В РАСПРЕДЕЛЁННЫХ ВЫЧИСЛЕНИЯХ'

ОБЗОР ПРИНЦИПА РАБОТЫ ПИРИНГОВЫХ СЕТЕЙ И ИЗУЧЕНИЕ ВОЗМОЖНОСТИ ИХ ПРИМЕНЕНИЯ ДЛЯ КОММУТАЦИИ В РАСПРЕДЕЛЁННЫХ ВЫЧИСЛЕНИЯХ Текст научной статьи по специальности «СМИ (медиа) и массовые коммуникации»

CC BY
47
12
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
вычисления / децентрализованность / задача / надежность / P2P / сети

Аннотация научной статьи по СМИ (медиа) и массовым коммуникациям, автор научной работы — Гриценко Алексей Викторович

Статья посвящена вопросам использования пиринговых соединений в распределенных вычислениях. Озвучены возможности и преимущества децентрализованного подхода. Рассмотрена тестовая задача в теории и на практике.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «ОБЗОР ПРИНЦИПА РАБОТЫ ПИРИНГОВЫХ СЕТЕЙ И ИЗУЧЕНИЕ ВОЗМОЖНОСТИ ИХ ПРИМЕНЕНИЯ ДЛЯ КОММУТАЦИИ В РАСПРЕДЕЛЁННЫХ ВЫЧИСЛЕНИЯХ»

1 SCIENCE TIME ■

тл 1(4 5л ' tL® -1 щг 1 - 4_W JT |Г1 1 r^g) ОБЗОР ПРИНЦИПА РАБОТЫ ПИРИНГОВЫХ СЕТЕЙ И ИЗУЧЕНИЕ ВОЗМОЖНОСТИ ИХ ПРИМЕНЕНИЯ ДЛЯ КОММУТАЦИИ В РАСПРЕДЕЛЁННЫХ ВЫЧИСЛЕНИЯХ Гриценко Алексей Викторович, Донской государственный технический университет (ДГТУ), г. Ростов-на-Дону E-mail: express-rus@yandex.ru

Аннотация. Статья посвящена вопросам использования пиринговых соединений в распределенных вычислениях. Озвучены возможности и преимущества децентрализованного подхода. Рассмотрена тестовая задача в теории и на практике.

Ключевые слова: вычисления, децентрализованность, задача, надежность, P2P, сети.

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

Постановка абстрактной задачи:

- размер (сложность) задачи: [0, да];

- количество подзадач (отдельно вычисляемые части): [0, да];

- решение: в одной из подзадач или отсутствует.

Требования к участникам вычисления:

- участник: компьютер любой конфигурации;

- местонахождение: без ограничений;

- IP адрес: любой, в т.ч. динамический, за NAT;

- доступ в интернет: не постоянный.

Требования к надежности:

- децентрализованность;

- сохранность результата.

Таким образом, мы хотим иметь возможность решать задачи любой

| SCIENCE TIME |

сложности, задействовав самые разные компьютеры по местоположению и подключенному каналу связи. Кроме того мы намереваемся сэкономить затраты на управление сетью, еще и повысив отказоустойчивость системы, лишив ее «узкого» места - сервера.

Одноранговая, децентрализованная или пиринговая (англ. peer-to-peer, P2P — равный к равному) сеть работает на одноименном абстрактном протоколе P2P и в модели стека сетевых протоколов TCP/IP относятся к прикладному уровню, таким образом, P2P сеть является наложенной сетью (overlay), функционирующей поверх сети Интернет и использующей существующие транспортные протоколы TCP или UDP. Децентрализованный подход позволяет считать каждого участника равноправным (см. схему на рис.1). Каждый узел может выступать в роли сервера и одновременно клиента для другого узла.

R о

о

Рис. 1 Схема одноранговой сети

В качестве тестовой задачи для равноправного клиента, смоделируем

| SCIENCE TIME |

задачу поиска простых чисел в диапазоне от 100000000 до 10000000000000000000. В качестве подзадачи клиент будет должен выбрать участок диапазона, в котором будет осуществлён поиск. Установим размеры участков константой в 1млн (рис.2, рис.3).

участок 1 участок 2 \ /

от 100000000 J от 101 000 000

до 100000000 + 1мл н. до 101 000 000 + 1млн.

Рис. 2 Разбиение задачи на участки

Алгоритм равноправного клиента и его эксплуатации представлен ниже.

1. Для поддержания функционирования пиринговой сети хотя бы один компьютер должен быть доступен в интернете.

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

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

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

5. После выбора задачи узел приступает к ее решению и может быть отключен от сети. Чтобы в дальнейшем передать результат и получить

следующую задачу, будет снова необходимо подключиться к сети.

Рис. 3 Разбиение задачи на участки результаты

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

участок 1

V

}

+ 1м;

от 100000000 до 100000000 + 1млн7Г~~-х

1/4 участка 1

Рис.4 Дополнительное разбиение участка задачи

Для проведения практического испытания был написан тестовый клиент,

«

который представляет собой exe под семейство Windows NT (см. диаграмму классов на рис.5). Требует наличия net framework 4.0.

Рис. 5 Диаграмма классов клиента

Реализация программы исполняемый модуль, Logic -

состоит из классов (модулей): Program -Ф исполняемым модуль, Logic - логика поиска простых чисел, Task - описание задачи, Node - описание и адрес узла. Хранение данных об узлах и задачах каждым отдельным узлом осуществляется в формате Json (рис.7, рис.8). Испытания проводились на 4х машинах, одна из которых имела сведенья о поставленной задаче, а остальные только лишь адрес этой машины (см. процесс работы клиентов на рис.6).

И D:\compute\comp1\ConsoleApplicationCompute.e3

PullData done! Nodes = 2, Tasks =

Compute task... Done.

PullData done! Nodes = 4, Tasks = l,

[Compute task... Done.

PullData done! Nodes = 4, Tasks =

No tasks available

PullData done! Nodes = 5, Tasks = 1,, No tasks available

PullData done! Nodes = 5, Tasks = 1, No tasks available

PullData done! Nodes = 5, Tasks = 1., No tasks available

PullData done! Nodes = 5, Tasks = 1,, No tasks available

PullData done! Nodes = 5, Tasks = 1, No tasks available

PullData done! Nodes = 5, Tasks = 1., No tasks available

SubTasks = Primes = 0

SubTasks =1, Primes = 4B32 SubTasks = 3, Primes = 12008

SubTasks = 3j Primes = 12008 SubTasks = 3j Primes = 12008 SubTasks = 3j Primes = 12008

SubTasks = 3j Primes = 12008 SubTasks = 3j Primes = 12008 SubTasks = 3, Primes = 1200S

M 1 D:\compute\comp2\ConsoleApplic

PullData done! Nodes = 3, Ta: Compute task... Done.

PullData done! Nodes = 4, Ta: iCompute task... Done.

'PullData done! Nodes = 4, Ta:

No tasks available

PullData done! Nodes = 5, Ta:

1o tasks available

PullData done! Nodes = 5, Ta:

*lo tasks available

PullData done! Nodes = 5, Ta:

No tasks available

PullData done! Nodes = 5, Ta:

4o tasks available

PullData done! Nodes = 5, Ta:

No tasks available

PullData done! Nodes = 5, Ta:

No tasks available

SubTasks = lj Primes = ® SubTasks = 2j Primes = 9604 SubTasks = 3j Primes = 12008

SubTasks = 3, Primes = 12008 SubTasks = 3j Primes = 12008 SubTasks = 3j Primes = 12008

SubTasks = 3j Primes = 12008 SubTasks = 3j Primes = 12008 SubTasks = 3j Primes = 12008

mpute\eomp3\Coi nsoleApplicati onCoi mpute.exe

PullData done! Nodes = 4., Tasks = lj SubTasks = 1.,

Compute ask___Done.

PullData done! Nodes = Tasks = lj SubTasks = Primes

No tasks available

PullData done! Nodes = Tasks = 1, SubTasks = 3j Primes

No tasks available

PullData done ! Nodes = 5, Tasks = 1, SubTasks = Primes

No tasks available

PullData done! Nodes = Tasks = lj SubTasks = Primes

No tasks available

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

PullData done! Nodes = Tasks = 1, 5ubTasks = 3, Primes

No tasks available

PullData done! Nodes = Tasks = 1, SubTasks = 3^ Primes

No tasks available

PullData done! Nodes = Tasks = lj SubTasks = 3, Primes

No tasks available

PullData done! Nodes = 5, Tasks = lj 5ubTasks = 3j Primes

No tasks available

ЖЗ D:\compute\comp4\ConsoleApplicationCompute.e

PullData done! Node: o tasks available ullData done! Node: o tasks available ullData done! Node: o tasks available ullData done! Node: o tasks available ullData done! Node: o tasks available ullData done! Node: o tasks available

SubTasks = 3j Primes = 12008 SubTasks = 3j Primes = 12008 SubTasks = 3, Primes = 12008 SubTasks = 3j Primes = 12008 SubTasks = 3j Primes = 12008

SubTasks = 3j Primes = 12008

Рис. 6 Клиенты в работе

»

118

I SCIENCE TIME I

Уже в первые секунды после запуска каждый новый введенный узел узнавал о задачах и адресах существующих узлов, а те в свою очередь о нем. Клиенты были запущены в разное время, поэтому кто-то включился в работу позже других, захватив оставшиеся задачи (comp2, comp3), а последний клиент (comp4) был запущен, когда все задачи были решены, синхронизировав данные он свидетельствовал об отсутствии задач и стал ожидать новые, попутно выполняя роль сервера для остальных узлов. Распределенный подход к решению задачи во всех проведённых испытаниях, как и предполагалась, в среднем давал прирост скорости вычислений кратный количеству узлов.

@ STUN_Result.cs J | 0 new 75 J | 0 new 76 l3 В datajasks.json □ |g data_nodes.json J | g daita_nodes js ' I [{"result":[],"subTasksLlst":[],"name":null,"start": 1000000000,"end":1000250000,"parent":{"name": "comp nodel","path":"192.163.0.1:59548"}}]

Рис. 7 Задача в формате Json

0 STUN_Result.cs j|0new 75 t3 0new76(J 0datajasks.json j| 0data_nodesjsm J 0data_nodes.js *

1 [{"result": [] , "subTasksLlst": [{"result": [1

,1000000009 nnnnnnnvi f — U iJ и и и _ f f .000000JE f

1000000093, 1000000097, 1000000103 , 1000000123,

1000000181, 1000000207 1000000223, 1000000241,

1000000271 , 1000000289, 1000000297 , 1000000321,

1000000349 , 1000000363, 1000000403 , 1000000409,

1000000411, 1000000427, 1000000433 , 1000000439,

1000000447 , 1000000453, 1000000459 , 1000000483,

J nnnrnnR'T _ U U U U 'J _ J , 1000000531, 1000000579 , ......._ f

1000000613, 1000000637, 1000000663, 1000000711,

1000000753 , 1000000787, 1000000801 , 1000000829,

1000000861, 1000000871, 1000000891 , 1000000901,

1000000919, " 00000093J 1000000933 , 1000000993,

1000001011, 1000001021, 1000001053, 1000001087,

1ППЛЛЛ1ЛПП 1 Г1Г1Г1Г1Л1 1 1ПЛПЛЛ11ei 1 ЛЛЛЛЛ1 om

Рис. 8 Часть решения задачи в формате Json

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

«

I

SCIENCE TIME

I

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

Литература:

1. Шилдт Г. C# 4.0. Полное руководство. - М.: Вильямс, 2014.

2. Дэвис А. Асинхронное программирование в C# 5.0. - ДМК Пресс, 2012.

3. MSDN: Каталог API (Microsoft) и справочных материалов [Электронный ресурс]. - Режим доступа. - URL: https://msdn.microsoft.com/Hbrary

120

»

i Надоели баннеры? Вы всегда можете отключить рекламу.