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

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 включает в себя следующие стандарты:



Как многие, наверное, уже догадались (удивительно, если нет), все эти протоколы по определению являются платформонезависимыми, а также не зависят от какого-либо языка программирования. Это достигается тем, что в качестве языка описания данных был использован 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



Компьютерная газета. Статья была опубликована в номере 04 за 2003 год в рубрике сети :: network

©1997-2024 Компьютерная газета