BitVault
BitVault — это распределенная система хранения данных с контентной адресацией, разработанная исследовательской компанией Microsoft Research в Китае. BitVault использует одноранговую технологию для распределения задач по хранению и управлению данными. Таким образом, не существует центрального органа, ответственного за управление системой. Скорее, он является самоуправляемым, обеспечивает высокую доступность, надежность и масштабируется самоорганизующимся образом с низкими административными издержками, которые практически постоянны независимо от размера распределенной оверлейной сети .
Система BitVault лучше всего подходит для справочных данных, то есть большого объема данных, которые изменяются очень редко. К таким данным относятся архивы устаревших данных, а также мультимедийные данные, такие как музыка и видео, которые, хотя и часто используются, изменяются очень редко.
Технология
[ редактировать ]Каждый участвующий одноранговый узел в архитектуре BitVault представляет собой Smart Brick , который представляет собой урезанный ПК с большими дисками. Все модули Smart Brick в системе BitVault соединены сетью с высокой пропускной способностью и низкой задержкой . Систему BitVault можно легко масштабировать — любой компьютер можно настроить для работы в качестве интеллектуального модуля, просто установив программное обеспечение BitVault и подключив его к сети, без необходимости прерывания уже работающих узлов.
BitVault хранит неизменяемые объекты данных, т. е. объекты, которые нельзя изменить. Физическое расположение объектов не фиксировано и может находиться на любом из кирпичей. Его местоположение меняется в зависимости от частоты доступа; его можно даже воспроизвести на нескольких кирпичах. Чтобы обойти проблему смены местоположений, BitVault делает его доступным с помощью 160-битного ключа, уникального для каждого объекта. Система динамически ссылается на место, из которого объект можно получить наиболее эффективно, используя ключ, и делает объект доступным. Уникальный ключ генерируется из хэша данных объекта, что делает систему адресуемой по содержимому, а не по местоположению. Хэши объектов ( ключ ) сопоставляются с физическими адресами с помощью хэш-таблиц, которые управляются системой изнутри и не требуют вмешательства пользователя. Различные наборы узлов поддерживают разные наборы хеш-таблиц, которые касаются только данных в этом наборе узлов, тем самым создавая оверлейную сеть, в которой местоположение данных отслеживается с помощью Архитектура распределенной хеш-таблицы (DHT).
Архитектура
[ редактировать ]Архитектура BitVault состоит из нескольких блоков, составляющих логическое 160-битное адресное пространство, каждый из которых связан с хэшем некоторых данных. Ассоциация поддерживается в распределенной хэш-таблице (DHT). DHT разделяет всю хеш-таблицу на более мелкие хеш-таблицы. Например, если имеется n одноранговых узлов, хеш-таблица будет разделена на n хеш-таблиц, каждая из которых начинается со строки, следующей за местом, где заканчивается ее непосредственный предшественник. Каждый DHT имеет связанный с ним блок, а размер логического адресного пространства, за который отвечает блок, называется его зоной. Блоки взаимодействуют с использованием одноранговой технологии через уровень членства и маршрутизации (MRL). Поиск любого объекта данных может выполняться n блоками параллельно в отдельной зоне, что дает эффективность O (log N).
Несколько копий одного объекта, называемого репликой , хранятся в системе BitVault, чтобы обеспечить достаточную избыточность . Если какой-либо индекс поврежден, ближайшая реплика может быть уведомлена о начале его восстановления. И если индекс заметит, что реплика повреждена, он может инициировать восстановление реплики. Этот метод устранения ошибок называется моделью объектно-ориентированного восстановления . Чтобы это работало, должна быть запущена служба членства, которая будет обеспечивать логическое упорядочение узлов. Это достигается с помощью MRL. Служба членства гарантирует, что о любом добавлении или удалении кирпича в конечном итоге будет надежно сообщено всем остальным живым кирпичикам. MRL также отвечает за маршрутизацию сообщений к модулям и связанным с ними DHT и обратно.
MRL использует однопереходный DHT для выполнения маршрутизации, т. е. никогда не требуется более одного перехода через одноранговый узел для маршрутизации сообщений, когда система BitVault стабильна, т. е. не добавляются новые блоки, а также не выполняется балансировка нагрузки или восстановление. на. MRL реализован с использованием архитектуры XRing, которая поддерживает распределенную таблицу маршрутизации, облегчающую однопереходную маршрутизацию.
Архитектура из одного кирпича
[ редактировать ]Блок регистрируется в MRL с помощью 160-битного ключа, который формирует его идентификатор, а его зона в DHT — от его идентификатора до идентификатора, предшествующего его следующему логическому преемнику. Кирпичная архитектура разделена на две части — индексный модуль и модуль данных. Индексный модуль хранит список всех реплик, кэшированных диском, сопоставленных с их хэшами. Кроме того, для каждого сохраняемого объекта IM также хранит список местоположений всех остальных реплик объекта. IM прослушивает MRL и обновляется в соответствии с изменениями членства, а также в соответствии с данными, вводимыми в систему BitVault или получаемыми из нее. IM также несет ответственность за инициирование восстановления реплик, как только ему сообщат о повреждении, и запрашивать восстановление реплик в своем хранилище. IM подключен к небольшому модулю доступа, который служит шлюзом для внешних клиентов.Модуль данных хранит реплики объектов на локальном диске. Вместе с объектом также сохраняются его метаданные, такие как хеш-ключ и степень репликации в системе BitVault.
Работающий
[ редактировать ]Регистрироваться
[ редактировать ]Вставка данных в систему BitVault называется Check In. Для регистрации требуется объект, его ключ и начальная степень репликации. MRL направляет объект и все его параметры в некоторый блок. Затем блок сохраняет данные в своем модуле данных и начинает работу по репликации объекта, публикуя его в случайных блоках для достижения заданной степени репликации. Когда объект достиг необходимой степени репликации, его индекс называется полным, в противном случае — частичным. Блок должен выполнить дальнейшую репликацию объекта, имеющего частичный индекс. Блоки также периодически проверяют, что индекс объекта все еще полон.
Проверить
[ редактировать ]Извлечение — это процесс получения данных из системы BitVault. Приложение, которое использует BitVault в качестве хранилища данных, предоставляет хеш-ключ извлекаемого объекта, который отправляется MRL на любой блок. Если у блока нет объекта, он параллельно передает запрос другим блокам. Если в блоке есть объект, он извлекается из его модуля данных и направляется запрашивающей стороне.
Отказоустойчивость
[ редактировать ]Ошибки BitVault могут быть временными или постоянными. Временный сбой произойдет, когда в блоке произойдет временный сбой, например, сбой программного обеспечения, вызывающий перезагрузку. Постоянный сбой указывает на такие ошибки, как сбой оборудования. Всякий раз, когда обнаруживается какая-либо ошибка, другие блоки, имеющие копию затронутого объекта, обновляют запись объекта в индексе как частичную, тем самым запуская дальнейшую репликацию. Все остальные блоки, содержащие реплики, совместно отправляют различные части данных объекта параллельно в новый блок, который будет содержать реплику. Эта параллельная репликация ускоряет восстановление поврежденного индекса и возвращает его в полное состояние.
Изменения членства
[ редактировать ]Всякий раз, когда в систему BitVault добавляется новый блок, он принимает случайный идентификатор и связывается с другими блоками. Затем блоки включат этот новый блок в свой список участников. Недавно добавленный модуль также получает ответ от тех модулей, которые добавили его в свой список участников. Новый блок добавляет респондентов в свой список участников. Запускается фоновая балансировка нагрузки системы для заполнения нового блока живыми репликами.
Балансировка нагрузки
[ редактировать ]Блоки Brick периодически опрашивают другие блоки Brick о состоянии нагрузки в них. Затем кирпич переносит некоторые реплики на блоки с низкой нагрузкой, чтобы получить более или менее сбалансированную нагрузку на каждый блок. Он также отправляет сообщения другим модулям для обновления их индексов с учетом изменений.
См. также
[ редактировать ]Ссылки
[ редактировать ]- Чжэн Чжан; Цяо Лянь; Шидинг Лин; Вэй Чен; Ю Чен; Чао Джин (декабрь 2005 г.). «BitVault: высоконадежная распределенная платформа хранения данных» (PDF) . Майкрософт . дои : 10.1145/1243418.1243423 . МСР-ТР-2005-179.