@daniil14056

КАК ИСПОЛЬЗОВАТЬ РЕСУРСЫ ДРУГОГО КОМПА?

Чисто вопрос, сложно гуглить подробности, или не знаю каких-то базовых ключевых слов(одни серверы игр и больших компаний).
Я слышал про облачные вычисления, но всегда думал это что-то для больших компаний, делал свою программу типа TeamViewer когда-то ради прикола, а ща дошло, что можно же и реальную выгоду получать.
К примеру, есть ноут, есть комп, хочу запустить какую программу с сложными вычислениями, можно же их выполнить на другом компе. И получить результат.

Вопрос какие есть готовые решения, программы, не я один до такого додумался же?
Вопрос, а как программу допустим Visual Studio заставить скомпилировать собрать проект(где-то слышал такое) на другом компе(сервере).
И можно ли вообще для любой программы так сделать, к примеру, допустим такой код.
public static void Main(string []args){
  Console.WriteLine( fun()));  // больше не и чего нету 
}
 double fun(){
  int a;
   for(int i=0;i<100000;i++)
        for(int j=0;j<9999999;j++)
          for(int k=0;k<99999;k++)
                a = Math.Sqrt(Random.Next()*i+Math.Sqrt(j+k)) ;} /// все
}// писал в тостере.

И скомпилировал
А можно ли запустить программу и заставить данный код ИЗ ВНЕ запуститьcя на облаке? То есть сама программа не предполагала что ее часть можно запустить облачно. Возможно с помощью Внедрения Кода?
Это же то же я первый до такого додумался, есть решения или реализации.
  • Вопрос задан
  • 615 просмотров
Решения вопроса 1
@rPman
Облако - это просто способ абстрагироваться от конкретных машин и сервисов из которых оно состоит и оперировать этой абстракцией чтобы сказать - я запустил приложение в облаке, вместо - я запустил приложение на сервере, которое в текущим момент наименее нагружено и данные берет вот с этого хранилища, которое я так же запустил, ну или как то так.

По факту, вы пишите приложение, для простоты предположим что окружение разработчика и на сервере похожее/совместимое, а затем просто его запускаете как то на удаленных серверах.
К примеру вы запускаете локально ваше приложение просто в командной строке, а теперь добавьте к нему в начале ssh login@server, и вот уже ваш скрипт работает на удаленном сервере но вывод его транслируется так же к вам локально. С точки зрения юзабилити вы как бы запускаете все у себя же локально но задействованные мощности совокупны использованным серверам. Само собой нужно разрабатывать свой софт таким образом чтобы он в принципе мог запускаться на нескольких машинах (хотя есть инструменты, позволяющие симулировать работу одной машины на кластере, автоматически расшаривая в т.ч. общую память, получая как бы многоядерную машину с огромным объемом памяти, правда это не так эффективно как заниматься этим самому).

Вполне возможно вам понадобится какой то контроль над этим процессом и главное данными, с которыми ваши приложения работают. Когда у вас 1-2..ну пять серверов, можно что то руками делать, следить за результатом самостоятельно и в зависимости от результата принимать решение, но логичнее это доверить так же машине (написать приложение, которое позволит управлять процессом запуска/остановки служб, следить за результатом их работы, ошибками, мониторить нагрузку и эффективность и как то это все предоставлять вам человеку в виде ui, и помнить что все это будет в процессе разработки и модификации своих приложений).

С данными отдельный разговор, если есть возможность их расшарить/выделить для этого отдельный сервер или воспользоваться готовыми платными сервисами типа амазон - уже хорошо, но если используемых данных мало, их можно просто при каждом запуске копировать на сервер и обратно тем же rsync (если хранить в файлах).

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

p.s. не пытайтесь найти на все готовое решение, фреймворк, библиотеку, тулкит... особенно когда задача слишком абстрактна, можете потратить на разборки больше времени чем накидать простой набор утилит самому, ведь лучше вас в вашей задаче никто не разбирается
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
gbg
@gbg
Любые ответы на любые вопросы
Да возможно. Есть решения и их огромное количество, для разных задач - разные.

Для математики, например, студентам преподают MPI. Для бигдаты кто-то использует HADOOP.

Запуск неадаптированных для работы программ в облаке, как правило, выливается в жуткие тормоза. Но делать это можно - можно просто арендовать мощный компьютер и зайти на него по RDP.
Ответ написан
Комментировать
Griboks
@Griboks
Гуглите по теме miner botnet.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы