JXTA: будущее пиринговых сетей

Уже сравнительно давно в Интернет присутствуют различные P2P (peer-to-peer) сети. Основное их назначение, если брать во внимание самые распространенные из них, — это обмен всякого рода файлами. Однако мало кто знает, что подобные сети представляют собой золотую жилу не только для обычных пользователей, которым нужно найти/скачать новый фильм или музыкальную композицию, но и для предприятий, ведущих активную коммерческую деятельность в Интернет. В этой статье я хотел бы приоткрыть вам глаза на то, чем сегодня являются пиринговые сети и какое перспективное у них будущее — в особенности, с появлением JXTA.

Прежде чем начать разговор о непосредственно JXTA, посмотрим основные принципы функционирования пиринговых сетей и их принципиальные отличия от клиент-серверной технологии. Основная идея P2P-сетей состоит в том, что каждый пользователь этой сети (peer) является как клиентом, так и сервером одновременно.

Большинство сервисов Интернет построено на технологии client-server, которая подразумевает наличие одного сервера, который обрабатывает запросы от клиентов-пользователей. Основной недостаток такой топологии — высокие требования к производительности сервера. При большом количестве запросов сервер в лучшем случае выполняет свои функции слишком долго, в худшем — оказывается неработоспособным.
Примером сервисов, предоставляемых по этой технологии, великое множество:

World WideWeb, FTP, telnet, email (SMTP/POP3) и пр. Условно подобную топологию можно изобразить на рисунке:



Такая топология имеет и свои достоинства. Например, возможность использования "тонкого" клиента, поскольку основными вычислениями занимается серверная сторона.

Однако очень часто клиентская машина оказывается намного производительнее, чем это необходимо для работы. И в большинстве случаев процессорное время просто-напросто тратится впустую. Это многим кажется естественным, однако они не учитывают того, что таких клиентских машин очень и очень много. Если просуммировать то, что смогли бы сделать эти компьютеры во время своего простоя, работая вместе, то получится очень большая цифра. Производительность такой системы будет сравнима (если не превосходить) с производительностью самых мощных и современных суперкомпьютеров. Это что касается производительности. А если считать, что практически накаждом из обычных компьютеров есть много неиспользуемого свободного дискового пространства, то в итоге получается несравнимое ни с чем хранилище данных.

P2P-технологии дают возможность создавать сети, в которых каждый из клиентов является как поставщиком ресурсов (сервисов), так и их потребителем.

Казалось бы, зачем нужны P2P-сети, если можно на технологии client-server

построить что-то похожее на пиринговую сеть, вешая на клиентскую машину

различные сервисы, подобные тем, что работают на серверных машинах.

Но тут возникает множество проблем. Например, проблема динамических

IP-адресов. Множество пользователей-клиентов работают в Интернет посредством

dial-up-соединения по коммутируемым линиям. При этом они получают динамически

выделенные для них IP-адреса из спула адресов провайдера. Таким образом, чтобы найти нужную машину, необходимо точно знать этот IP-адрес. В пиринговых сетях эта проблема решена. И не только эта проблема.


Итак, каким образом устроены P2P-сети? Для начала изобразим простую топологию сети типа P2P.









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

другим машинам в пределах этой сети и получать их. Как сервер каждая

машина должна обрабатывать запросы от других машин в сети, отсылать

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

функции. Об этих функциях чуть позже.





Следует отметить важный недостаток такой топологии. Любой член данной

сети не гарантирует никому своего присутствия на постоянной основе.

Он может появляться и исчезать в любой момент времени. Но тот факт,

что сами по себе P2P-сети обычно достаточно велики, дает весьма немалый

шанс найти подобный сервис на другой машине либо дождаться очередного

появления пропавшей машины.


Среди P2P-сетей особенно следует выделить различные проекты по распределенным

вычислениям. Наверное, самый распространенный из них — это SETI@Home.

Этот проект, стартовавший в 1996 году, представлял собой screen-saver,

который во время простоя компьютера пользователя обрабатывал данные,

поступающие от радиотелескопа. Цель проекта — поиск внеземных цивилизаций.

С тех пор проектом заинтересовалось свыше 3 миллионов людей. Подобные

вычислительные системы позволяют не только искать следы внеземных цивилизаций,

но и решать более серьезные и полезные задачи. Так, например, существует

ряд проектов по распределенным вычислениям для нужд некоторых онкологических

клиник. Согласитесь, это уже не шутки и развлечения, а вполне себе серьезное

предприятие. Хотя многие могут поспорить, что важнее: искать инопланетян-гуманоидов

или помогать клиникам изучать рак… Ладно, я немного отвлекся.




Помимо чистых P2P-сетей, существуют так называемые смешанные сети. Это,

например, те пиринговые сети, которые используют выделенный сервер для

хранения и предоставления информации о существующих машинах сети, а

также их статусе: on-line, off-line и т.д. Классическим примером смешанной

пиринговой сети является небезызвестное детище Mirabilis — ICQ (www.icq.com),

увидевшая свет в ноябре 1996 года. ICQ позволяет своим пользователям

быстро и без особых проблем находить собеседников и друзей по интересам

для общения через Интернет. Помимо этого пользователи могут обмениваться

файлами. Центральный сервер Mirabilis используется как посредник. Вы

с помощью сервера находите интересного вам человека и дальше устанавливаете

соединение уже непосредственно с ним. В настоящих пиринговых сетях используется

несколько иной подход и алгоритм поиска активных машин в сети.

Проектов, подобных ICQ, на сегодняшний день существует достаточно много.

Например, Yahoo! (www.messanger.yahoo.com), MSN Messanger (www.messanger.msn.com),

AOL Internet Messanger (www.aol.com/aim). К сожалению, все эти проекты

и приложения, в них использующиеся, никак не совместимы. Не так давно

была предпринята попытка написать messanger, который дал бы возможность

пользователям из разных сетей общаться друг с другом. Проект называется

Jabber (www.jaber.com). Но такой ход не понравился некоторым из вышеназванных

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

Jabber'а.

На сегодняшний день проблема несовместимости — главный камень преткновения
пиринговых сетей. Каждая сеть, будь то Gnutella, Napster или ICQ, имеет

свои стандарты протоколов, свои спецификации. Подумайте только о том,
что можно было бы создать, объединив сегодня всех пользователей пиринговых
сетей едиными стандартами в одну огромную сеть! Просто неограниченные
возможности для каждого из членов сети. Именно для решения этой проблемы
— проблемы стандартизации и объединения — и был придуман и запущен проект
JXTA.

Совсем недавно Sun Microsystems, понимая перспективность пиринговых

сетей, а также некоторые проблемы, стоящие на пути их (сетей) развития,

формирует проект JXTA. Проект состоит из небольшой команды разработчиков

под руководством Билла Джоя (Bill Joy) и Майка Клэри (Mike Clary). Совместными

усилиями они проектируют различные спецификации и идеи по обслуживанию

и функционированию различных P2P-сетей различными приложениями. Эти

спецификации явились ядром проекта. JXTA — это всего лишь набор спецификаций

протоколов, которые решают все проблемы, о которых говорилось ранее,

и даже больше. Каждый, кто собирался писать P2P-приложение(я), сталкивался

с проблемой проектирования своих протоколов, которые позволили бы организовать

функциональную пиринговую сеть в соответствии с поставленными требованиями.

Сегодня благодаря JXTA разработчики могут облегчить свою участь, воспользовавшись

наработками профессионалов.


Спецификация протоколов JXTA версии 1.0 включает в себя следующие стандарты:





Протокол

Описание

Peer Discovery Protocol

Позволяет пользователям (peers) находить новых пользователей и предоставляемые ими сервисы

Peer Resolver Protocol

Позволяет пользователям посылать и обрабатывать обычные запросы

Rendezvous Protocol

Описывает поведение тех членов сети, которые, кэшируя информацию о различных ресурсах и пользователях, уменьшают трафик в сети

Peer Information Protocol

Дает возможность пользователю получать информацию о статусе других пользователей сети.

Pipe Binding Protocol

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

Endpoint Routing Protocol

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






Как многие, наверное, уже догадались (удивительно, если нет), все эти

протоколы по определению являются платформонезависимыми, а также не

зависят от какого-либо языка программирования. Это достигается тем,

