Использование облачных / распределенных вычислений для совместного использования процессорного времени - возможности и методы - PullRequest
2 голосов
/ 17 августа 2010

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

Я задавался вопросом: можно ли сделать это более неявным образом?

Вопрос

Существует ли возможность распределения задач с интенсивным использованием процессора по добровольной и общедоступной сети компьютеров, чтобы сделать работу более эффективной, не требуя установки программы или процесса на каждом компьютере?

Сценарий

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

Теперь было бы более эффективно разделять этот обременяющий процесс по сети или на многоядерном суперкомпьютере, однако оба они дороги. Насколько мне известно, вам потребуется специально разработанная программа для запуска определенного алгоритма и установки программы в указанной облачной / распределенной вычислительной сети, в то время как у вас есть сервер, отслеживающий, что делает каждый компьютер (то есть, какое число они вычисляют в настоящее время). простые числа).

Заключение

Общий:

  • Можно ли создать облачную программу / ОС / пакет где вы могли бы поделиться процессорным временем для неопределенного типа процесса?

  • Если да, то как бы вы это реализовали, с чего бы начать?

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

  • Если бы это было осуществимо, вы бы добровольно стали частью большого облака?

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

Ответы [ 3 ]

2 голосов
/ 17 августа 2010

Я сталкивался с той же проблемой последние несколько месяцев.Мои выводы на данный момент:

Основная проблема использования публичной сети (Интернет) для облачных вычислений заключается в обращении к компьютерам через NAT и брандмауэры.Решить это нетривиально.

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

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

Более практичные решения предлагаются коммерческими облачными платформами, такими как Azure (для .Net) или просто.Net ServiceBus.Поскольку все работает в облаке, проблем с подключением к компьютерам за NAT и межсетевыми экранами не возникнет, и даже если вам нужно сделать это для доступа к «локальным» компьютерам или компьютерам клиентов, это можно сделать через ServiceBus.

1 голос
/ 17 августа 2010

Я бы не ожидал, что программа, которая позволяет «делить процессорное время для неопределенного типа процесса».Обязательным условием совместного использования процессорного времени является то, что задача может быть разделена на несколько подзадач.

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

1 голос
/ 17 августа 2010

Можете ли вы доверять чужому коду для запуска на вашем компьютере?

Практичнее не спрашивать их разрешения:;)

Я однажды писал соревнование по программированиюрешатель, написанный с помощью Haxe во Flash-баннере на довольно популярном сайте друга ...

...