распределенная вычислительная среда

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Скоро год моей придумке - есть кому что сказать?
Переборных задач могу придумать массу - может у кого тоже что найдется поперебирать ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: распределенная вычислительная среда

Post by Shaos »

Shaos wrote:давно размышляю на тему реализации распределенной вычислительной среды на основе клиент-серверной технологии - сервер обычный HTTP с поддержкой Perl/PHP/Python/Java, клиенты на Java (ну или EXE - если кто согласиться их юзать) - суть в том что юзер подключается к серверу и загружает Java-апплет, который позволяет ему делать что-то полезное и в то же время внутри этого апплета живет часть распределенной вычислительной системы которая что-то вычисляет (с веденья юзера естественно) и самостоятельно подгружает необходимую информацию и сгружает результаты вычислений - юзера к примеру можно заинтересовать тем, что если ему тоже нужно что-то вычислить и на это требуется много вычислительных ресурсов, то он может воспользоваться помощью этой системы
Сегодня перечитывал архив почтовой рассылки NedoPC за осень 2002 года - там тоже поднимался вопрос распределённых вычислений с задачами и каналами связи - всё это близко по смыслу и вполне реализуемо - надо только взяться ;)

P.S. Далее к идее могу добавить что серверов может быть несколько и они каким-то образом синхронизируют данные друг с другом ...

P.P.S. Кроме того к интерпретации байт-кода на узлах сети может быть добавлена компиляция в код конкретной платформы для ускорения вычислений...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Пока решил с самодельными байткодами не заморачиваться - распределять надо нативные вычисления, а не виртуальные! К тому же в связи с пополнением в парке своих PowerPC-машин стал конкретнее продумывать детали реализации. Итак, имеем сеть машин - своих и чужих (выделенных для вычислений с разрешения хозяев). На каждой машине имеется головная программа и набор приложений, желаемых быть запущенными - всё распостраняется в исходниках (возможен вариант с Java - для тех кто побаивается запускать у себя чужие бинарники или собирать незнакомые исходники). На свои машини всё кладётся через SFTP, а на чужие - руками хозяев. Алгоритм работы вычислительной сети:
1) Запускается головная программа, которой даётся имя задачи , которую хочется решать (ну или список задач);
2) Программа обращается к одному из HTTP-серверов, перечисленных в конфигурационном файле, передавая желаемое имя (имена) задачи, пожелания по трафику, идентификатор машины (сети машин);
3) В ответ головная программа получает часть задачи (выделяется из списка открытых подзадач в случайном порядке) - идентификатор выданной подзадачи, имя выбранной задачи, аргументы командной строки для задачи и (возможно) линк на дополнительные данные, необходимые для задачи (объем исходных и результирующих данных не должен превышать пожеланий по трафику, указанных при соединении);
4) Далее происходит вычисление, которое генерирует некий набор данных;
5) По окончании вычисления данные заворачиваются в ZIP для передачи обратно на сервер одним из следующих путей: HTTP POST, короткий HTTP запрос передающий на сервер URL архива на этой машине (в том случае если машина имеет на борту веб-сервер), электронная почта (посылка автоматически или вручную);
6) Только после успешного приёма результата работы сервер вычёркивает эту часть задачи из списка открытых подзадач (в результате возможны ситуации, когда разные машины берутся делать одну и туже подзадачу - но это будет редко, а иногда даже полезно - чтобы сравнить результаты - они должны быть идентичны);
7) Головная программа, передав результаты решения предыдущей задачи (не дожидаясь успешной отправки результатов), идёт за следующей (пункт 2) - и так пока программа не будет остановлена или в ответ не получит сообщение, что список открытых подзадач с желаемыми параметрами пуст.
Я тут за главного - если что шлите мыло на me собака shaos точка net
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Post by Mac Buster »

Я в своё время принимал посильное участие в программах поиска внеземного разума (обработка данных полученных от радиотелескопов) и в поиске чисел Мерсенна. Скачивал и запускал на своей машине клиентскую программу, которая соединялась с центральным сервером, запрашивала исходные данные (заодно узнавала о необходимости обновить блок обработки данных), затем проводились вычисления (на них выделялось от суток до недели) и отправляла результат обратно. После чего все повторялось. Если в течение указанного контрольного срока центральный сервер не получал результата обработки, то задача выдавалась другому исполнителю. Стоит заметить, что для снижения вероятности ошибки при преме-передаче или в процессе обработки, все данные минимум дважды выдавались разным исполнителям, затем результат обработки сравнивался и при наличии расхождений задача снова ставилась в очередь ожидающих обработки. В разных программах клиентская часть обработчика реализована по разному. Кто-то работает только когда это разрешает пользователь, кто-то работает в фоновом режиме имитируя скрин-сейвер. Нагрузка на машину достаточно заметна в любом режиме.
Extreme Entertainment
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: распределенная вычислительная среда

Post by Shaos »

Про распределённые вычисления BOINC, описанные в предыдущем сообщении, можно почитать в другом топике: viewtopic.php?t=9900

А вообще "Распределённая Вычислительная Среда" по английски будет "Distributed Computing Environment" и вот Google AI сделал Overview этого термина :roll:
Screenshot from 2025-01-26 16-04-10.png
P.S. Хотя система с таким названием уже существовала и выпускалась под открытой лицензией (BSD в 2000 и LGPL в 2005):

https://en.wikipedia.org/wiki/Distributed_Computing_Environment
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net