четверг, 31 мая 2007 г.

Google+Параллелизм: экспансия продолжается

Нужен ли параллелизм?...2 дня назад на Thinking Parallel появилась занятная статья - "How Much of the Industry Will Go Parallel?" - "Насколько параллелизм востребован IT-индустрией сегодня ?", в которой Michael Suess высказывает свои предположения по этому поводу. Нужно сказать, что Michael Suess вообще достаточно интересная личность, и с точки зрения параллельного программирования тоже ;) (особенно мне ценен его цикл интервью, ru: здесь и здесь). Дак вот Михаил считает, что параллельное программирование будет интересно прежде всего двум группам разработчиков. К первой группе относятся те, кто вечно борется с нехваткой ресурсов и производительности - это все возможные разработчики игр, систем моделирования, систем обработки сигналов и информации. Ко второй же ещё более малочисленной на сегодняшний день группе относятся разработчики, которые захотят использовать многоядерный параллелизм для придания своим приложениям большей интерактивности и других(не известных на сегодняшний день) преимуществ и фишек. Среди прочих Михаил приводит такой пример - вы ведете конференцию по ICQ\Skype, а параллельно с этим сторонняя утилита распознает некоторые ключевые слова в вашем диалоге и подыскивает информацию, которая может потенциально вас заинтересовать... скажем вы часто говорите про параллельное программирование - вот вам свежая подборка с тематических новостных сайтов и блогов, обсуждаете девушек - вот вам... ну вообще додумаете сами).


GearsИ все бы, как говориться, ничего, но вот только сегодня получаю подтверждение, что параллелизмом интересуются не только ресурсо-фобы(первая группа), но и Google. Новое приложение этой компании можно смело отнести к каркасу, который призван поддерживать вторую группу "параллельных разработчиков". Новый продукт называется Google Gears и призван помочь разработчикам в создании нового(в какой-то степени) класса приложений - offline-online application. Эти приложения работают в рамках браузера, но при этом для их работы не обязательно требуется доступ в интернет (т.е. для выполнения некоторых функций им может быть нужен доступ в сеть, но вообще они могут работать и без него). Краткое описание этой новинки от Google находиться здесь. И так, этот библиотечный каркас включает в себя:

  • Локальный сервер - используется для кэширования и обслуживания ресурсов, которые нужны приложению для работы (HTML, JavaScript, рисунки, видео и т.д.). Приложение получит доступ к ним локально, если доступ к удаленному серверу отсутствует.
  • БД - для хранения всего этого дела и прочей информации приложения
  • и самое интересное Пул процессов(worker thread pool). Концепция пула процессов далеко не нова - это некоторое хранилище процессов, которые выделяются по требованию приложения. Дак вот Google встроил такой пул в свой каркас, как раз для того чтобы упростить разработку интерактивных (т.н. насыщенных параллелизмом) приложений. Полное описание worker thread pool API находится здесь. Вкратце скажу, что процессы, которые выделяются из пула, могут взаимодействовать только через посылку сообщений. Сообщения представляют собой строки, если нужно передать не строку, требуется предварительная "сериализация". Отдельно отмечу, что в пуле хранятся не потоки операционной системы, а т.н. легковесные процессы, что в сочетании с использованием сообщений для взаимодействия таких процессов делают всю систему похожей на Erlang-овские системы.


Такие дела, да чуть не забыл, все это великолепие за лицензировано как Open Source.