Организация стыковки запросов на ресурс с соответствующими ресурсами

Иллюстрации

Показать все

Изобретение относится к способам, системам для организации стыковки запросов на ресурс с соответствующими ресурсами. Техническим результатом является повышение эффективности маршрутизации сообщений в сети. Двусвязные сортированные списки проходятся в обоих направлениях с использованием арифметических операций по модулю. Сортированные списки могут быть разбиты на основе нескольких метрик близости. Чтобы обеспечить более эффективную маршрутизацию, таблицы маршрутизации узла обеспечивают логарифмический показатель для узлов внутри пространства идентификаторов инфраструктуры объединения. Сообщения могут быть маршрутизированы в узлы внутри кольца и проксимально маршрутизированы в узлы в других полученных в результате разбиения кольцах. 4 н. и 46 з.п. ф-лы, 11 ил.

Реферат

Перекрестная ссылка на родственные заявки

Эта заявка является продолжением заявки на патент США с регистрационным номером 10/971.451, поданной 22 октября 2004 и озаглавленной "Rendezvousing Resource Requests With Corresponding Resources", полностью включенной в данное описание по ссылке.

1. Область техники, к которой относится изобретение

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

2. Предшествующий уровень техники

Вычислительные системы и соответствующая технология оказывают влияние на многие аспекты общества. Действительно, возможность вычислительной системы обрабатывать информацию преобразовала наш образ жизни и работы. Теперь вычислительные системы обычно выполняют совокупность задач (например, электронную обработку текстов, планирование и управление базами данных), которые до появления вычислительной системы выполнялись вручную. Ранее вычислительные системы подсоединялись друг к другу и к другим электронным устройствам для формирования проводных и беспроводных вычислительных сетей, через которые вычислительные системы и другие электронные устройства могли передавать электронные данные. В результате многие задачи, выполняемые в вычислительной системе (например, речевая связь, доступ к электронной почте, управление бытовой электроникой, Web-просмотр (броузинг) и печать документов), включают в себя электронную связь между некоторым количеством вычислительных систем и/или других электронных устройств через проводные и/или беспроводные вычислительные сети.

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

Соответственно, для вычислительных систем были разработаны различные механизмы (например, Служба Доменных Имен ("DNS"), Активный Каталог (Active Directory, "AD") (продукт компании Microsoft, предназначенный для обеспечения управления, защиты, доступа и разработки компонентов сети), Распределенные Файловые Системы ("DFS")) для идентификации ранее неизвестных систем (и доступа к ним). Однако из-за количества и многообразия ресурсов (например, устройств и служб), которые доступны через различные вычислительные сети, разработчикам часто требуется разрабатывать приложения, которые реализуют разнообразные различные механизмы идентификации ресурса и доступа к ресурсу. Каждый особый механизм может иметь особые требования на кодирование и не может обеспечить разработчика всеми функциональными возможностями, которые необходимы в приложении.

Например, хотя DNS имеет распределенную административную архитектуру (то есть централизованное управление не требуется), DNS недостаточно динамична, не является самоорганизующейся, поддерживает неполные данные и модель запросов и имеет фиксированный набор корней. С другой стороны, AD достаточно динамичен, но требует централизованного администрирования. Дополнительно, аспекты различных механизмов могут быть несовместимы друг с другом. Например, ресурс, идентифицированный с использованием DNS, может быть несовместимым с протоколами маршрутизации DFS. Соответственно, разработчик может быть вынужден выбирать наиболее применимый механизм и воздерживаться от преимуществ других механизмов.

Особенно проблематичны могут быть механизмы для идентификации ресурсов в одноранговых сетях. DNS обеспечивает службу поиска, с именами хостов в качестве ключей и IP-адресами в качестве значений, основанную на совокупности специальных корневых серверов для выполнения запросов на поиск. Дополнительно, DNS требует управления информацией (записями NS (службы имен)) для обеспечения клиентам возможности навигации по иерархии сервера доменных имен. Соответственно, прежде чем ресурс может быть идентифицирован в сети, ресурс должен быть введен в DNS. В сетях больших масштабов, где узлы часто подсоединяются к сети и отсоединяются от сети, не всегда практично формирование сети на основе ввода информации. Дополнительно, DNS специализирован для задачи поиска хостов или служб и, в основном, не применим для других видов ресурсов.

