Размышления о «туманных вычислениях»

Доброго времени суток.
На Хабре уже мелькала статья на данную тематику. Я хочу попробовать развить эту тему, и поделиться своими мыслями — как бы оно могло быть.
Итак, что же такое «туманные вычисления», или «fog computing». Это вычисления, основанные на распределенной инфраструктуре с негарантированной доступностью. Топологически — это ячеистая (mesh) сеть с динамической маршрутизацией, узлами которой являются сравнительно однородные по вычислительной мощности компьютеры.
В идеале, в эру «туманных вычислений» компьютеры-узлы находятся буквально повсюду — под ногами, в воздухе, на улице… Они настолько миниатюрны и дешевы, что их можно носить с собой килограммами. В наше время это скорее всего будет какая-то программная среда, консолидируюшая ресурсы множества виртуализованных «капель», и позволяющая на такой параллельной машине выполняться программам, написанным под кросс-платформенные среды — платформенная зависимость в таком окружении будет убийственна. Скорей всего, речь будет идти о Java, CLR, Python, JavaScript…

Что касается аппаратной базы — вряд ли это будут микроконтроллеры в чистом виде — ресурсы микроконтроллера сильно ограничены и малодостаточны для создания разделяемой среды. А ведь скорей всего, «капли» будут обслуживать параллельно несколько потребителей. Но сама концепция исполнения таких устройств близка к концепции микроконтроллера, или SoC. По моему разумению выглядеть чип такого устройства будет следующим образом: на одном кристалле размещаются многоядерный CPU, GPU, 3-4 Гб DRAM, и 32 Гб SSD плюс периферийная логика по минимуму. Наружу выходит минимум интерфейсов — SATA и SD для «программирования» (записи ОС на SSD), HDMI+VGA+USB в случае если система используется в качестве рабочего места, LightPeak или 10GE для межсистемных коммуникаций. Если это управляющий узел — то GPIO. Возможно — какой-то локальный радиоинтерфейс. В целом такая система стремится к дизайну Atom CE или Raspberry Pi — минималистичный энергоэффективный вычислительный комплекс. Безусловно, найдется место и для аккумулятора, и для беспроводного приемника электроэнергии.

Программная основа в первую очередь, вероятно, будет включать в себя гипервизор, способный консолидировать мощность «туманной сети» и представлять их как одну многопроцессорную систему. Такой подход в свое время уже использовался в ОС OpenMosix. Запрошенные потребителем (другой «каплей») ресурсы выделятся в виде виртуальной машины, в которой запускается, например, bare-metal Java-машина. В ней развертывается пакет приложения, приложение запускается, и так далее…

Особо стоит упомянуть о роли компьютеров-каплей в качестве «пользовательского терминала» — это единственный сценарий, когда к «капле» подключается какая-то периферия. Мне это видится, как некие устройства оболочки, наподобие SmartDocks от Motorola: оболочка-смартфон, оболочка-планшет, оболочка-ноутбук, оболочка-десктоп. Оболочка-ноутбук и оболочка-десктоп вполне могут вмещать в себя несколько модулей, и таким образом нести многоузловой частный кластер, «облачко тумана». А человек превращается в реальную PAN.

При таком подходе апгрейд системы превращается в простое подключение новых узлов. Если узлы-капли будут размером с MicroSD-карточку, будущим системным блоком вполне может оказаться трехлитровая банка с пластинами беспроводного питания по торцам, и тоненькой ниточкой оптики к огромному монитору.
В такой ситуации «три килограмма контрафактных серверов» уже не выглядят бредом.

Суммируя вышесказанное, можно отметить, что нам не видать «туманных ПК» и «туманных сетей» пока не будут выполнены следующие требования:

— Наличие высокоэффективных (в Вт/MIPS) SoC распространенной архитектуры (ARM, x86, AMD64) с минимальной обвязкой по экстремально низкой цене ($2 — $10)
— Стандартизация и распространение консолидирующих гипервизоров
— Повсеместное распространение IPv6 и скоростных интерфейсов — как кабельных, так и беспроводных.
— Наличие дешевых и емких источников автономного питания (как минимум на порядок более емких, чем литий-ионные аккумуляторы)

