Практически все современные браузеры обладают возможностью довольно быстро исполнять javascript.
Благодаря этому появилась возможность использовать посетителей сайта как ноды кластера для обсчета больших массивов данных.
Такое явление называется паразитическими вычислениями. Естественно что алгоритм должен быть хорошо параллелящимся и отдельные части вычисления должны проходить достаточно быстро.
Примером таких вычислений может быть обсчет матриц (нахождение определителя) или подсчет md5 хешей.
Так-же, поскольку все происходит без нашего контроля (обсчет на клиентских машинах) необходимо проверять результат вычисления. Одним из способов может быть сравнение нескольких результатов от разных нод с целью определить какое правильное методом "голосования".
Для примера я написал простое приложение которое обсчитывает md5 хеши.
Приложение расположено по адресу http://parasite.tumalevich.pp.ru/index.html.
Рассмотрим работу скрипта "паразита".
После инициализации он забирает с сервера список задач. В данном случае массив со строками.
После чего устанавливает интервал на то, что-бы раз в 500 миллисекунд обработать одну задачу и отправить ее на сервер.
После того, как список опустошится все повторяется сначала. Результат действия можно наблюдать в таблице в которую выводится результат.
В целом данный способ показывает, что в определенных случаях пользователей сайта можно использовать как облачный кластер для цифромололки.
Использование процессорных мощностей посетителей сайта. Паразитические вычисления.
Posted on March 04, 2009