Соответственно, для устранения указанных недостатков были разработаны другие механизмы для идентификации ресурсов и доступа к ним. Совокупность механизмов включает в себя протоколы распределенного поиска, которые являются более масштабируемыми, чем DNS. Эти механизмы используют различные схемы и алгоритмы маршрутизации для маршрутизации запросов к соответствующим ресурсам и для хранения информации для поиска.

По меньшей мере один из указанных механизмов маршрутизации сообщения в узел-адресат использует локальные многоуровневые карты соседних узлов в каждом узле в сети. Это, по существу, приводит к архитектуре, где каждый узел является "корневым узлом" соответствующего дерева узлов (узлов в его карте соседних узлов). Сообщения инкрементно маршрутизируются к ID (идентификатору) адресата, цифра за цифрой (например, ***6 => **46 =>, *346 => 2346, где *s представляет групповые символы). Эффективность маршрутизации механизмов указанных видов составляет O(log N) элементарных транзитных участков («прыжков») маршрутизации и требует поддержание узлами таблицы маршрутизации размера O(log N).

По меньшей мере один другой из указанных механизмов назначает узлам уникальный ID, который берется из линейного кольца чисел. Узлы поддерживают таблицы маршрутизации, которые содержат указатели на непосредственные узлы-последователи (согласно значению ID) и на те узлы, значения ID которых являются наиболее близкими последующими значениями для значения ID+2L. Эффективность маршрутизации этих видов механизмов также составляет O(log N) прыжков маршрутизации и требует поддержание узлами таблицы маршрутизации размера O(log N).

По меньшей мере один дополнительный механизм требует O(log N1/d) прыжков маршрутизации и требует поддержание узлами таблицы маршрутизации размера O(D). Соответственно, эффективность маршрутизации всех указанных механизмов зависит, по меньшей мере частично, от количества узлов в системе.

Дополнительно, так как идентификаторы ID (по меньшей мере некоторых из механизмов) могут быть распределены по кольцу равномерно, всегда существует некоторая возможность, что маршрутизация между узлами на кольце приведет к некоторой неэффективности. Например, прыжки маршрутизации могут пересекать обширные географические расстояния, пересекать более дорогостоящие линии связи или проходить через небезопасные домены и т.д. Дополнительно, когда маршрутизация сообщения включает в себя многочисленные прыжки, имеется некоторая возможность, что такие события будут происходить многократно. К сожалению, указанные механизмы не учитывают близость узлов (физическую или иную) относительно друг друга. Например, в зависимости от распределения узлов на кольце маршрутизация сообщения из Нью-Йорка в Бостон может включать в себя маршрутизацию сообщения из Нью-Йорка в Лондон, в Атланту, в Токио и затем в Бостон.

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

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

РАСКРЫТИЕ ИЗОБРЕТЕНИЯ

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

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

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

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

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

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

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

ПЕРЕЧЕНЬ ЧЕРТЕЖЕЙ

Для дополнительного пояснения вышеупомянутых и других преимуществ и признаков настоящего изобретения будет приведено более конкретное описание изобретения, согласно определенным вариантам его осуществления, которые иллюстрируются приложенными чертежами. Ясно, что указанные чертежи изображают только типичные варианты осуществления изобретения и, следовательно, не должны рассматриваться в виде ограничения его контекста. Изобретение будет описано и пояснено более определенно и подробно с использованием приложенных чертежей.

Фиг.1 - иллюстрация примера инфраструктуры объединения.

Фиг.2 - иллюстрация примера архитектуры вычислительной системы, которая обеспечивает опосредованную маршрутизацию запроса к партнерам.

Фиг.3 - иллюстрация возможного двоичного отношения между узлами в инфраструктуре объединения в виде сортированного списка и соответствующего кольца.

Фиг.4 - иллюстрация возможного кольца из колец, которое обеспечивает проксимальную маршрутизацию.

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

Фиг.6 - иллюстрация соответствующей операционной среды для принципов настоящего изобретения.

Фиг.7 - иллюстрация возможной блок-схемы последовательности операций способа заполнения таблицы маршрутизации узла, который учитывает критерии близости.

Фиг.8 - иллюстрация возможной блок-схемы последовательности операций способа разбиения узлов инфраструктуры объединения.

Фиг.9 - иллюстрация возможной блок-схемы последовательности операций способа заполнения таблицы маршрутизации узла.

Фиг.10 - иллюстрация возможной блок-схемы последовательности операций способа числовой маршрутизации сообщения в направлении к узлу-адресату.

Фиг.11 - иллюстрация возможной блок-схемы последовательности операций способа проксимальной маршрутизации сообщения в направлении к узлу-адресату.

ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ

ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ

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

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

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

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

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

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

Варианты осуществления внутри контекста настоящего изобретения включают в себя носитель информации, считываемый компьютером, для переноса или хранения на нем инструкций, исполняемых компьютером, или структур данных. Таким носителем информации, считываемым компьютером, может быть любой доступный носитель информации, к которому может осуществлять доступ универсальная или специализированная вычислительная система. В виде возможного варианта, такой носитель информации, считываемый компьютером, может включать в себя физический носитель информации, такой как ОЗУ, ПЗУ, электрически программируемое ПЗУ (EPROM), CD-ROM или другой накопитель на оптических дисках, накопитель на магнитных дисках или другое магнитное запоминающее устройство и т.д., либо любой другой носитель информации, который может использоваться для переноса или хранения требуемых средств кода программы в виде инструкций, исполняемых компьютером, инструкций, считываемых компьютером, или структур данных, к которому может осуществить доступ универсальная или специализированная вычислительная система.

В этом описании и в последующей формуле изобретения "сеть" определена как один или большее количество линий передачи данных (возможно поддерживающих различные скорости), которые обеспечивают возможность передачи электронных данных между вычислительными системами и/или модулями (например, аппаратными и/или программными модулями). Когда информация передается или обеспечивается в вычислительную систему через сеть или другое коммуникационное соединение (либо проводное, либо беспроводное, либо комбинацию проводного и беспроводного), это соединение правильно рассматривать как носитель информации, считываемый компьютером. Соответственно, любое такое соединение правильно называть носителем информации, считываемым компьютером. Комбинации вышеупомянутых сред и носителей должны также охватываться понятием «носитель информации, считываемый компьютером». Инструкции, исполняемые компьютером, содержат, например, инструкции и данные, которые вызывают выполнение универсальной или специализированной вычислительной системой некоторой функции или совокупности функций. Инструкциями, исполняемыми компьютером, могут быть, например, инструкции в двоичном или промежуточном формате, например, на языке ассемблера, или даже исходный код. В некоторых вариантах осуществления аппаратные модули, например, такие как специализированные интегральные схемы или вентильные матрицы, оптимизированы для выполнения принципов настоящего изобретения.

В этом описании и в последующей формуле изобретения "узел" определен как один или большее количество программных модулей, один или большее количество аппаратных модулей, либо их комбинации, которые совместно работают для выполнения операций в отношении электронных данных. Например, определение узла включает в себя аппаратные компоненты персонального компьютера, а также программные модули, такие как операционная система персонального компьютера. Физическое размещение модулей несущественно. Узел может содержать один или большее количество компьютеров, соединенных через сеть связи. Аналогично, узел может содержать одно физическое устройство (например, мобильный телефон или Персональный Цифровой Ассистент ("PDA")), где внутренние модули (такие как память и процессор) совместно работают для выполнения операций в отношении электронных данных. Дополнительно, узел может содержать специализированные аппаратные средства, например, такие как маршрутизатор, содержащий специализированные интегральные схемы.

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

Архитектура объединения

Фиг.1 иллюстрирует возможный вариант инфраструктуры 100 объединения. Инфраструктура 100 объединения содержит узлы 101, 102, 103, которые могут формировать различные виды объединяющих партнерств. Например, узлы 101, 102, 103 могут быть объединены друг с другом как равноправные (одноранговые), без корневого узла. Каждый из узлов 101, 102, 103 имеет соответствующий ID 171, 182 и 193 соответственно.

В основном, узлы 101, 102, 103 могут использовать протоколы объединения для формирования партнерств и обмениваться информацией (например, информацией о состоянии, относящейся к взаимодействию с другими узлами). Формирование партнерств и обмен информацией способствуют более эффективному и безопасному доступу к ресурсам. Между узлами 101, 102 и 103 могут существовать другие узлы-посредники (не изображены) (например, узлы, имеющие ID между 171 и 193). Соответственно, сообщение, маршрутизируемое, например, между узлом 101 и узлом 103, может проходить через один или большее количество других узлов-посредников.

