Использование процессорных мощностей посетителей сайта. Паразитические вычисления.

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

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

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

Comments
  1. ValeryMarch 04, 2009 @ 07:33 PM
    Клево, я давно об этом думал, даже прототипчик написал, правда под desktop ные системы, не знал как это с помощью js делать. А вообще идея мне кажется довольно прикольная. Знаю есть проекты которые монитизировались на этом. Правда для участия в вычислениях необходимо качать спец софт. А в случае с броузером все облегчается. Было бы интересно увидеть внутренности, как вы делаете разбивку задачи на подзадачи и потом объеденяете все это. Интересный пост, спасибо.
  2. Alexey KovyrinMarch 04, 2009 @ 09:27 PM
    @Valery: http://www.igvita.com/2009/03/03/collaborative-map-reduce-in-the-browser/ - вот тут детали и серверный софт есть.
  3. Константин ТумалевичMarch 04, 2009 @ 09:55 PM
    Там в комментариях есть ссылка на небольшую книгу про паразитические вычисления, но почему-то не рассказано, что можно прятать вычисления так, что-бы пользователю браузер не жаловался
  4. ValeryMarch 06, 2009 @ 12:37 AM
    Спасибо за ссылку. Там в комментах есть еще одна интересная ссылка, на американское патентное бюро, причем зарегили идею довольно давно (2001) :)