ОБНОВЛЕНИЕ И РЕПЛИКАЦИЯ РЕСУРСОВ
RESOURCE UPDATE AND REPLICATION

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Системы для репликации ресурсов становятся все более важными, чтобы гарантировать доступность и отказоустойчивость в больших сетях. Одним примером, где требуются доступность, масштабируемость, согласованность и надежность, являются корпоративные сети, которые реплицируют файлы, содержащие полномочия и политики доменов. Однако оказывается перспективным и создание гибкой системы репликации ресурсов, которая обеспечивает возможность различных режимов репликации.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Кратко говоря, описанные здесь аспекты изобретения относятся к системам репликации ресурсов. Согласно этим аспектам описывается средство, которое выявляет, когда локальные ресурсы устаревают. Локальные ресурсы устаревают, когда время между последним успешным действием синхронизации и текущим временем превышает некоторое значение устаревания. Если локальные ресурсы определены как устаревшие, то локальный участник может воздерживаться от некоторых действий синхронизации до тех пор, пока локальный участник не получит возможность возобновлять упомянутые некоторые действия синхронизации. Если локальные ресурсы определены как неустаревшие, то могут выполняться дополнительные действия синхронизации, включая синхронизацию ресурсов между участником и партнером-источником или целевым партнером.
Данное изложение сущности изобретения обеспечивается, чтобы коротко идентифицировать некоторые аспекты изобретения, которые описываются ниже в подробном описании. В данном изложении сущности изобретения нет намерения идентифицировать ключевые или существенные признаки заявленного изобретения и нет намерения использования для ограничения объема заявленного изобретения.
Фраза "описанное здесь изобретение" относится к изобретению, описанному в подробном описании, если контекст безусловно не показывает противоположное. Термин "аспекты" не должен читаться как "один или несколько аспектов". Идентификация аспектов изобретения, описанного в подробном описании, не намерена идентифицировать ключевые или существенные признаки заявленного изобретения.
Описанные выше аспекты и другие аспекты станут очевидными из последующего подробного описания в сочетании с чертежами.
ПЕРЕЧЕНЬ ЧЕРТЕЖЕЙ
Фиг.1 - блок-схема, представляющая компьютерную систему, в которую могут быть внедрены аспекты описанного здесь изобретения,
фиг.2 - блок-схема, которая в целом представляет машины, участвующие в репликационной группе, согласно аспектам описанного здесь изобретения,
фиг.3 - блок-схема, представляющая машину, сконфигурированную, чтобы действовать в системе репликации ресурсов, согласно аспектам описанного здесь изобретения,
фиг.4 - процедурная блок-схема, которая в целом представляет действия, которые могут происходить при определении того, является ли контент на локальной машине достаточно новым, чтобы синхронизироваться с другими участниками репликационной группы, согласно аспектам описанного здесь изобретения,
фиг.5 - процедурная блок-схема, которая в целом представляет действия, которые могут происходить, когда определяется, что некоторый участник имеет устаревший контент и, чтобы восстановить контент, конфигурируется как подчиненный, согласно аспектам описанного здесь изобретения, и
фиг.6 - процедурная блок-схема, которая в целом представляет действия, которые могут происходить, когда определяется, что некоторый участник имеет устаревший контент и конфигурируется, чтобы объединить контент с исходным партнером, согласно аспектам описанного здесь изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
ИЛЛЮСТРАТИВНОЕ РАБОЧЕЕ ОКРУЖЕНИЕ
Фигура 1 иллюстрирует пример подходящего окружения 100 вычислительной системы, в которую могут быть внедрены аспекты описанного здесь изобретения. Окружение 100 вычислительной системы является только примером подходящего вычислительного окружения и не предполагает никакого ограничения к рамкам использования или функциональным возможностям описанного здесь изобретения. Также вычислительное окружение 100 не должно интерпретироваться как имеющее какую-либо зависимость или требование, относящиеся к какому-либо одному из компонентов или к комбинации компонентов, иллюстрируемых в примере рабочего окружения 100.
Аспекты описанного здесь изобретения являются действующими с многочисленными другими окружениями и конфигурациями вычислительной системы общего и специального назначения. Примеры хорошо известных вычислительных систем, окружений и/или конфигураций, которые могут быть подходящими для использования с другими аспектами описанного здесь изобретения, включают в себя, но не в ограничительном смысле, персональные компьютеры (ПК), серверы, ручные или небольшие портативные компьютеры, мультипроцессорные системы, микроконтроллерные системы, программируемую бытовую электронику, сетевые ПК, мини-компьютеры, мэйнфреймы, распределенные вычислительные окружения, которые включают в себя любые из вышеупомянутых систем или устройств, и т.п.
Аспекты описанного здесь изобретения могут быть описаны в общем контексте исполняемых компьютером инструкций, таких как программные модули, исполняемые компьютером. Обычно программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют некоторые абстрактные типы данных. Аспекты описанного здесь изобретения также могут осуществляться на практике в распределенных вычислительных окружениях, где задачи выполняются удаленными устройствами обработки, которые связаны через сеть связи. В распределенном вычислительном окружении программные модули могут быть расположены и в локальных, и в удаленных компьютерных носителях данных, включая запоминающие устройства.
Как показано на фиг.1, иллюстративная система для осуществления аспектов описанного здесь изобретения включает в себя вычислительное устройство общего назначения в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, но не в ограничительном смысле, процессор 120, системную память 130 и системную шину 121, которая подсоединяет различные компоненты системы, включая системную память, к процессору 120. Системная шина 121 может быть любой из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, при использовании любой из разнообразия шинных архитектур. Например, такие архитектуры включают в себя, но не в ограничительном смысле, шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (МСА), шину расширенной архитектуры шины промышленного стандарта (EISA), локальную шину стандарта Ассоциации по стандартам в области видеоэлектроники (VESA) и шину межсоединения периферийных компонентов (PCI), также известную как шина расширения.
Компьютер 110 обычно включает в себя разнообразное множество считываемых компьютером носителей. Считываемые компьютером носители могут включать в себя любые доступные носители, к которым может осуществлять доступ компьютер 110, и включают в себя как энергозависимые, так и энергонезависимые носители, как съемные, так и несъемные носители. Например, считываемые компьютером носители могут содержать носители данных и среды связи, но не в ограничительном смысле. Компьютерные носители данных включают в себя как энергозависимые, так и энергонезависимые носители, как съемные, так и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как считываемые компьютером инструкции, структуры данных, программные модули или другие данные. Компьютерные носители данных включают в себя, но не в ограничительном смысле, запоминающее устройство с произвольной выборкой (RAM, ЗУПВ), постоянное запоминающее устройство (ROM, ПЗУ), флэш-память или память любой другой технологии, электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), постоянное запоминающее устройство на компакт-диске (CD-ROM), цифровые многофункциональные диски (DVD) или другие оптические накопители на дисках, магнитные кассеты, накопители на магнитных дисках или любые другие магнитные запоминающие устройства, либо любые другие носители, которые могут быть использованы для сохранения желательной информации и к которым может осуществлять доступ компьютер 110. Среды связи обычно воплощают считываемые компьютером инструкции, структуры данных, программные модули или другие данные в модулированном информационном сигнале, таком как несущая волна или другое транспортное средство, и включают в себя любые среды доставки информации. Термин "модулированный информационный сигнал" означает сигнал, который имеет один или несколько его параметров, устанавливаемых или изменяемых так, чтобы кодировать информацию в этом сигнале. В качестве примера, но не ограничения, среды связи включают в себя проводные среды связи, такие как проводная сеть или прямое проводное соединение, и беспроводные среды связи, такие как акустические, радиочастотные (РЧ, RF), инфракрасные и другие среды связи. Также понятием «считываемый компьютером носитель» охватываются комбинации любых из вышеупомянутых сред и носителей.
Системная память 130 включает в себя компьютерные носители данных в форме энергозависимых и/или энергонезависимых запоминающих устройств, таких как постоянное запоминающее устройство (ROM, ПЗУ) 131 и запоминающее устройство с произвольной выборкой (RAM, ЗУПВ) 132. Базовая система ввода/вывода (BIOS) 133, содержащая базовые процедуры, которые помогают переносить информацию между элементами внутри компьютера 110, например, во время запуска, обычно сохраняется в ПЗУ 131. ЗУПВ 132 обычно содержит данные и/или программные модули, которые могут быть непосредственно доступны для процессора 120 и/или с которыми он в текущее время работает. Например, фиг.1 иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и данные 137 программ.
Компьютер 110 также может включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных. Например, фиг.1 иллюстрирует накопитель 140 на жестких дисках, который считывает с или записывает на несъемные, энергонезависимые магнитные носители; магнитный дисковод 151, который считывает с или записывает на съемный, энергонезависимый магнитный диск 152; и оптический дисковод 155, который считывает с или записывает на съемный, энергонезависимый оптический диск 156, такой как CD-ROM или другие оптические диски. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных, которые могут быть использованы в иллюстративном рабочем окружении, включают в себя кассеты с магнитной лентой, карты флэш-памяти, цифровые многофункциональные диски, цифровые видеоленты, твердотельные ЗУПВ, твердотельные ПЗУ и т.п. Накопитель 141 на жестких дисках обычно подсоединяется к системной шине 121 через интерфейс несъемной памяти, такой как интерфейс 140, а магнитный дисковод 151 и оптический дисковод 155 обычно подсоединяются к системной шине 121 посредством интерфейса съемной памяти, такого как интерфейс 150.
Накопители и дисководы и ассоциированные с ними компьютерные носители данных, обсуждаемые выше и иллюстрируемые на фиг.1, обеспечивают хранение считываемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 110. Например, на фиг.1, накопитель 141 на жестких дисках иллюстрируется как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и данные 147 программ. Следует отметить, что указанные компоненты либо являются такими же, как операционная система 134, прикладные программы 135, другие программные модули 136 и данные 137 программ, либо отличаются от них. Операционная система 144, прикладные программы 145, другие программные модули 146 и данные 147 программ обозначены другими номерами позиций, чтобы показать, что они являются, как минимум, другими копиями. Пользователь может вводить команды и информацию в компьютер 20 через устройства ввода, такие как клавиатура 162 и указательное устройство 161, обычно упоминаемое как мышь, шаровой манипулятор или сенсорная панель. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, вспомогательную игровую клавиатуру, спутниковую антенну, сканер, сенсорный экран карманного компьютера или планшет для графического ввода данных и т.д. Перечисленные, а также другие устройства ввода часто подсоединяются к процессору 120 через интерфейс 160 пользовательского ввода, который подсоединен к системной шине, но могут подсоединяться и посредством других интерфейсных и шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или устройство отображения другого типа также подсоединяется к системной шине 121 через интерфейс, такой как видеоинтерфейс 190. В дополнение к монитору, компьютеры могут также включать в себя другие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, которые могут подсоединяться через выходной периферийный интерфейс 195.
Компьютер 110 может работать в сетевом окружении с использованием логических соединений с одним или несколькими удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может представлять собой персональный компьютер, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой обычный сетевой узел, и обычно включает в себя многие или все из элементов, описанных выше относительно компьютера 110, хотя на фиг.1 иллюстрируется только запоминающее устройство 181. Логические соединения, показанные на фиг.1, включают в себя локальную сеть (LAN, ЛВС) 171 и глобальную сеть (WAN, ГВС) 173, но также может включать другие сети. Такие сетевые окружения обычно находятся в офисах, в компьютерных сетях масштаба предприятия, внутрикорпоративных сетях и в Интернете.
При использовании в сетевой среде ЛВС компьютер 110 подсоединяется к ЛВС 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде ГВС компьютер 110 обычно включает в себя модем 172 или другое средство для установления связи по ГВС 173, такой как Интернет. Модем 172, который может быть внутренним и внешним, может быть подсоединен к системной шине 121 через интерфейс 160 пользовательского ввода или другое подходящее средство. В сетевом окружении программные модули, изображенные относительно компьютера 110 или его частей, могут сохраняться в удаленном запоминающем устройстве. Например, фиг.1 иллюстрирует удаленные прикладные программы 185, как находящиеся в запоминающем устройстве 181. Должно быть понятно, что показанные сетевые соединения являются иллюстративными и что для установления связи между компьютерами может быть использовано другое средство.
Репликация ресурсов
Как можно легко понять, современные машины могут обрабатывать тысячи изменений ресурсов за относительно короткий период времени. Репликация таких ресурсов и сохранение их синхронно в сотнях или тысячах машин, соединенных через различные сети с варьируемой надежностью и шириной полосы пропускания, представляет собой значительную проблему.
C:\DATA
D:\APPS
E:\DOCS
С оптимистической точки зрения, системы репликации со многими ведущими устройствами допускают неограниченные изменения реплицируемого контента на любой машине, участвующей в заданной репликационной группе. Репликационная группа содержит некоторый набор ресурсов, которые реплицируются на машинах, участвующих в этой репликационной группе. Набор ресурсов репликационной группы может охватывать тома. Например, репликационная группа может включать в себя ресурсы, ассоциированные с ,  и , которые могут реплицироваться на некотором наборе машин, участвующих в репликационной группе. Потенциально противоречивые изменения регулируются под управлением системы репликации с использованием некоторого набора критериев разрешения противоречий, которые задают для каждой конфликтной ситуации, какое из противоречащих изменений имеет превосходство над другими.
Участник репликационной группы содержит машину, которая участвует в репликационной группе посредством репликации ресурсов, заключенных в ней. Набор контента (иногда упоминаемый просто как "контент") содержит ресурсы, находящиеся на некотором участнике репликационной группы.
Термин "машина" не ограничивается просто физической машиной. Скорее, одна физическая машина может включать в себя многочисленные виртуальные машины. Репликация с одной машины в другую машину подразумевает репликацию одного или нескольких участников одной и той же репликационной группы из одной машины, виртуальной или физической, в другую машину, виртуальную или физическую. Одна физическая машина может включать в себя многочисленных участников одной и той же репликационной группы. Таким образом, участники репликации ресурсов репликационной группы могут задействовать синхронизацию участников одной физической машины, которая включает в себя два или несколько участников одной и той же репликационной группы.
Ресурс можно считать объектом. Каждый ресурс ассоциирован с данными ресурса и метаданными ресурса. Данные ресурса могут включать в себя контент и атрибуты, ассоциированные с контентом, тогда как метаданные ресурса включают в себя другие атрибуты, которые могут быть существенны в проведении синхронизации и разрешении конфликтных ситуаций. Данные и метаданные ресурсов могут сохраняться в базе данных или в другом подходящем хранилище; и в альтернативном варианте осуществления для сохранения данных ресурсов и метаданных ресурсов могут использоваться отдельные хранилища.
В системах репликации ресурсов, включающих хранилища данных, основанные на именованных файлах в файловой системе, данные ресурсов могут включать в себя содержимое файлов, а также любые атрибуты файлов, которые сохраняются в файловой системе в ассоциативной связи с содержимым файлов. Атрибуты файлов могут включать в себя списки управления доступом (ACL), времена создания/модификации и другие данные, ассоциированные с файлом. Здесь, файл может включать в себя директории (то есть объекты файловой системы, которые могут быть ассоциированы с порожденными файлами, и директории и порождающие директории) и недиректории. Если контекст явно указывает по-другому, то термин «файл» можно читать как "данные ресурсов".
В системах репликации, включающих хранилища данных, не основанные на именованных файлах в файловой системе (например, таковые, в которых ресурсы сохраняются в базе данных или в хранилище данных, основанном на объектах), сохраняются данные ресурсов, соответствующие хранилищу данных. По всему настоящему документу системы репликации, основанные на файлах в файловой системе, иногда используются для иллюстрации, но следует понимать, что могут быть использованы любые хранилища данных, способные хранить контент, не отклоняясь от сущности и не выходя за рамки объема описанного здесь изобретения.
Для каждого ресурса метаданные ресурса могут включать в себя глобально уникальный идентификатор (GUID), указание того, был ли ресурс удален, порядковый номер версии вместе с авторством изменения, показание таймера, чтобы отражать время, когда произошло изменение, и другие поля, такие как дайджест, который резюмирует значения данных ресурса и может включать в себя сигнатуры для содержимого ресурса. Дайджест может быть использован для быстрого сравнения, чтобы избежать переноса данных, например, во время синхронизации репликации. Если ресурс на целевой машине синхронизирован с контентом в исходной машине (например, как указано дайджестом), то сетевые служебные данные могут быть минимизированы посредством передачи только метаданных ресурса, без передачи самих данных ресурса. Передача метаданных ресурса выполняется так, чтобы целевая машина могла отражать метаданные, включенные на исходной машине, в своих последующих действиях репликации. Это может позволить целевой машине, например, стать исходной машиной в последующем действии репликации. Метаданные ресурсов могут сохраняться с данными ресурсов или отдельно от них, не отклоняясь от сущности и не выходя за рамки объема описанного здесь изобретения.
При репликации ресурсов могут быть использованы векторы версий. Вектор версии можно рассматривать как глобальный набор значений счетчиков или часов машин, участвующих в репликационной группе. Каждая машина, участвующая в репликационной группе, поддерживает вектор версии, который представляет текущую последнюю версию машины и последние версии, которые машина приняла по отношению к другим машинам. Каждый раз, когда некоторый ресурс создается, модифицируется или удаляется из машины, версии ресурса может присваиваться некоторый номер версии, эквивалентный номеру текущей версии для указанной машины, плюс единица. Вектор версии для указанной машины также обновляется, чтобы отражать, что номер версии для указанной машины был увеличен.
Векторы версий поддерживают информацию о состоянии знания. Вектор версии может задавать соответствие идентификатора некоторой машины отметке времени. Каждая машина, участвующая в репликационной группе, может поддерживать свой собственный вектор часов, чтобы записывать значения часов, которых достигли другие машины. Векторы часов могут содержать порядковые номера версий. В одном из вариантов осуществления, вместо поддержания одного значения часов для каждой машины, может поддерживаться некоторый набор значений часов, чтобы предусмотреть обработку обновлений вне их порядка и использовать с выгодой базовый набор действий в отношении векторов версий.
В одном из вариантов осуществления во время синхронизации вектор версии может передаваться для использования в синхронизации ресурсов. Например, если машины A и B задействуются в некотором действии синхронизации, например, объединяются, машина B может передавать свой вектор версии в машину A. После приема вектора версии машины B машина A может затем передавать изменения для всех ресурсов, если таковые вообще есть, которые имеют версии, не охватываемые (то есть не поглощаемые) вектором версии B. Фраза "некоторый вектор версии поглощает другой" является синонимом для соответствующего отношения включения между векторами версий.
Примеры использования векторов версий в синхронизации описаны в патентной заявке США № 10/791041, озаглавленной "Interval Vector Based Knowledge Synchronization for Resource Versioning", в патентной заявке США № 10/779030, озаглавленной "Garbage Collection of Tombstones for Optimistic Replication Systems", и в патентной заявке США № 10/733459, озаглавленной "Granular Control Over the Authority of Replicated Information via Fencing and UnFencing".
Фиг.2 - блок-схема, которая в целом представляет машины, участвующие в репликационной группе, согласно аспектам описанного здесь изобретения. Например, исходная машина 201 и целевая машина 202 могут участвовать в репликационной группе, которая включает в себя два ресурса. Эти два ресурса могут включать в себя, например, каталоги 205 и 215 документов и каталоги 210 и 220 помощи (которым даны разные номера на этих двух машинах, чтобы показать, что в конкретный момент времени эти ресурсы могут не включать в себя одинаковые данные ресурсов, то есть они могут быть несинхронизированными).
Периодически, целевая машина 202 может запрашивать обновления от исходной машины 201 и может обновлять свои ресурсы, основываясь на этих обновлениях. Хотя на фиг.2 показаны только две машины, исходная 201 и целевая 202 машины могут быть частью системы репликации, которая включает в себя много других машин. Машина, которая является источником в одном взаимодействии (иногда называемая машиной-источником или исходной машиной), может позже стать пунктом назначения (иногда называемым целевой машиной) в другом взаимодействии и, наоборот.
Целевая машина 202 может включать в себя средство 225 обновления, которое определяет, когда получать обновления от исходной машины 201. Если целевая машина 202 также является исходным партнером другой машины (не показана), то средство 225 обновления также может определять, какие обновления посылать в эту другую машину. Средство 225 обновления более подробно описано ниже в связи с фиг.3.
Фиг.3 - блок-схема, представляющая машину, сконфигурированную, чтобы действовать в системе репликации ресурсов, согласно аспектам описанного здесь изобретения. Машина 305 включает в себя средство 225 обновления, ресурсы 322 и средство 340 связи. Средство 225 обновления включает в себя опорную логику (логические средства) 345, логику 315 протоколов и другую логику 320 синхронизации.
Ресурсы 322 включают в себя хранилище 325 данных ресурсов для хранения данных ресурсов и хранилище 330 метаданных ресурсов. Хотя показаны в одном прямоугольнике, хранилище 325 данных ресурсов может находиться вместе с хранилищем 330 метаданных ресурсов или отдельно от него. Среди прочего, хранилище 330 метаданных ресурсов может включать в себя версии для каждой из записей данных ресурсов, хранимых в хранилище данных ресурсов, и также может включать в себя вектор интервала (блок 335).
Хранилище 330 метаданных ресурсов также может включать в себя записи, ассоциированные с реплицированными папками, причем каждая запись указывает (например, через отметку времени), когда соответствующая ей реплициированная папка последний раз участвовала в успешном действии синхронизации с соответствующей реплицированной папкой другого участника. Здесь реплицированная папка является синонимом для набора контента.
Средство 340 связи позволяет средству 225 обновления осуществлять связь с другими средствами обновления (не показаны) на других машинах. Средство 340 связи может быть сетевым интерфейсом или адаптером 170, модемом 172 или любым другим средством для установления связи, как описано в связи с фиг.1.
Средство 225 обновления включает в себя логику 315 протоколов, которая действует, чтобы осуществлять связь с другими партнерами репликации, и опорную логику 345, которая действует, чтобы определять, может ли машина быть задействована в действиях синхронизации с другими машинами, как описано более подробно ниже. Другая логика 320 синхронизации включает в себя логику синхронизации, отличную от логики 315 протоколов (например, что делать в случае противоречивых обновлений, как определить, какие обновления получать, и т.д.). Хотя логика 315 протоколов, опорная логика 345 и другая логика 320 синхронизации показаны как отдельные прямоугольники, в других вариантах осуществления они могут быть объединены полностью или частично.
В данном случае услуга репликации может включать в себя любой один или несколько из компонентов, описанных выше в связи с фиг.3.
На практике машина 305 может действовать как целевая машина и/или исходная машина. Целевая машина может устанавливать соединение с исходной машиной для некоторой репликационной группы, в которой участвуют и исходная, и целевая машины. Это может быть сделано, например, через средство 340 связи. При установлении соединения каждый из партнеров (то есть исходная и исходная машины) могут посылать свой вектор версии другому партнеру. Затем устанавливается сеанс, чтобы посылать обновления из исходной машины в целевую машину.
Сеанс может быть использован, чтобы связать реплицированную папку исходной машины с соответствующей реплицированной папкой целевой машины. Сеанс может устанавливаться для каждой реплицированной папки репликационной группы. Сеансы для многочисленных папок могут устанавливаться через единое соединение между исходной и целевой машинами.
После того, как все обновления из сеанса были обработаны или отменены, целевая машина может закрыть сеанс.
Целевая машина может запрашивать (например, через средство 340 связи), чтобы исходная машина уведомляла целевую машину, когда происходят обновления для любых ресурсов, ассоциированных с сеансом. Когда исходная машина уведомляет целевую машину, что обновления доступны, целевая машина может запрашивать вектор версии для обновлений. В ответ исходная машина посылает свой вектор версии (иногда упоминаемый как VVup). Следует отметить, что VVup может включать в себя полный вектор версии или вектор версии, который включает в себя изменения с того момента, как был послан последний вектор версии. Уведомление целевой машины о том, что обновления доступны, и ожидание того, что целевая машина запросит обновления, может выполняться в два этапа так, чтобы целевая машина случайно не была переполнена векторами версий от многочисленных исходных партнеров.
Целевая машина использует вектор версии исходной машины, который она принимает (то есть VVup), и вычисляет разность множеств со своим собственным вектором версии, чтобы сравнить версии, находящиеся в исходной машине, о которых целевая машина не осведомлена. Затем целевая машина может запрашивать метаданные относительно этих версий. При запросе обновлений целевая машина может включать в себя вектор разницы версий, который указывает, что необходимы обновления целевой машины.
Целевая машина может запрашивать объявления или объявления «по живому» по отдельности или вместе. Объявление представляет, что ресурс был удален, а обновления «по живому» представляют обновления, которые не удаляют ресурс. В некоторых вариантах осуществления целевая машина может запрашивать объявления перед запросом обновлений «по живому». Это можно сделать, чтобы повысить эффективность, поскольку ресурс, который был модифицирован и затем удален, не нуждается в модификации перед удалением у партнера репликации. В дополнение, обработка объявления перед обновлением «по живому» может очистить пространство имен хранилища данных (например, в файловой системе) целевой машины при приготовлении к обработке замещающего обновления «по живому».
После приема обновлений целевая машина может начать обработку обновлений, чтобы определить, какие данные ресурсов или их часть, ассоциированные с обновлениями, запросить из исходной машины. Такая обработка, например, может выполняться через другую логику 320 синхронизации, которая может быть разбита на многочисленные компоненты (не показаны). Например, обновление может указывать, что данные ресурса конкретного ресурса или их часть были изменены. В одном из вариантов осуществления целевой машиной могут запрашиваться все данные ресурса, ассоциированные с ресурсом. В другом варианте осуществления целевой машиной может запрашиваться часть данных ресурса, которая включает в себя изменение. Здесь, взаимодействие (например, запрос, ответ, обновление и т.д.), задействующее данные ресурса, должно пониматься как означающее взаимодействие, задействующее часть или все из данных ресурса, ассоциированных с ресурсом. Например, запрос данных ресурса может означать запрос части или всех данных ресурса, ассоциированных с ресурсом.
После определения данных ресурса, которые необходимо запросить, целевая машина может запрашивать эти данные ресурса. В ответ, чтобы запросить данные ресурса, исходная машина может посылать данные ресурса, ассоциированные с ресурсом. Запросы и ответы могут продолжаться до тех пор, пока не будут запрошены все данные ресурсов, которые необходимо обновить, как определила целевая машина. Следует отметить, что не все данные ресурсов могут быть посланы, поскольку исходная машина может больше не иметь запрошенных данных ресурсов, например, если ресурс был удален. Другой пример, в котором данные ресурса могут не посылаться, имеет место, если единственное эффективное изменение относительно целевой машины состоит в том, что ресурс был переименован или были обновлены атрибуты метаданных. В таких случаях для синхронизации целевого ресурса с исходным ресурсом может быть необходим только прием обновления и переименование локального ресурса или обновление локальных метаданных.
Сеанс может быть закрыт, например, если удаляется реплицированная папка, если во время репликации происходит неустранимая ошибка или если выключается система репликации. В противном случае, установленный сеанс может быть использован для последующих действий синхронизации, которые включают в себя все или часть вышеупомянутых событий.
Средство 225 обновления может использовать базу данных (например, хранилище 330 метаданных ресурсов), чтобы отслеживать состояние файлов и директорий данных ресурсов в хранилище 325 данных ресурсов. Каждый раз, когда ресурс обновляется, ресурсу может быть присвоена новая версия в базе данных.
Средство 225 обновления может принимать обновления от исходного партнера и обновлять локальные ресурсы так, чтобы они были синхронными с реплицированными ресурсами у исходного партнера. Обновления метаданных ресурсов могут сохраняться в хранилище 330 метаданных ресурсов, тогда как обновления данных ресурсов могут сохраняться в хранилище 325 данных ресурсов. В одном из вариантов осуществления хранилище 325 данных ресурсов и хранилище 330 метаданных ресурсов могут быть включены в один и тот же том или физическое устройство (например, жесткий диск).
Данные ресурсов также могут изменяться действием в отношении локального файла, относящегося к данным ресурсов. Например, партнер репликации может служить как файловый сервер для многих пользовательских машин (не показаны). Пользовательские машины могут осуществлять доступ и могут модифицировать данные ресурсов (например, файлы) у партнера репликации. Средство 225 обновления может включать в себя средство мониторинга (монитор) изменений данных ресурсов (не показан), который может показывать изменения реплицированных ресурсов (например, изменения файлов). Когда реплицированный ресурс изменяется, монитор изменений ресурсов может обновлять хранилище 330 метаданных ресурсов, чтобы указывать обновление. Это может служить для поддержания хранилища 330 метаданных ресурсов в синхронизме с хранилищем 325 данных ресурсов и для синхронизации между участниками репликационной группы.
Новизна контента
Опорная логика 345 может быть использована при определении новизны контента набора контента участника репликационной группы. Когда участник отсоединяется от других машин, имеющих участников репликационной группы на протяжении длительного периода времени, ресурсы участников могут стать несинхронизированными и устаревшими. Если участник вновь присоединяется к репликационной группе и не использует описанную здесь опорную логику 345, то машина может начать репликацию с другими участниками группы репликации. Если нет обновлений на участнике, то участник может принимать обновления от других участников и может не реплицировать никакие устаревшие ресурсы. Если имеются недавние обновления на участнике, которые не являются полезными, однако, эти обновления могут реплицироваться и переписывать хорошие версии с обновлениями с более поздней датой на других участниках. Таким образом, в одном смысле, новизна контента может рассматриваться как мера релевантности изменений.
Один пример того, как осуществляется указанная процедура, - это ситуация, когда машина отключена длительное время (например, пару месяцев) из-за проблем с аппаратными средствами. После того как машина отремонтирована, машина может опять быть подключена к сети, и участники репликационной группы, размещенные на машине, могут начать синхронизацию с партнерами на других машинах. В начале или непосредственно перед началом синхронизации с партнерами некоторая прикладная программа (например, антивирусная прикладная программа) может проходить по одному или нескольким устаревшим файлам и затрагивать их (например, обновлять их время последнего изменения). Без описанных здесь аспектов это может привести к тому, что устаревшие файлы на участниках будут выглядеть как недавно обновленные и реплицироваться на другие участники на других машинах, переписывая лучшие версии на этих других машинах.
В одном из вариантов осуществления можно избежать репликации устаревшего контента, для которого вышеупомянутый пример является типичным, или сократить его посредством использования опорных значений. В одном из вариантов осуществления некоторая машина может быть определена как ведущая, и опорное значение может обновляться постоянно на этой машине и распространяться на другие машины. Во время синхронизации, если опорные значения между двумя машинами имеют разность, больше допустимой, то обновления из машины с устаревшим контентом (например, контентом с меньшим опорным периодом) не будут реплицироваться обратно в машины с обновлениями с более поздней датой.
В некоторых аспектах опорные значения могут устанавливаться на машине, в реплицированных папках или отдельных ресурсах. Если опорное значение установлено на машине, то реплицированные папки и ресурсы на машине могут трактоваться как имеющие такое же опорное значение. Если опорное значение установлено в реплицированной папке, то все реплицированные ресурсы, ассоциированные с этой папкой, могут трактоваться как имеющие такое же опорное значение. Другая реплицированная папка на машине может иметь отличное опорное значение. Если каждый ресурс имеет свое собственное опорное значение, то различные ресурсы в каждой реплицированной папке могут иметь различные опорные значения.
Использование опорных значений может включать отправление опорных значений во время синхронизации так, чтобы определять степень устаревания. Следовательно, реализации опорных значений на основе ресурсов могут соответствовать большим накладным расходам, чем реализации опорных значений на основе реплицированных папок или машин. Опорные значения могут устанавливаться одним способом (например, посредством реплицированной папки) на одной машине и другим способом (например, посредством ресурса) на другой машине, не отклоняясь от сущности и не выходя за рамки объема описанного здесь изобретения.
В другом варианте осуществления вместо использования опорных значений участник может сохранять некоторую отметку времени, генерированную с использованием локальных системных часов. Локальные системные часы могут периодически обновляться с временного сервера, чтобы поддерживать их соответствующими текущему моменту. Отметка времени также может обновляться в зависимости от различных действий синхронизации. В одном из вариантов осуществления отметка времени для реплицированной папки может обновляться каждый раз, когда реплицированная папка успешно синхронизируется с реплицированной папкой другого участника. В другом варианте осуществления отметка времени может обновляться каждый раз, когда хорошее соединение устанавливается с другим участником репликационной группы.
Еще в одном варианте осуществления отметка времени может обновляться один раз в день или с некоторой другой выбранной частотой в зависимости от действия синхронизации. Если успешное действие синхронизации происходит во время периода, то отметка времени может обновляться. Успешное действие синхронизации может включать в себя успешную синхронизацию реплицированной папки с реплицированной папкой другого участника, установление хорошего соединения с другим участником, поддержание хорошего соединения с другим участником (например, как показывается контрольными сообщениями или по-другому), получение вектора версии от исходного партнера, отправку вектора версии целевому партнеру или любое другое действие синхронизации.
Каждая реплицированная папка может иметь запись, ассоциированную с отметками времени (например, CONTENT_SET_RECORD) в своем хранилище метаданных. Среди других полей, включенных в запись, запись может включать в себя отметку времени, например, чтобы отражать новизну реплицированной папки, соответствующей записи.
Следует отметить, что возможно, что одна реплицированная папка, размещенная на машине, может соответствовать текущему моменту, тогда как другая реплицированная папка, размещенная на машине, может быть устаревшей. Указанная ситуация может возникать, поскольку одна реплицированная папка способна синхронизироваться с другими участниками в своей репликационной группе, тогда как другая реплицированная папка не способна синхронизироваться с другими участниками в своей репликационной группе.
Перед тем как участник, вмещающий реплицированную папку, попытается соединиться с или принять запрос соединения от другого участника, этот участник может проверить, является ли отметка времени реплицированной папки соответствующей текущему моменту (например, в пределах закладываемого числа дней с текущего момента) перед участием в любом другом действии. Если ее отметка времени является соответствующей текущему моменту, то участник может соединяться или разделить запрос соединения и продолжить действия синхронизации. В противном случае, участник может не пытаться соединиться с другим участником или может отклонить любой запрос соединения и воздерживаться от запуска любого дополнительного действия по репликации с другим участником.
В другом варианте осуществления, если контент участника является устаревшим, то вместо отклонения запроса соединения участник может осуществить принятие запроса соединения, но отказывать в участии в сеансе синхронизации. В одном из вариантов осуществления отказ участвовать в сеансе синхронизации может происходить вместо и в любое время, описанное здесь, по отношению к отклонению запроса соединения.
В другом варианте осуществления участник с устаревшим контентом может потерпеть неудачу в инициализации, так что после этого участник не будет пытаться соединиться с другими участниками и не будет способен осуществлять принятие какого-либо запроса соединения.
Участник, который отказывает в принятии запроса соединения, может возвращать хорошо известный код ошибки, так чтобы остальные участники знали, что контент участника является устаревшим. Кроме того, участник может регистрировать событие (например, EVENT_DFSR_CS_STALE).
Участник репликационной группы, который имеет отметку времени, которая является старой, может считаться имеющим устаревший контент. Максимальная разность между локальными системными часами и отметкой времени, которая может быть допустимой перед тем, как контент участника репликационной группы будет считаться устаревшим, может устанавливаться системным администратором, пользователем и т.д. (далее иногда упоминаемым здесь как "системный администратор"). Упомянутая максимальная разность иногда называется как "значение устаревания".
Чтобы избежать ложной индикации устаревания, частота, с которой обновляется отметка времени в ответ на успешные действия синхронизации, может выбираться так, чтобы оно происходило, по меньшей мере, один раз во время периода времени, соответствующего значению устаревания. Например, если участник поддерживает хорошее соединение с другим участником, то отметка времени может обновляться каждый день в то время, в которое участник поддерживает хорошее соединение. Если значение устаревания составляет 30 дней и отметка времени обновляется ежедневно, то будет маловероятным, что происходит ложная индикация устаревания.
Выбор частоты обновления, которая не дает гарантию, по меньшей мере, одной вероятности обновления в течение времени, соответствующего значению устаревания, может привести к ложной индикации устаревания. Например, если отметка времени обновляется только один раз каждые 30 дней или реже и значение устаревания составляет 30, то возможно, что может происходить успешное действие синхронизации (то есть хорошее соединение), которое не обновлялось на отметке времени.
Должно быть понятно, что имеется компромисс (например, накладные расходы) между обновлением отметки времени очень часто по сравнению со значением устаревания и обновлением отметки времени менее часто. В одном из вариантов осуществления частота, с которой обновляется отметка времени, составляет один раз в день (если успешное действие синхронизации происходит в течение дня), тогда как значение устаревания устанавливается равным 30 дней. В других вариантах осуществления могут выбираться другие частоты и значения устаревания, например, в зависимости от реализации и системной конфигурации.
Более того, устанавливая значение устаревания, равным или меньшим, чем период сбора объявлений, можно избежать или уменьшить различные проблемы. Период сбора объявлений представляет собой период, когда участник ожидает перед удалением ресурсной записи метаданных, что указывает, что ресурс удален. Обычно, участник ожидает перед удалением записи так, чтобы объявления могли распространиться на других участников в репликационной группе. Если участник отсоединен от других участников репликационной группы на протяжении значительного периода времени, то может быть создано объявление для ресурса, и затем ресурсная запись метаданных удаляется. Без описанных здесь средств, если ресурс существует на устаревшем участнике (и если происходит синхронизация, описанная в связи с фиг.3), то ресурс может реплицироваться из устаревшего участника и повторно вводиться в другие участники репликационной группы.
Чтобы избежать или уменьшить вероятность такого поведения, значение устаревания может быть установлено равным или меньшим, чем период объявления. Чем меньше значение устаревания по сравнению с периодом объявления, тем меньше будет вероятность того, что объявление для удаленного ресурса также будет удаляться перед тем, как оно распространится на всех неустаревших участников. До тех пор, пока участник успешно синхронизируется с другим участником в пределах периода объявления, участник будет с большей вероятностью принимать объявление и помечать соответствующий ресурс участника для удаления. Если участник не синхронизируется успешно с другим участником в пределах этого периода, то контент на участнике может помечаться как устаревший и могут использоваться другие средства, описанные ниже, чтобы гарантировать, что устаревший контент не вводится повторно в другие участники репликационной группы.
Когда реплицированная папка становится устаревшей, системный администратор может заблокировать и затем разблокировать ее, чтобы обусловить синхронизацию реплицированной папки с другим участником, когда доступно входящее соединение. Разблокирование реплицированной папки может обусловить прохождение реплицированной папки через начальную синхронизацию. Во время этой начальной синхронизации может быть использована, по меньшей мере, одна из трех стратегий репликации для синхронизации реплицированных папок, как описано ниже.
В одной стратегии один из партнеров репликации (например, партнер с устаревшим контентом) может устанавливаться только для чтения (или подчиненным). Коротко говоря, любое обновление на участнике только для чтения отбрасывается. Если создается файл на этом участнике, он удаляется. Если удаляется существующий файл, он восстанавливается (например, отменой удаления). Если файл обновляется, обновление отбрасывается и переустанавливается первоначальная версия или более новая версия от другого партнера. В целом, это обуславливает репликацию всех обновлений от партнера не только для чтения (например, ведущего) партнеру только для чтения.
Во второй стратегии происходит слияние ресурсов. При слиянии ресурсы от исходного партнера реплицируются к устаревшему партнеру для всех ресурсов, которые отличаются на устаревшем партнере. Если устаревший партнер не включает в себя ресурс, то тот ресурс реплицируется к устаревшему партнеру. Если устаревший партнер включает в себя ресурс, который не имеет исходный партнер, то указанный ресурс не удаляется на устаревшем партнере и может реплицироваться от устаревшего партнера, если устаревший партнер является исходным партнером другого участника.
В третьей стратегии может происходить синхронизация, подобная описанной выше со ссылкой на фиг.3. В упомянутой стратегии ресурсы, в основном, с более поздними датами модификации реплицируются и переписывают соответствующие ресурсы на других участниках с менее новыми датами модификации.
Возможно, что все участники репликационной группы могут быть устаревшими. В таком случае один из участников репликационной группы может устанавливаться как главный участник. Если участник назначается главным участником, то этот участник может реплицировать ресурсы своим целевым партнерам. Если участник не назначается главным участником, то упомянутый участник может не реплицировать ресурсы своим целевым партнерам до тех пор, пока он не синхронизирует успешно ресурсы с исходным партнером. После того, как участник успешно синхронизирован с другим участником, он может возобновлять стандартные действия репликации, как описано в связи с фиг.3.
Могут устанавливаться ограждающие значения, которые контролируют, какие ресурсы выигрывают (и реплицируются) во время синхронизации. Ограждающие значения позволяют системному администратору указывать ресурсы участника, который реплицирует их к другим участникам репликационной группы, независимо от других характеристик ресурсов. Например, ресурс, которому было присвоено более высокое ограждающее значение, может реплицироваться, даже если он старше, чем соответствующий ресурс на другом участнике.
В одном из вариантов осуществления автоматическое восстановление выполняется, когда все участники репликационной группы являются устаревшими. Главный участник может быть предварительно назначен системным администратором, чтобы стать главным участником в случае, когда все участники становятся устаревшими. Альтернативно, чтобы определить, какая машина назначается главной машиной, могут быть использованы другие характеристики участников (например, местоположение, иерархическое упорядочение, если таковое имеется, позднейшая отметка времени и т.д.).
В другом варианте осуществления, когда все участники репликационной группы являются устаревшими, может выполняться ручное вмешательство. При таком вмешательстве системный администратор может быть информирован о том, что все участники являются устаревшими и что кому-то необходимо быть установленным в качестве главного, чтобы возобновлять синхронизацию. Затем, системный администратор может указывать, какой участник является главным участником.
Если участник репликационной группы имеет аутентичные ресурсы или только выходящие соединения (то есть участник не имеет исходных партнеров), то этот участник также может считаться устаревшим, если он является отсоединенным от других участников в течение длительного периода времени. Аутентичные ресурсы представляют собой ресурсы, предназначенные для замещения соответствующих ресурсов на всех других участниках репликационной группы (за исключением других ресурсов, определенных аутентичными). В одном варианте осуществления это можно сделать, присваивая каждому аутентичному ресурсу специальное ограждающее значение. Ресурсы набора контента (например, ресурсы на конкретном участнике) могут быть обозначены как аутентичные, когда, например, выполняется восстановление из резервной копии на одном участнике, и желательно, чтобы все другие участники также имели тот же самый набор контента.
Ресурсы набора контента могут быть определены как неаутентичные, когда участник восстанавливается от потери ресурса. В случае неаутентичности, ресурсы участника теряются в ресурсах от исходных партнеров. Если для конкретного ресурса данные ресурса являются идентичными данным, содержащимся на исходном партнере, то данные ресурса не должны загружаться из исходного партнера, даже если метаданные ресурса являются другими для этого ресурса. Ресурсы в наборе контента могут определяться как неаутентичные, например, когда ресурсы участника репликационной группы потерялись или стали искаженными, ресурсы были восстановлены из резервной копии, и желательно, чтобы ресурсы не реплицировались от другого участника.
Иногда метаданные ресурсов участника могут искажаться, или теряться, или удаляться. Когда происходит такая ситуация, база данных, хранящая метаданные ресурсов, может удаляться или восстанавливаться из данных ресурсов. В таком случае, ресурсы набора контента участника также могут обозначаться как неаутентичные.
Когда некоторый ресурс и соответствующий ему ресурс на исходном партнере не обозначены как аутентичные или неаутентичные, для определения того, какой ресурс выигрывает и реплицируется, может быть использовано обычное разрешение конфликтных ситуаций.
Там, где желательно, чтобы устаревший участник стал новым, для системного администратора может быть предоставлен интерфейс, чтобы сделать устаревшую реплицированную папку соответствующей текущему моменту. В одном из вариантов осуществления, чтобы сделать устаревшего участника новым, интерфейс может обновлять отметку времени.
В системах, в которых отслеживается степень исправности системы, модель степени исправности может рассматривать реплицированную папку в устаревшем состоянии как состояние предостережения и может показывать предостережение в отчете. Как описано выше, устаревший участник может не требовать вмешательства системного администратора, так, в одном варианте осуществления, устаревшее состояние может быть отмечено как предостережение вместо критической ошибки.
Фиг.4 - процедурная блок-схема, которая в целом представляет действия, которые могут происходить при определении того, является ли контент на локальной машине достаточно новым, чтобы синхронизироваться с другими участниками репликационной группы, согласно аспектам описанного здесь изобретения. Действия начинаются на этапе 405.
На этапе 410 принимается запрос соединения от партнера (либо исходного, либо целевого). На этапе 415 участник, который принимает запрос, определяет, являются ли его локальные ресурсы устаревшими, как описано ранее. На этапе 420, если локальные ресурсы устаревшие, то действия продолжаются на этапе 425; в противном случае, действия продолжаются на этапе 430. На этапе 425 соединение отклоняется, и к запрашивающей стороне возвращается сообщение, которое указывает, что локальные ресурсы являются устаревшими.
На этапе 430 выполняется принятие запроса соединения, и могут выполняться другие действия синхронизации (например, те, что описаны в связи с Фиг. 3). На этапе 435 отметка времени может быть обновлена, чтобы показать, что недавно имела место синхронизация.
На этапе 440 действия заканчиваются.
Хотя это не показано, перед тем, как некоторый участник запрашивает соединение с другим участником, он может определять, являются ли его ресурсы устаревшими. Если да, то участник может воздержаться от запроса соединения; в противном случае, участник может запросить соединение, выполнить другие действия синхронизации и обновить свою отметку времени.
Фиг.5 - процедурная блок-схема, которая в целом представляет действия, которые могут происходить, когда определено, что участник имеет устаревший контент и сконфигурирован как подчиненный, чтобы восстановить контент, согласно аспектам описанного здесь изобретения. На этапе 505 действия начинаются в начальной фазе синхронизации.
На этапе 510 удаляют любые ресурсы, которые содержатся локально на участнике, но не содержатся на исходном партнере, с которым локальный партнер синхронизируется.
На этапе 515 добавляют любые ресурсы, которые не содержатся локально, но содержатся на исходном партнере.
На этапе 520 получают любые ресурсы, которые не являются идентичными с исходным партнером, и обновляют локальные ресурсы соответственно.
На этапе 525 действия заканчиваются. После окончания действий локальный партнер может считаться прошедшим начальную стадию синхронизации и после этого может синхронизировать ресурсы, как описано в связи с фиг.4.
Фиг.6 - процедурная блок-схема, которая в целом представляет действия, которые могут происходить, когда определено, что участник имеет устаревший контент и сконфигурирован, чтобы объединить контент с исходным партнером, согласно аспектам описанного здесь изобретения.
На этапе 605 действия начинаются в начальной фазе синхронизации.
На этапе 610 получают любые ресурсы, которые не являются идентичными с исходным партнером, и обновляют локальные ресурсы соответственно.
На этапе 615 добавляют любые ресурсы, которые не содержатся локально, но содержатся на исходном партнере.
На этапе 620 действия заканчиваются. После окончания действий локальный партнер может считаться прошедшим начальную стадию синхронизации и после этого может синхронизировать ресурсы, как описано в связи с фиг.4. Это может включать в себя ресурсы синхронизации, которые были удалены на других участниках, для которых также были удалены объявления, как обсуждалось ранее.
Должно быть понятно, что действия, описанные в связи с фиг.4-6, не включают все действия, которые могут выполняться при проверке новизны ресурсов в системах репликации. Кроме того, хотя действия описаны как происходящие в некотором конкретном порядке, в других вариантах осуществления некоторые из действий могут происходить параллельно или могут выполняться в другом порядке, не отклоняясь от сущности и не выходя за рамки объема описанного здесь изобретения.
Как можно видеть из предшествующего подробного описания, были описаны аспекты, относящиеся к новизне контента и к системам репликации ресурсов. Хотя аспекты описанного здесь изобретения восприимчивы к различным модификациям и альтернативным конструкциям, некоторые иллюстративные варианты осуществления показаны на чертежах и подробно описаны выше. Однако должно быть понятно, что нет намерения ограничить аспекты заявленного изобретения специфическими раскрытыми формами, но наоборот, изобретение охватывает все модификации, альтернативные конструкции и эквиваленты, подпадающие под объем, соответствующий различным аспектам описанного здесь изобретения.