Узлы в инфраструктуре 100 объединения (включая другие узлы-посредники) могут включать в себя соответствующие стеки протоколов стыковки. Например, узлы 101, 102 и 103 включают в себя соответствующие стеки 141, 142 и 143 протоколов стыковки соответственно. Каждый из стеков 141, 142 и 143 протоколов включает в себя прикладной уровень (например, прикладные уровни 121, 122 и 123) и другие нижние уровни (например, соответствующие другие нижние уровни 131, 132 и 133). Каждый уровень в стеке протоколов стыковки отвечает за различные функциональные возможности, относящиеся к организации стыковки запроса на ресурс с соответствующим ресурсом.

Например, другие нижние уровни могут включать в себя канальный уровень, уровень маршрутизации и функциональный уровень. В основном, канальный уровень отвечает за надежную транспортировку сообщения (например, с использованием WS-ReliableMessaging и Простого Протокола Доступа к Объектам ("SOAP")) из одной оконечной точки в другую (например, из узла 101 в узел 103). Канальный уровень также отвечает за обработку входящих и исходящих заголовков для надежной передачи сообщений и за поддержание состояния, относящегося к сеансам надежной передачи сообщений.

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

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

Объединяющие механизмы

Узлы могут объединяться с использованием нескольких различных механизмов. Первый объединяющий механизм включает в себя пересылку информации равноправными узлами во все другие равноправные узлы. Когда узел должен присоединиться к инфраструктуре объединения, узел использует протокол обнаружения на основе широковещания/группового вещания (мультивещания), например, такой как WS-Discovery, для объявления своего присутствия и выдает широковещательное/мультивещательное сообщение поиска для обнаружения других узлов. Затем узел устанавливает простое партнерство по пересылке с другими узлами, уже присутствующими в сети, и допускает новые партнерства с вновь присоединяющимися узлами. После этого узел просто пересылает все сообщения, определенные для приложения, во все свои узлы-партнеры.

Второй объединяющий механизм включает в себя равноправные узлы, которые наиболее эффективно передают сообщения, определенные для приложения, их адресату(ам). Когда новый узел должен присоединиться к инфраструктуре объединения, новый узел использует широковещательный/мультивещательный протокол обнаружения, например, такой как WS-Discovery для объявления своего присутствия и выдает широковещательное/мультивещательное сообщение поиска для обнаружения других узлов, являющихся частью инфраструктуры объединения. После обнаружения другого узла новый узел устанавливает партнерство с этим другим узлом. Из установленного партнерства новый узел узнает о присутствии других узлов, уже участвующих в инфраструктуре объединения. Затем он устанавливает партнерства с этими вновь узнанными узлами и допускает любые новые входящие запросы на партнерство.

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

Третий объединяющий механизм включает в себя равноправные узлы, опосредованно пересылающие все сообщения, определенные для приложения, к их адресату(ам). В этом третьем механизме узлам назначаются идентификаторы (ID), например, такие как 128-битный или 160-битный ID. Узлом, который отвечает за поддержание регистрации интереса в данном сообщении, определенном для приложения, может быть определен один из тех, чей ID является наиболее близким к полученному при отображении (например, хешировании) идентификатора адресата (например, URI) сообщения, определенного для приложения, в указанное пространство 128-битных или 160-битных ID.

В этом третьем механизме информация о поступлениях и уходах узлов лавинно маршрутизируется по всей структуре. С другой стороны, информация о регистрациях интереса в определенных сообщениях, определенных для приложения, пересылаются в узлы, определенные ответственными за поддержание такой информации регистрации. Для масштабируемости, выравнивания нагрузки и отказоустойчивости, узел, принимающий регистрацию интереса в определенных сообщениях, определенных для приложения, может обеспечить надежную лавинную маршрутизацию этой информации регистрации в пределах его набора окрестности. Набор окрестности для заданного узла может быть определен в виде набора узлов, имеющих идентификаторы внутри предварительно определенного диапазона с каждой стороны ID этого заданного узла.

Подобно второму механизму, вновь присоединяющийся узел использует широковещательный/мультивещательный протокол обнаружения, например, такой как WS-Discovery, для объявления своего присутствия и выдает широковещательное/мультивещательное сообщение локального поиска