BATON Overlay - BATON Overlay

BATON, BAlanced Tree Over-Lay Network, представляет собой распределенную древовидную структуру для пиринговый (P2P) системы. В отличие от других оверлеев, в которых используется распределенная хеш-таблица (DHT), например, в Аккорд В системе BATON одноранговые узлы организуются в распределенное дерево для поддержки поиска по диапазону. Кроме того, BATON пытается сохранить дерево сбалансированным образом, поскольку AVL дерево. Следовательно, стоимость поиска ограничена .

Архитектура

BATON - это двоичное дерево. Каждый узел в BATON поддерживает четыре типа ссылок:

  1. ссылка на его родительский узел
  2. ссылки на его дочерние узлы
  3. ссылки на соседние узлы по порядку
  4. ссылки на узлы маршрутизации на том же уровне

На каждом уровне дерева узел назван по его положению в дереве. Например, узел час называется 3: 0, узел я называется 3: 1 и узел п назван 4: 6. Для узла в позиции , он заполнит свою левую таблицу маршрутизации узлами в позиции для любого действительного и заполните его правую таблицу маршрутизации узлами в позиции для любого действительного .

Присоединение к узлу и выход из него

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

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

Маршрутизация

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

Для запроса диапазона q BATON сначала определяет его левую границу q.low. Затем процесс поиска будет перемещаться по дереву по порядку (по соседней ссылке), пока не достигнет верхней границы q.up. Для поиска единственного ключа BATON использует стратегию маршрутизации, аналогичную Аккорд. Во-первых, запрос направляется на самые дальние узлы маршрутизации, которые не перехватывают нажатие клавиши. Если таких узлов маршрутизации не существует, используется родительская ссылка, дочерняя ссылка или смежная ссылка.

Реструктуризация

Когда узел x принимает присоединяющийся узел y в качестве своего дочернего элемента и обнаруживает, что баланс дерева нарушен, он инициирует процесс реструктуризации. Не теряя общности, предположим, что эта реструктуризация идет вправо. Предположим, что y присоединяется как левый потомок x. Чтобы перебалансировать систему, x уведомляет y о замене своей позиции и уведомляет свой правый соседний узел z, что x заменит положение z. Затем z проверяет свой правый соседний узел t, чтобы убедиться, что его левый дочерний элемент пуст. Если это так, и добавление дочернего элемента к t не влияет на баланс дерева, z принимает положение левого дочернего элемента t в качестве своей новой позиции, и процесс реструктуризации останавливается. Если левый дочерний элемент t заполнен или t не может принять x в качестве своего левого дочернего элемента, не нарушая свойства баланса, z занимает позицию t, в то время как t необходимо найти новую позицию для себя, перейдя к своему правому соседнему узлу.

Балансировка нагрузки

BATON использует два типа стратегии балансировки нагрузки. Как только узел n обнаруживает, что он перегружен,

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

Смотрите также

Рекомендации

  • Х. В. Джагадиш; Бенг Чин Оои и Куанг Хиеу Ву (2005). «BATON: сбалансированная древовидная структура для одноранговых сетей» (PDF). Материалы 31-й международной конференции по очень большим базам данных, Тронхейм, Норвегия. С. 661–672. ISBN  1-59593-154-6.

дальнейшее чтение

внешняя ссылка