Гобелен (DHT) - Tapestry (DHT)
Написано в | C ++ |
---|---|
Тип | пиринговый |
Интернет сайт | Текущий |
Гобелен это пиринговый оверлейная сеть что обеспечивает распределенная хеш-таблица, маршрутизация, и многоадресная передача инфраструктура для распределенных приложений.[1] Гобелен пиринговый Система предлагает эффективную, масштабируемую, самовосстанавливающуюся маршрутизацию с учетом местоположения к ближайшим ресурсам.
Вступление
Первое поколение одноранговых приложений, включая Napster, Гнутелла, имел ограничивающие ограничения, такие как центральный каталог для Napster и широковещательные запросы с ограниченным объемом для Gnutella, ограничивающие масштабируемость. Для решения этих проблем было разработано второе поколение P2P-приложений, включая Tapestry, Аккорд, Кондитерские изделия, и МОЖЕТ. Эти наложения реализуют базовый механизм маршрутизации на основе ключей. Это позволяет детерминированную маршрутизацию сообщений и адаптацию к сбоям узлов в оверлейной сети. Из названных сетей Pastry очень близка к Tapestry, поскольку обе они используют один и тот же алгоритм маршрутизации Plaxton et al.
Tapestry - это расширяемая инфраструктура, которая обеспечивает децентрализованное расположение объектов и маршрутизацию с упором на эффективность и минимизацию задержки сообщений. Это достигается за счет того, что Tapestry создает локально оптимальные таблицы маршрутизации из инициализации и поддерживает их, чтобы уменьшить растяжение маршрутизации. Кроме того, Tapestry позволяет определять распределение объектов в соответствии с потребностями данного приложения. Точно так же Tapestry позволяет приложениям реализовывать многоадресную передачу в оверлейной сети.
Алгоритм
API
Каждому узлу назначается уникальный идентификатор узла, равномерно распределенный в большом пространстве идентификаторов. Tapestry использует SHA-1 для создания 160-битного пространства идентификаторов, представленного 40-значным шестнадцатеричным ключом. Идентификаторам GUID конечных точек приложения аналогичным образом назначаются уникальные идентификаторы. Идентификаторы узлов и GUID примерно равномерно распределены в оверлейной сети, и каждый узел хранит несколько разных идентификаторов. Эксперименты показали, что эффективность Tapestry увеличивается с увеличением размера сети, поэтому несколько приложений, использующих одну и ту же оверлейную сеть, повышают эффективность. Чтобы различать приложения, используется уникальный идентификатор приложения. Tapestry максимально старается публиковать и маршрутизировать объекты.
- PublishObject
- UnPublishObject
- RouteToObject
- RouteToNode (для точного совпадения, а не для ближайшего совпадения)
Маршрутизация
Маршрутная сетка
Каждый идентификатор отображается на действующий узел, называемый корнем. Если nodeID узла - G, то это корень, иначе используйте nodeID и IP-адреса таблицы маршрутизации для поиска соседей узлов. На каждом шаге сообщение постепенно направляется ближе к G за счет инкрементной маршрутизации суффиксов. Каждая карта соседей имеет несколько уровней, где каждый уровень содержит ссылки на узлы, соответствующие определенной позиции цифры в идентификаторе. Первичный яth запись в jth level - это идентификатор и местоположение ближайшего узла, который начинается с префикса (N, j-1) + i. Это означает, что уровень 1 имеет ссылки на узлы, которые не имеют ничего общего, уровень 2 имеет первую общую цифру и т. Д. Из-за этого маршрутизация занимает приблизительно переходов в сети размера N и идентификаторов базы B (шестнадцатеричный: B = 16). Если точный идентификатор не может быть найден, таблица маршрутизации будет направлена на ближайший соответствующий узел. Для обеспечения отказоустойчивости узлы сохраняют c вторичных ссылок, чтобы таблица маршрутизации имела размер .
Публикация и расположение объекта
Участники сети могут публиковать объекты, периодически направляя сообщение публикации к корневому узлу. Каждый узел на пути хранит указатель, отображающий объект. Несколько серверов могут публиковать указатели на один и тот же объект. Резервные ссылки имеют приоритет по задержке и / или местоположению.
Объекты обнаруживаются путем направления сообщения к корню объекта. Каждый узел на пути проверяет сопоставление и соответствующим образом перенаправляет запрос. Эффект маршрутизации - схождение близлежащих путей, ведущих к одному и тому же месту назначения ....
Динамические узлы
Вставка узла
Новый узел становится корневым для своего nodeID. Корень находит длину самого длинного префикса общего идентификатора. Затем он отправляет многоадресное сообщение, которое достигает всех существующих узлов с одним и тем же префиксом. Затем эти узлы добавляют новый узел в свои таблицы маршрутизации. Новый узел может стать корневым для некоторых корневых объектов. Узлы свяжутся с новым узлом, чтобы предоставить временный список окрестностей. Затем новый узел выполняет итеративный поиск ближайшего соседа, чтобы заполнить все уровни своей таблицы маршрутизации.
Вылет узла
Чтобы покинуть сеть, узел транслирует свое намерение покинуть сеть и передает замещающий узел для каждого уровня в таблицах маршрутизации других узлов. Объекты на выходящем узле перераспределяются или пополняются из избыточных копий.
Ошибка узла
Неожиданный отказ узла обрабатывается за счет резервирования в сети и резервных указателей для восстановления поврежденных каналов.
Приложения
Tapestry обеспечивает наложенную сеть маршрутизации, которая устойчива в различных сетевых условиях. Это обеспечивает идеальную инфраструктуру для распределенных приложений и сервисов. Аппликации на основе гобелена:
- OceanStore - Утилита распределенного хранения на PlanetLab
- Мнемозина - Стеганографическая файловая система
- Байе - Самоорганизующееся многоадресное приложение
- Spamwatch - Децентрализованный спам-фильтр
Разработчики
Гобелен был разработан Бен Й. Чжао, Лин Хуанг, Джереми Стриблинг, Шон К. Реа, Энтони Д. Джозеф и Джон Д. Кубятович.
Смотрите также
Рекомендации
- ^ Zhao, Ben Y .; Хуанг, Линь; Стриблинг, Джереми; Рея, Шон С.; Джозеф, Энтони Д .; Кубятович, Джон Д. (2004). «Гобелен: устойчивое наложение глобального масштаба для развертывания услуг» (PDF). Журнал IEEE по избранным областям коммуникаций. 22 (1): 41–53. CiteSeerX 10.1.1.71.2718. Дои:10.1109 / JSAC.2003.818784. Получено 13 января 2015.
внешняя ссылка
- Химера Проект реализация Tapestry (около 2007 г.)