За кадром остались вопросы аутентификации, авторизации, и разделения ресурсов «капли» несколькими «туманными сетями».
Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 25

    +2
    Думаю, в это направление хорошо вписывается Erlang
      0
      Возможно. Но из всего, что я знал об Erlang'е, мне запомнилось лишь то, что на нем писались прошивки для Ericsson'ов. И вроде бы ejabberd. Так что, ИМХО, этот язык — эндемик, тогда как вышеупомянутые весьма на слуху и в ходу.
        +1
        Ещё CoachDB, например, на Erlang написана.
          +1
          и ее сейчас переписывают на С++ :)
            +1
            Насколько я знаю, переписывают критические участки кода для оптимизации.
          0
          Так он эндемик именно потому, что ниша параллельных/распределённых вычислений весьма узка.
          Просмотрите описание — в Эрланге уже по сути реализованы именно туманные вычисления.
          Только на практике все капли находятся в пределах одного устройства.
            0
            Я же не зря помянул OpenMosix — там распараллеливание инфраструктурно. Т.е. параллелизм должен быть не в языке, а в инфраструктуре.

            Шейдерная модель «ядро+поток» хорошо параллелится. Массив «капель» может выступать как vGPU (вспомним Larrabee), или многоядерник, если приложение тупо многопоточное. Так что не так уж и узка.
            0
            В erlang уже давно есть готовые модули для таких вещей, как самоорганизация одноранговых сетей, выбор лидера группы, подключение и удаление узлов сети и т.п. В саму основу языка заложены масштабируемость и стойкость к потерям узлов или данных.
            Также есть европейский проект по созданию самоорганизующейся облачной ОС, основанной на linux и erlang.

            А вот openMosix был довольно специфичной ОС, т.к. не поддерживал shared memory ни в каком виде.
            0
            По звучанию ещё Gosler неплохо так подходит…
            0
            А не является ли по сути тот же проект SETI@home по поиску сигналов от внеземных цивилизаций образцом «туманных вычислений»?
            Есть большое кол-во компьютеров-узлов, не всегда доступных, выполняющих в моменты неактивности (запуска скринсэйвера) вычисления, и собирающих в одном месте в итоге.
            Вроде как и похоже, поправьте если я понял неправильно.
              0
              SETI — это типичный грид. «Туманность» подразумевает наличие большого (около десятка) типовых узлов в локальном пространстве, и добавляет прозрачную миграцию нитей (threads) и хотплаг. ИМХО. Возможны даже некие «бродячие» программы-агенты, сходные с сетевыми червями по природе: в случае чего сериализуется и «переползает» и/или «реплицируется» на соседние узлы.
                0
                По-моему, это должно быть не «возможно», а основная штатная функция гипервизора, поскольку любая «капля» может отключится или выйти из зоны действия сети внезапно и без уведомлений. А на гостевые капли (про которые гипервизор или его распределенный аналог не может сказать, что они бесперебойно работают долгое время в его сети) процессы могут изначально дублироваться в надежде что хоть один до конца доработает и вернёт результат. Сериализация тут, по-моему, не очень уместна, скорее декомпозиция основной задачи на несколько элементарных подзадач, которые можно выполнять параллельно и асинхронно и довольно быстро (миллисекунды), чтобы необходимость пересчитать что-то заново из-за умершей капли не была заметна пользователю.

                В общем видится как-то так: Узел, которому нужны внешние вычислительные ресурсы кричит (широковещательное сообщение) что-то вроде «нужен результат функции такой-то с такими параметрами, кто может посчитать?». Свободные узлы отвечают «Я, я, я, я...». Некоторые могут добавить «эта функция у меня уже в памяти», а какие-то вообще «Уже есть закешированный результат для этих параметров, вот он». Инициирующий узел выбирает те, что «поближе» (пинг) и понадежнее/побыстрее (из истории предыдущих обменов) и поручает им вычисление. Если за разумное время ответа не получено (или исполнительный узел не пингуется), то сеть опрашивается заново.
              0
              В чем-то соглашусь, а в чем-то и нет с автором. Я вижу начало fog computing в расшаривании через PAN и SR-RF сети лишних ресурсов от устройств, питающихся от сети общего пользования (220В). Сейчас для большинства беспроводных устройств проблема в питании. Есть неплохие аккумуляторы, но их нужно заряжать. Количество устройств, требующих регулярной подзарядки катострофически растет. Для экономии заряда батарей на вычисления можно «выгрузить» ресурсы с телефона на телевизор, утюг, холодильник, вытяжку, чайник. Все равно там есть какие-то полупроводники. Стоимость их изготовления не сильно вырастет, если добавить в них небольшой SoC, который будет шариться через какой-то ZigBee-подобную сеть.

              ЗЫ. Рад, что моя тема получила развитие :)
                0
                А я рад, что благодаря ей смог попасть на Хабр. Это моя четвертая попытка :)

                Вот, имхо, SoC должен быть достаточно мощным, чтобы и выполнять штатные функции, и иметь мощности для офф-лоада
                +2
                И почему все забывают о таком штуке как алгоритмы? Сколько процентов софта сейчас поддерживает 2хядерные процессоры? и это в 2012году то… а запускать что-то на каплях будет еще веселее…
                  +1
                  Вот-вот. Замечательный есть вопрос: что такого полезного можно запускать на каплях?
                    0
                    А что, мало многопоточных и ресурсоемких приложений? Фотошоп вон, запустите, или агенты рендеринга 3DS MAX. Базу данных — причем в таком окружении будет хороша DHT. Три килограмма серверов — это серьезно.
                      0
                      Таким образом ваша «капля» должна быть достаточно мощным устройством. И еще: если вы считаете что в таком микро-исполнении (сотни в банке) удастся создать достаточно мощные устройства, то что может мешать сосредоточить эту мощь в одном традиционном устройстве (сотни ядер процессора например)? Мощность та же, исполнение на порядок проще на мой взгляд.

                      Если же под облачными вычислениями вы понимаете использование незадействованных ресурсов любых устройств, то здесь во весь рост встает проблема скорости взаимодействия и получения результата вычичсления. Такой подход может подойти для долгоиграющих, не интерактивных, задач по типу SETI или брутфорс или свертка белков. Но здесь возникает другая проблема — как мотивировать владельца устройства?
                        0
                        На последний вопрос пока есть только такая идея: Снизить стоимость устройства или ОС на стоимость вычислений за достаточно длительный период. Т.е. грубо говоря смартфон стоит на 10 баксов дешевле, подразумевая что в нем запущен неотключаемый агент выполняющий по заказу вендора определенные вычисления.
                          0
                          Давайте я попробую ответить?
                          Да, «капля» — достаточно мощное и автономное устройство, фактически миниатюрный сетевой компьютер. Сейчас сложно сказать — вытеснят ли «туманные» решения классические десктопы, смартфоны, или будут сосуществовать.
                          Простота в виде многоядерника-десктопа на самом деле тоже спорна — то же самое практически, но в макромасштабе, сложнее масштабировать и обновлять: то ли засыпать в баночку новые «капли», то ли менять материнскую плату, процессор и память.

                          При туманных вычислениях именно что вопрос скорости не встает — это локализованная PAN по большей части, а удаленные сегменты есть смысл задействовать как в SETI. С консолидирующим ПО и некоторыми программными ухищрениями, такая сеть может на лету перестраиваться: часть капель работают как CPU, часть как GPU, часть как криптоускоритель — а поверх этого функционирует вполне стандартная ОС, загрузка которой инициируется с единственной пользовательской капли.

                          В принципе мотивация предусмотрена уже ценой и заложенной в решение масштабируемостью — вставил кубик «капли» — нарастил мощность. Апгрейд в любое время. Уверенность в совместимости.
                        0
                        Хром с его концепцией «одна вкладка — один процесс» :)
                      +1
                      Локализаторы Кенг Хо из «Глубины в небе» — вот 100% ваша идея :)
                        0
                        Вернор Виндж? Надо будет осилить раз так…
                        0
                        В вашем будущем слишком много проводов и лишних интерфейсов. Скорее будет один универсальный Wireless USB, нежели то, что Вы описали.
                          0
                          WUSB не панацея, от проводников для питания, и внутри кристалла никуда не деться, а в ряде случаев провод проще и дешевле. Так что какие-то провода безусловно будут, но их будет меньше, чем сейчас.

                        Only users with full accounts can post comments. Log in, please.