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.
|
Проект |
Описание |
|
Один сообщениями, файлами, общаться в групповых чатах. Теперь приложение |
|
|
Этот |
|
|
Экспериментальный |
|
|
Проект |
|
|
Дает |
|
|
Сеть |
|
|
Этот |
Это далеко
не все существующие проекты. Их гораздо больше. Это просто сжатая выборка
некоторых из них для того, чтобы показать вам, что можно делать в пиринговых
сетях. Как видите, пиринговые сети представляют собой некий underground
Интернет (я не имею в виду популярные и те, что у всех на слуху — например,
ICQ, KaZaA, и пр.). У вас есть реальная возможность вынести свою идею
в люди и воплотить ее в жизнь. Более подробно о JXTA вы можете почитать
на официальном сайте проекта: http://www.jxta.org.
Алексей
Литвинюк (c)
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии