РОЕВАЯ СИНХРОНИЗАЦИЯ ПО СЕТИ ХРАНИЛИЩ ОБЪЕКТОВ

1. Способ (120) синхронизации объектов (14) набора (166) объектов, сохраненного посредством компьютера (162), имеющего процессор (164), с соответствующими объектами наборов объектов, сохраненных посредством, по меньшей мере, одного узла, доступного, по меньшей мере, по одной сети (16), причем способ (120) содержит этап, на котором
выполняют в процессоре (164) инструкции, выполненные с возможностью
выбирать из узлов (18) набор соседних узлов, содержащий, по меньшей мере, один соседний узел, который доступен, по меньшей мере, по одной сети (16) для компьютера (162) и других соседних узлов набора соседних узлов; и
после идентификации обновленного объекта (14) в наборе (166) объектов
определять соседние узлы в наборе соседних узлов, которые не сохраняют обновленный объект (14);
формировать роевую сеть (116) роевых узлов (118), содержащую соседние узлы, не сохраняющие обновленный объект (14);
уведомлять роевые узлы (118) относительно роевой сети (116), сформированной для обновленного объекта (14); и
отправлять обновленный объект (14) в роевые узлы (118) с использованием роевой сети (166).
2. Способ по п.1, в котором выбор набора соседних узлов содержит этапы, на которых подсчитывают число узлов сети, и для соответствующих узлов выбирают набор соседних узлов, содержащий узлы сети, подсчитанные согласно формуле
где
i
S - представляет соседний узел i узла;
n - представляет номер узла;
N - представляет число узлов в сети.
3. Способ по п.1, в котором определение соседних узлов, которые не сохраняют обновленный объект, содержит этапы, на которых для соответствующих соседних узлов отправляют в соседний узел идентификатор обновленного объекта и индикатор содержимого обновленного объекта, и принимают из соседнего узла уведомление, сохраняет или нет соседний узел обновленный объект.
4. Способ по п.1, в котором отправка обновленного объекта в роевые узлы содержит этапы, на которых
разделяют обновленный объект, по меньшей мере, на одну порцию;
инициализируют карту роевых порций, указывающую то, сохраняют или нет соответствующие роевые узлы соответствующие порции обновленного объекта; и
до тех пор, пока карта роевых порций не указывает, что роевые узлы приняли порции,
отправляют порцию в роевый узел, не сохраняющий порцию, согласно карте роевых порций, и
после приема из роевого узла уведомления относительно сохранения порции, обновляют карту роевых порций, чтобы указывать, что роевый узел сохраняет порцию; и
после определения из карты роевых порций, что роевые узлы приняли порции, завершают роевую сеть.
5. Способ по п.1, в котором
инструкции выполнены с возможностью
после идентификации обновленного объекта в наборе объектов добавлять обновленный объект к пакету обновленных объектов, содержащему обновленные объекты, не сохраненные посредством соседних узлов; и
формирование роевой сети содержит этап, на котором
формируют роевую сеть, когда пакет обновленных объектов превышает пороговое значение для пакета объектов.
6. Способ по п.1, в котором
объекты сохраняются в качестве соответствующих объектов в хранилище объектов хоста вычислительного окружения; и
инструкции выполнены с возможностью после идентификации обновленного объекта
определять то, сохраняет или нет хост вычислительного окружения обновленный объект, и
после определения того, что хост вычислительного окружения не сохраняет обновленный объект, отправлять обновленный объект на хост вычислительного окружения.
7. Способ по п.1, в котором инструкции выполнены с возможностью
после уведомления посредством соседнего узла относительно обновленного объекта, содержащего идентификатор и индикатор содержимого,
сравнивать идентификатор и индикатор содержимого обновленного объекта с соответствующим объектом в хранилище объектов, и
отправлять в соседний узел уведомление, сохраняет или нет компьютер обновленный объект.
8. Способ по п.1, в котором инструкции выполнены с возможностью после уведомления относительно формирования посредством источника роевой сети, содержащей компьютер для обновленного объекта,
создавать соответствующий обновленный объект в хранилище объектов;
до тех пор, пока роевые узлы не приняли объект,
после приема объекта сохранять объект в хранилище объектов, и
отправлять объект в роевый узел, не сохраняющий объект; и
после определения того, что роевые узлы приняли объект, завершать роевую сеть.
9. Способ по п.8, в котором
инструкции выполнены с возможностью после уведомления относительно формирования посредством источника роевой сети, содержащей компьютер для обновленного объекта, создавать карту роевых порций, указывающую, сохраняют или нет соответствующие роевые узлы соответствующие порции обновленного объекта;
прием объекта содержит этапы, на которых
после приема порции
сохраняют порцию в хранилище объектов, и
обновляют карту роевых порций, чтобы указывать, что компьютер сохраняет порцию;
отправка объекта содержит этапы, на которых
до тех пор, пока роевые узлы не приняли порции объекта,
отправляют порцию в роевый узел, не сохраняющий порцию, согласно карте роевых порций, и
обновляют карту роевых порций, чтобы указывать, что роевый узел сохраняет порцию; и
определение того, что роевые узлы приняли объект, содержит этап, на котором
определяют согласно карте роевых порций то, что роевые узлы приняли порции.
10. Способ по п.9, в котором
прием порции содержит этап, на котором
уведомляют роевые узлы и источник относительно того, что компьютер сохраняет порцию; и
инструкции выполнены с возможностью, после уведомления, что роевый узел сохраняет порцию, обновлять карту роевых порций, чтобы указывать, что роевый узел сохраняет порцию.
11. Способ по п.9, в котором
инструкции выполнены с возможностью
после уведомления относительно формирования роевой сети, содержащей компьютер, формировать очередь на отправку для соответствующих роевых узлов; и
отправка порции в роевый узел содержит этапы, на которых
ставят порцию в очередь на отправку роевого узла;
после постановки порции в пустую очередь на отправку роевого узла инициируют отправку порции в роевый узел; и
после выполнения отправки порции в роевый узел
исключают порцию из очереди на отправку, и
после идентификации следующей поставленной в очередь на отправку порции роевого узла инициируют отправку следующей поставленной в очередь на отправку порции в роевый узел.
12. Способ по п.1, в котором инструкции выполнены с возможностью после обнаружения события синхронизации
идентифицировать обновленные объекты, сохраненные посредством, по меньшей мере, одного соседнего узла и несохраненные в хранилище объектов компьютера; и
после идентификации обновленного объекта, сохраненного посредством, по меньшей мере, одного соседнего узла и несохраненного в хранилище объектов компьютера
создавать обновленный объект в хранилище объектов;
разделять обновленный объект, по меньшей мере, на одну порцию; и
до тех пор, пока порции обновленного объекта не сохраняются в хранилище объектов,
запрашивать, по меньшей мере, одну порцию, несохраненную в хранилище объектов, из соседнего узла, сохраняющего порцию, и
после приема порции из соседнего узла, сохранять порцию в хранилище объектов.
13. Способ по п.12, в котором инструкции выполнены с возможностью после приема из соседнего узла запрос на порцию объекта, сохраненного в хранилище объектов компьютера, отправлять порцию объекта в соседний узел.
14. Система (168), выполненная с возможностью синхронизировать обновленный объект (14) набора объектов, сохраненного посредством компьютера (162), с соответствующими объектами (14) наборов объектов, сохраненных посредством, по меньшей мере, одного узла (18), доступного, по меньшей мере, по одной сети (16), причем система (168) содержит
компонент (170) выбора соседних узлов, выполненный с возможностью выбирать из узлов (18) набор соседних узлов, содержащий, по меньшей мере, один соседний узел, который доступен, по меньшей мере, по одной сети (16) для компьютера (162) и других соседних узлов набора соседних узлов;
компонент (174) формирования роевой сети, выполненный с возможностью
определять соседние узлы в наборе соседних узлов, которые не сохраняют обновленный объект (14),
формировать роевую сеть (116) роевых узлов (118), содержащую соседние узлы, не сохраняющие обновленный объект (14), и
уведомлять роевые узлы (118) относительно роевой сети (116), сформированной для обновленного объекта (14); и
компонент (176) отправки в роевой сети, выполненный с возможностью отправлять обновленный объект (14) в роевые узлы (118) с использованием роевой сети (116).
15. Машиночитаемый носитель (182) хранения данных, при этом носитель содержит инструкции, которые при выполнении посредством, по меньшей мере, одного процессора (164) компьютера (162), сохраняющего набор объектов, содержащий объекты (14), соответствующие объектам (14) наборов объектов, сохраненных посредством, по меньшей мере, одного узла (18), доступного, по меньшей мере, по одной сети (16), и сохраненных в качестве соответствующих объектов (14) в хранилище (166) объектов хоста (100) вычислительного окружения, инструктируют, по меньшей мере, одному процессору (164) выполнять
после обнаружения, по меньшей мере, одного события изменения в сети, выбор из узлов (18) набора соседних узлов, содержащего, по меньшей мере, один соседний узел, посредством
подсчета узлов (18) сети (16), и
для соответствующих узлов (18), выбора набора соседних узлов, содержащих узлы (18) сети (16), подсчитанных согласно формуле
где
i
S представляет соседний узел i узла (18);
n представляет номер узла (18); и
N представляет число узлов (18) в сети (16);
после идентификации небольшого набора обновленных объектов, содержащего небольшое число небольших обновленных объектов (14), которые должны доставляться в небольшой набор соседних узлов, отправлять небольшой набор обновленных объектов в соседние узлы небольшого набора соседних узлов;
после идентификации обновленного объекта (14) в наборе объектов, превышающем небольшой набор обновленных объектов.
определение соседних узлов, которые не сохраняют обновленный объект (14), посредством для соответствующих соседних узлов
отправки в соседний узел идентификатора обновленного объекта (14) и индикатора содержимого обновленного объекта (14), и
приема из соседнего узла уведомления, сохраняет или нет соседний узел обновленный объект (14);
формирования роевой сети (116) роевых узлов (118), содержащей соседние узлы, не сохраняющие обновленный объект (14);
уведомления роевых узлов (118) относительно роевой сети (116), сформированной для обновленного объекта (14); и
отправку обновленного объекта (14) в роевые узлы (118) с использованием роевой сети (116) посредством
разделения обновленного объекта (14), по меньшей мере, на одну порцию;
инициализации карты (192) роевых порций, указывающей то, сохраняют или нет соответствующие роевые узлы (118) соответствующие порции обновленного объекта (14); и
до тех пор, пока карта (192) роевых порций не указывает, что роевые узлы (118) приняли порции.
отправку порции в роевый узел (118), не сохраняющий порцию, согласно карте (192) роевых порций, и
после приема из роевого узла (118) уведомления относительно сохранения порции, обновление карты (192) роевых порций, чтобы указывать, что роевый узел (118) сохраняет порцию; и
после определения из карты (192) роевых порций, что роевые узлы (118) приняли порции, завершение роевой сети (116);
определять то, сохраняет или нет хост (100) вычислительного окружения обновленный объект (14); и
после определения того, что хост (100) вычислительного окружения не сохраняет обновленный объект (14), отправлять обновленный объект (14) на хост (100) вычислительного окружения;
после уведомления посредством соседнего узла относительно обновленного объекта (14), содержащего идентификатор и индикатор содержимого
сравнивать идентификатор и индикатор содержимого обновленного объекта (14) с соответствующим объектом (14) в хранилище (166) объектов, и
отправлять в соседний узел уведомление, сохраняет или нет компьютер (162) обновленный объект (14).
после уведомления относительно формирования посредством источника роевой сети (116), содержащей компьютер (162) для обновленного объекта (14):
создавать соответствующий обновленный объект (14) в хранилище (166) объектов;
формировать очередь на отправку для соответствующих роевых узлов (118);
создавать карту (192) роевых порций, указывающую то, сохраняют или нет соответствующие роевые узлы (118) соответствующие порции обновленного объекта (14);
до тех пор, пока роевые узлы (118) не приняли порции объекта (14):
после приема порции объекта (14):
сохранять порцию в хранилище (166) объектов,
обновлять карту (192) роевых порций, чтобы указывать, что компьютер (162) сохраняет порцию, и
уведомлять роевые узлы (118) и источник относительно того, что компьютер (162) сохраняет порцию;
после уведомления, что роевый узел (118) сохраняет порцию, обновлять карту (192) роевых порций, чтобы указывать, что роевый узел (118) сохраняет порцию;
отправлять порцию в роевый узел (118), не сохраняющий порцию, согласно карте (192) роевых порций посредством:
выбора порции, содержащей нечасто используемую порцию, которая сохраняется в хранилище (166) объектов и которая нечасто сохраняется в роевых узлах (118) согласно карте (192) роевых порций;
постановки порции в очередь на отправку роевого узла (118);
после постановки порции в пустую очередь на отправку роевого узла (118), инициирования отправки порции в роевый узел (118); и
после выполнения отправки порции в роевый узел (118):
исключение порции из очереди на отправку, и
после идентификации следующей поставленной в очередь на отправку порции роевого узла (118), инициирование отправки следующей поставленной в очередь на отправку порции в роевый узел (118); и
обновление карты (192) роевых порций, чтобы указывать, что роевый узел (118) сохраняет порцию; и
после определения согласно карте (192) роевых порций, что роевые узлы (118) приняли порции, завершение роевой сети (116);
после обнаружения события синхронизации:
идентифицировать обновленные объекты (14), сохраненные посредством, по меньшей мере, одного соседнего узла и не сохраненные в хранилище (166) объектов компьютера (162), посредством запроса из хоста (100) вычислительного окружения списка обновленных объектов (14), сохраненных в хранилище (166) объектов хоста (100) вычислительного окружения и не сохраненных в хранилище (166) объектов компьютера (162);
после идентификации обновленного объекта (14), сохраненного посредством, по меньшей мере, одного соседнего узла и не сохраненного в хранилище (166) объектов компьютера (162):
создавать обновленный объект (14) в хранилище (166) объектов;
разделять обновленный объект (14), по меньшей мере, на одну порцию; и
при неудачном приеме, по меньшей мере, одной порции обновленного объекта (14) из соседних узлов:
запрашивать, по меньшей мере, одну порцию из хоста (100) вычислительного окружения, и
после приема, по меньшей мере, одной порции из хоста (100) вычислительного окружения, сохранять, по меньшей мере, одну порцию в хранилище (166) объектов;
до тех пор, пока порции обновленного объекта (14) не сохраняются в хранилище (166) объектов:
запрашивать, по меньшей мере, одну порцию, не сохраненную в хранилище (166) объектов соседнего узла, сохраняющего порцию, и
после приема порции из соседнего узла, сохранять порцию в хранилище (166) объектов; и
для объектов (14), сохраненных в наборе объектов компьютера (162), которые не сохраняются в наборе объектов, по меньшей мере, одного соседнего узла, идентифицировать объект (14) в качестве обновленного объекта (14); и
после приема из соседнего узла запроса на порцию объекта (14), сохраненного в хранилище (166) объектов компьютера (162), отправлять порцию объекта (14) в соседний узел.