что в качестве языка описания данных был использован XML. Этот выбор

обуславливается тем, что на сегодняшний день это — стандарт де-факто

для языка описания метаданных/данных. И потом, для каждого современного

языка программирования должен быть свой XML-парсер, а также множество

вспомогательных утилит для работы с XSL и пр. Вдобавок, та простота,

с которой были спроектированы протоколы JXTA, позволяет использовать

их на мобильных устройствах — таких, как PDA или сотовые телефоны.


Уже в апреле 2001 года Билл Джой знакомит P2P-сообщество с проектом

JXTA. Проект распространяется под лицензией Apache Software License

Version 1.1. В дополнение к самим спецификациям проекта были выложены

также реализация API на Java и исходный код нескольких проектов для

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

На сегодняшний день имеются реализации не только для Java, но и для

C, C++, Ruby, Perl 5.0. Что касается количества проектов, то их довольно

много. Причем некоторые из них представляют собой коммерческие приложения.

Многие корпорации строят у себя локальные (внутрикорпоративные) пиринговые

сети для того, чтобы сотрудники имели возможность обмениваться сообщениями,

файлами, документами, а также для эффективной распределенной деятельности.

Не считая этого, у компаний очень распространена идея открывать пиринговые

сети для своих клиентов с тем, чтобы иметь четкую аудиторию, в кругу

которой будут протекать немаловажные для компании процессы: общение,

обмен свежими релизами, feedback-отзывы о продуктах, рецензии на продукты

и пр. Причем с использованием этой технологии (P2P) можно предоставить

гораздо больше сервисов и удобств, нежели открывая внутренние usenet-конференции,

irc-серверы, download-сервисы и пр. Это также идет на руку клиентам

в случае неполадок на сервере компании, ведь пиринговые сети децентрализованы

по определению.

Процессы, протекающие в пиринговых сетях, а также спецификации протоколов

— довольно объемная тема. Поэтому об этом в другой статье. А пока я

хотел бы перечислить и выделить некоторые проекты, которые успешно функционируют

и развиваются. Все они написаны с использованием JXTA.

Проект

Описание

http://myjxta2.jxta.org/ 

Один

из первых JXTA-проектов. Позволяет пользователям обмениваться

сообщениями, файлами, общаться в групповых чатах. Теперь приложение

для работы в сети имеет GUI (Graphics User Interface), и работать

с ним очень легко и удобно

http://edutella.jxta.org/ 

Этот

проект создавался для обмена всевоз-можными ресурсами между образовательными

учреждениями Германии (включая Han-nover, Braunschweig и Karlsruhe),

шведскими университетами (включая Stockholm и Uppsa-la), Стэндфордским

университетом (Stanford Universi

http://vop2p.jxta.org/ 

Экспериментальный

проект. Идут попытки организовать децентрализованную телефон-ную

сеть via P2P

http://oopster.jxta.org/ 

Проект

от Open Office (www.openoffice.org). Здесь можно найти практически

все самые новые и самые скачиваемые приложения и прочие файлы

http://chess.jxta.org/ 

Дает

возможность поиграть или последить за игрой других в такую великую

игру, как шахматы

http://brando.jxta.org/ 

Сеть

для разработчиков программного обеспечения. Место, где разработчики

делятся своими исходными текстами, утилитами и пр.

http://jxme.jxta.org/ 

Этот

проект занимается проблемами исполь-зования мобильных устройств

в пиринговых сетях JXTA. Имеются приложения на J2ME, которые позволяют

пользователям мобиль-ных устройств участвовать в сети myJXTA

Это далеко

не все существующие проекты. Их гораздо больше. Это просто сжатая выборка

некоторых из них для того, чтобы показать вам, что можно делать в пиринговых

сетях. Как видите, пиринговые сети представляют собой некий underground

Интернет (я не имею в виду популярные и те, что у всех на слуху — например,

ICQ, KaZaA, и пр.). У вас есть реальная возможность вынести свою идею

в люди и воплотить ее в жизнь. Более подробно о JXTA вы можете почитать

на официальном сайте проекта: http://www.jxta.org

Алексей

Литвинюк (c)

litvinuke@tut.by


www.litvinuke.hut.ru