Механизм одноранговой широковещательной передачи информационного содержания

Изобретение относится к способам эффективной пересылки файлов в одноранговой сети. Техническим результатом является повышение скорости пересылки, для обеспечения совместного использования файлов в сети по существу в реальном времени. Узлы в сети могут служить как клиентами, так и серверами, так что бремя пересылки файлов в сети равномерно распределяется по узлам сети, в основном обеспечивая, что процесс распространения файлов выполняется максимально быстро. Каждый узел, который имеет или получает файл, уведомляет о владении файлом, так что другие узлы могут получить от него файл. В одном из вариантов, узел может одновременно принимать файл путем загрузки от конкретного узла и предоставлять тот же самый файл путем подкачки в другой узел. В данном варианте идентификатор поколения данных предпочтительно ассоциируется с каждой копией файла, чтобы исключить ситуацию, когда два узла, имеющие только часть файла, пытались извлечь остальную часть файла друг у друга. 6 н. и 10 з.п. ф-лы, 5 ил.

 

Область техники

Настоящее изобретение относится к групповому соединению в сети, более конкретно, к пересылке файлов в одноранговой (без иерархии и выделенных серверов) сети.

Предшествующий уровень техники

По мере того как одноранговые сети становятся все более распространенными в количественном аспекте и по популярности и находят новые применения, все более заметными становятся недостатки в современных одноранговых технологиях. Увеличение вычислительной мощности персональных компьютеров (ПК) также привлекает внимание к этим недостаткам в сопоставлении с отсутствием сопутствующего существенного увеличения ширины полосы, доступной для использования в одноранговых соединениях.

Например, современные способы и методологии пересылки файлов в одноранговых сетях часто оказываются неудобными и недостаточно быстродействующими, создавая препятствия быстрому совместному использованию информации в сети. Когда одноранговая система используется для группового взаимодействия в реальном времени, любая существенная задержка в пересылке файла может привести к ощущению разъединения, когда взаимодействие предположительно в реальном времени начинает ощущаться пользователем скорее как неестественное, менее динамичное взаимодействие. Поэтому важно ускорить пересылку файлов, когда это возможно.

Основная причина медлительности современных протоколов одноранговой пересылки файлов заключается в способе, которым нагрузка пересылки файлов распределяется среди одноранговых узлов. Например, в типовом способе пересылки узел, имеющий файл для совместного с группой использования, просто разветвляет (развертывает веером) этот файл ко всем членам группы путем подкачки (загрузки в удаленные компьютеры) параллельно или последовательно. Это накладывает требование значительной ширины полосы и вызывает неудобства в вычислениях для рассылающего узла, поскольку он должен обслуживать каждого запрашивающего или каждый узел, получающий этот материал, и должен делать это по существу синхронно или одновременно. В результате, скорость пересылки файла относительно всей группы ограничивается вычислительными возможностями и скоростью соединения распределяющего узла.

Имеется потребность в механизме одноранговой пересылки файлов, который обеспечивает достаточную скорость пересылки, чтобы обеспечивать групповые взаимодействия по существу в реальном времени с использованием одноранговой сети без чрезмерного прерывания, обусловленного задержкой пересылки файла.

Сущность изобретения

Настоящее изобретение направлено на систему, способ и архитектуру для эффективной пересылки файлов в одноранговой сети. Система приспособлена для обеспечения совместного использования файлов по существу в реальном времени, что особенно полезно в интерактивной среде группового взаимодействия. В возможном варианте осуществления изобретения множество узлов одноранговой сети служат в качестве как клиентов, так и серверов, принимая информацию файлов и передавая принятую информацию другим узлам. Время пересылки файлов распределяется в возможном варианте осуществления изобретения более равномерно между узлами сети, так что в типовом случае ни один из узлов не несет непропорциональной нагрузки пересылки файлов. Это полезно в обеспечении того, чтобы файл пересылался к каждому узлу в сети по возможности быстро.

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

Краткое описание чертежей

Хотя формула изобретения детально определяет признаки настоящего изобретения, однако изобретение, вместе с его целями и преимуществами, наилучшим образом может быть понято из последующего детального описания, во взаимосвязи с иллюстрирующими чертежами, на которых представлено следующее:

Фиг.1 - схематичная диаграмма, иллюстрирующая в общем виде приведенную для примера компьютерную систему, пригодную для реализации варианта осуществления настоящего изобретения;

Фиг.2 - схематичная диаграмма, иллюстрирующая пример одноранговой сети, обеспечивающей пересылку файлов в соответствии с вариантом осуществления настоящего изобретения;

Фиг.3 - блок-схема последовательности операций, иллюстрирующая процесс распределения и извлечения файлов для использования в одноранговой сети в соответствии с вариантом осуществления настоящего изобретения;

Фиг.4 - блок-схема, иллюстрирующая метод присвоения приоритета пересылке файлов для использования в одноранговой сети в соответствии с вариантом осуществления настоящего изобретения;

Фиг.5 - схематичная диаграмма, показывающая архитектуру узла клиент/сервер в соответствии с вариантом осуществления настоящего изобретения.

Детальное описание изобретения со ссылками на чертежи, где одинаковые ссылочные позиции обозначают подобные элементы, изобретение описано ниже в контексте вычислительной среды. Изобретение описано как реализованное с помощью исполняемых компьютером инструкций, таких как программные модули, исполняемые персональным компьютером (ПК), хотя это не является обязательным требованием для реализации изобретения. В общем случае, программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и тому подобные средства, которые выполняют конкретные задачи или реализуют некоторые абстрактные типы данных.

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

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

Перед детальным описанием изобретения, ниже со ссылками на фиг.1, описана вычислительная среда, в которой могут быть реализованы варианты осуществления изобретения. ПК 20 включает в себя блок 21 обработки, системную память 22 и системную шину 23, которая связывает различные системные компоненты, включая системную память, с блоком 21 обработки. Системная шина 23 может быть любой из различных типов шинных структур, включая шину памяти или контроллер памяти, шину периферийных устройств, локальную шину, использующую любую из разнообразных шинных архитектур. Системная память включает в себя ПЗУ 24 и ОЗУ 25. Базовая система ввода/вывода (BIOS) 26, содержащая базовые подпрограммы, которые способствуют переносу информации межу элементами в ПК 20, например при запуске, сохранена в ПЗУ 24. ПК 20 также включает в себя накопитель 27 на жестких дисках для считывания с жесткого диска 60 и записи на него, накопитель 28 на магнитных дисках для считывания со съемного магнитного диска 29 и записи на него, и накопитель 30 на оптических дисках для считывания со съемного оптического диска 31 или записи на оптический диск, такой как, например, ПЗУ-КД (CD-ROM) или иные оптические носители записи.

Накопитель 27 на жестких дисках, накопитель 28 на магнитных дисках и накопитель 30 на оптических дисках соединены с системной шиной 23 посредством интерфейса 32 накопителя на жестких дисках, интерфейса 33 накопителя на магнитных дисках и интерфейса 34 накопителя на оптических дисках соответственно. Накопители и связанные с ними считываемые компьютером носители обеспечивают энергонезависимую память исполняемых компьютером инструкций, структур данных, программных модулей и других данных для ПК 20. Хотя описываемая приведенная для примера среда использует один или несколько из упомянутых жесткого диска 60, съемного магнитного диска 29 и съемного оптического диска 31, специалистам в данной области техники должно быть понятно, что в приведенной для примера операционной среде могут использоваться и другие типы считываемых компьютером носителей для хранения данных, которые могут хранить данные, доступные для вычислительного устройства, такие как магнитные кассеты, платы флэш-памяти, цифровые видеодиски, картриджи Бернулли, ОЗУ, ПЗУ и т.п.

Ряд программных модулей могут быть сохранены на жестком диске 60, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25, включая операционную систему 35, одну или несколько прикладных программ (приложений) 36, другие программные модули 37 и программные данные 38. Пользователь может вводить команды и информацию в ПК 20 посредством клавиатуры 40 или указательного устройства 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую параболическую антенну, сканер и т.п. Эти и другие устройства ввода часто соединяются с блоком 21 обработки через интерфейс 46 последовательного порта, связанный с системной шиной, но могут быть соединены и посредством других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 47 или иное устройство отображения также соединено с системной шиной 23 через интерфейс, например, такой как видео адаптер 48. Помимо монитора, ПК в типовом случае включают в себя другие периферийные устройства вывода (не показаны), например, громкоговорители и принтеры.

ПК 20 работает в сетевой среде с использованием фиксированных или переходных логических соединений с одним или более удаленными компьютерами, такими как удаленный компьютер 49. Удаленный компьютер 49 может представлять собой, в общем случае, другой ПК, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой обычный сетевой узел или любое другое устройство того типа, как упомянуто выше. Удаленный компьютер 49 в типовом случае включает в себя многие или все из элементов, описанных выше применительно к ПК 20, хотя это не требуется, и на фиг.1 показано только устройство 50 памяти. Логические соединения, показанные на фиг.1, включают в себя локальную сеть 51 и глобальную сеть 52. Такие сетевые среды являются общеизвестными в офисах, компьютерных сетях предприятий, интранетах и в Интернет.

При использовании в сетевой среде локальной сети ПК соединяется с локальной сетью 51 через сетевой интерфейс или адаптер 53. При использовании в сетевой среде глобальной сети ПК в типовом случае включает в себя модем 54 или иное средство для установления связи в глобальной сети 52. Модем 54, который может быть внутренним или внешним, соединен с системной шиной 23 через интерфейс 46 последовательного порта. Хотя в реализации возможного варианта осуществления изобретения может быть использован стандартный модем, лучшие рабочие характеристики могут быть обеспечены при использовании широкополосного соединения, такого как имеющее емкость в пределах от 120 кб/с до 1,5 Мб/с. Программные модули, изображенные по отношению к ПК 20, или их части могут быть сохранены в удаленном устройстве памяти. Следует иметь в виду, что показанные сетевые соединения приведены для примера, и что могут быть использованы и другие средства установления канала связи между компьютерами. Кроме того, не предусматривается ограничение изобретения конкретным типом сети. Любой тип сети, проводной или беспроводной, постоянной или переходной, с коммутацией каналов или с пакетной коммутацией или другие сетевые архитектуры, могут быть использованы для реализации настоящего изобретения.

В последующем описании изобретение будет описываться со ссылками на действия и символические представления операций, которые выполняются одним или несколькими вычислительными устройствами, такими как ПК 20, если не указано иное. Следует иметь в виду, что такие действия и операции, на которые иногда даются ссылки как на выполняемые компьютером, включают в себя манипулирование блоком обработки компьютера с электрическими сигналами, представляющими данные в структурированной форме. Такое манипулирование преобразует данные или сохраняет их в ячейках системы памяти компьютера, что приводит к переконфигурированию или иным образом изменяет работу компьютера способом, хорошо известным специалистам в данной области техники. Структуры данных, в которых поддерживаются данные, являются физическими местоположениями (ячейками) памяти, которые имеют конкретные свойства, определяемые форматом данных. Однако хотя изобретение описано в вышеуказанном контексте, это не означает, что оно должно быть ограничено данным вариантом, так как специалистам в данной области техники должно быть понятно, что действия и операции, описанные ниже, могут также быть реализованы аппаратными средствами.

Приведенная для примера одноранговая сеть 201, используемая в соответствии с вариантом осуществления изобретения, схематично представлена на фиг.2. В типовом случае одноранговая сеть, использующая изобретение, будет содержать примерно от 2 до 10 узлов, хотя для реализации изобретения также могут использоваться более крупные сети. Двунаправленные линии между узлами А-G одноранговой сети представляют одноранговые сетевые соединения. Так, например, в показанной конфигурации узел А соединен непосредственно с узлом В, но только опосредованным образом (то есть не через единственный канал) с узлом С. Каждое одноранговое соединение может в действительности состоять из ряда физических и/или логических, лежащих в его основе соединений, таким образом, как это может быть связано с базовой сетью, на которой строится одноранговая сеть. Заметим, что хотя одноранговая сеть в общем случае будет образована компьютерами, это не является обязательным. Вместо этого, может быть использован любой тип устройств, имеющих соответствующие средства работы в сети, в зависимости от того, какое оборудование выбрано пользователем.

Для повышения эффективности одноранговой сети, каждый компьютер в группе может также хранить «общие файлы» в базе данных, которая актуализируется вместе с базами данных других членов группы. Эта база данных может актуализироваться множеством разных способов. В одной реализации всякий раз, когда конкретный компьютер изменяет базу данных, он может распространить эти изменения к другим компьютерам в одноранговой сети через соединения, описанные выше. Альтернативно, компьютеры в группе могут автоматически обновлять свои базы данных после того, как прошел определенный период времени, опрашивая компьютеры, находящиеся в логическим соединении с ними, для получения новых версий базы данных. Хотя одноранговые технологии в общем случае имеют ряд преимуществ, включая независимость от центрального сервера и зачастую лучшее использование ресурсов, настоящее изобретение может также предусматривать использование центрального сервера или оборудования (не показано), соединенного с одним или несколькими узлами, для хранения данных или для поддержания состояния конкретной однгоранговой группы узлов или конкретных автономных (независимых) участников.

Одноранговая сеть 201 может формироваться с использованием существующих одноранговых технологий. Например, в принципе, узел соединяется с сетью 201 посредством установления соединения с одним из существующих узлов. В этот момент новый узел может осуществлять вложение (совмещать передачу запросов и ответов) по соединениям (к другим узлам) существующего узла путем оценки других соединений и узлов, если имеются, для существующего узла и сделать выбор, осуществить ли соединение с некоторыми, всеми или не соединяться ни с одним из этих других узлов. Соединяющийся узел учитывает, в общем случае, стоимость нового соединения в зависимости от преимуществ нового соединения при принятии решения, создать ли дополнительные соединения на основе соединений существующих узлов. Каждый узел одноранговой сети также поддерживает запись мгновенного состояния частей сети, о которых он имеет информацию, чтобы отслеживать соответствующий сегмент участников сети и их статус в любой данный момент времени, как это должно быть понятно для специалистов в данной области техники. Именно совокупность таких разнообразных записей по различным узлам в действительности формирует одноранговую сеть, поскольку соединения между узлами в типовом случае не реализованы аппаратными средствами, а в большинстве случае являются переходными (неустановившимися, изменяемыми) в смысле соединений с пакетной коммутацией, а не с коммутацией каналов.

В соответствии с одним из аспектов настоящего изобретения, распространение файлов инициируется узлом одноранговой сети, таким как узел А. Как описано ниже более детально, данные файлов пересылаются по сети к соответствующим получающим узлам, в то время как метод рассылки распределяет затраты на пересылку относительно равномерно по сети. В частности, из блок-схемы 301 последовательности операций, показанной на фиг.3, можно видеть, что распространяющий узел сначала на этапе 303 публикует метаданные, связанные с конкретным файлом. Метаданные не являются данными файла, а представляют информацию о самом файле, а также о контексте файла, например, о приоритете по отношению к другим файлам. Метаданные предпочтительно имеют малый объем для лавинной маршрутизации без проблем ко всем узлам по существующим соединениям с использованием минимальной ширины полосы с помощью регулярного метода лавинной маршрутизации одноранговой записи. В соответствии с этим методом все получающие узлы последовательно пересылают метаданные до тех пор, пока данные не достигнут всех узлов сети. Заметим, что когда узел получает дубликат метаданных, например, по другим соединениям с другими узлами, он просто игнорирует дублирующую информацию без ее дальнейшей пересылки и пересылает только первую принятую копию метаданных.

В одном варианте осуществления изобретения метаданные включают в себя имя файла, размер файла, набор характеристик распространения, информацию о сроке окончания действия, любую специфическую для модуля информацию, которую хочет предоставить приложение или модуль, осуществившие публикацию метаданных. Кроме того, метаданные могут также включать в себя любую другую необходимую информацию, такую как дата создания и/или модифицирования, владелец, создатель, приоритет и т.д. Имя файла в метаданных просто является идентификатором, связанным с файлом. Не требуется, чтобы имя файла было абсолютно уникальным, хотя предпочтительным является идентификатор, который в достаточной степени специфичен, так что маловероятно, что он будет связан с каким-либо другим файлом, отличным от требуемого файла в любом узле сети 201. В случае музыкальных файлов имя файла может включать в себя соответствующие метки MP3 ID3. Информация о размере файла обеспечивает индикацию того, какой объем данных содержится в данном файле, и предпочтительно указывается по отношению к размеру файла в сжатом виде, если при пересылке должно использоваться сжатие. Набор характеристик распространения дополнительно обеспечивает рекомендацию или указание на то, каким образом файл должен распространяться. Наконец, информация о сроке окончания действия определяет время, когда файл, будучи пересланным, должен быть удален из памяти каждого получающего узла. Заметим, что публикация исходных метаданных может включать в себя декларацию, что узел-источник имеет предлагаемый файл, но каждый другой узел не делает данную декларацию до тех пор, пока он в действительности не будет иметь по меньшей мере часть файла, как пояснено более подробно ниже.

После того как публикующий узел передал на этапе 303 метаданные, и все узлы одноранговой сети получили метаданные, каждый получающий метаданные узел на этапе 305 принимает решение, запросить или не запрашивать данный файл. Узел может иметь любую из ряда причин для запроса файла. Например, если модуль интерактивного группового взаимодействия в реальном времени, такой как модуль группового восприятия аудиоматериала, вызвал публикацию метаданных файла, и получающий узел активизировал тот же самый тип модуля, затем получающий узел, по всей вероятности, пожелает запросить предлагаемый файл.

Кроме того, в одном из вариантов осуществления изобретения узел осуществляет поиск в своих локальных файлах для определения того, имеет ли он уже копию релевантного файла, и использует любую такую копию вместо запроса загрузки из другого узла. Определение того, является ли локальная копия «той же самой», что и копия, о которой было оповещено, может основываться на множестве факторов. Например, в случае аудиофайлов, одинаковость может быть логически выведена из таких характеристик, как имя файла, исполнитель или иная участвующая сторона, длительность воспроизведения. Однако в другом варианте осуществления изобретения этот локально имеющийся файл не используется для обслуживания запросов других узлов на оповещенный файл. Это связано с тем, что могут иметься различия между локально имеющейся копией и прорекламированной копией, которые могут быть очевидными или неочевидными в узле, являющемся локальным источником, но которые могут воспрепятствовать непрерывности в загрузке, когда имеет место переключение источника в процессе загрузки другим узлом. Такие различия могут состоять в точном методе сжатия, используемом для сокращения файла (например, когда тот же самый файл сжимается различными способами для получения различных конечных версий), или в лежащих в основе данных, использованных для создания файла (например, когда файлы связаны с разными вырезками из одной и той же песни). Решение о том, использовать или не использовать локальный файл в данном контексте, может быть связано с мерой сходства файлов, которая используется.

Если получающий узел принял решение запросить файл, то он осуществляет проверку на этапе 307, чтобы определить, объявил ли какой-либо из непосредственно соседних узлов, что у него имеется этот файл. Если один или несколько соседей объявили, что у них имеется этот файл, что означает, что они имеют по меньшей мере часть файла, то данный узел на этапе 309 принимает решение, от какого из соседних узлов запросить файл. Это решение может быть основано на ряде факторов, включая, например, вычислительные характеристики или характеристики соединений (ранее измеренные характеристики пересылки файлов, скорость, надежность и т.д.) для узлов.

Поскольку множество узлов могут получить части файла и затем уведомить о том, что они владеют ими, то теоретически возможно, что если соответствующие поставщики для этих узлов испытывают проблемы, то узлы могут попытаться получить файл друг от друга. Это привело бы в результате к взаимоблокировке, поскольку ни один узел не обладает полным файлом. Для преодоления этой проблемы, каждый узел, который уведомляет об обладании файлом, также предпочтительно уведомляет о номере поколения (данных) для этого файла. Любой узел, который имеет или получает весь файл, может уведомить о его версии как о файле поколения 0. Узел, который уведомляет о частичной копии, которую он получил от источника поколения 0, уведомляет о своей версии как о поколении 1. В принципе, каждый узел уведомляет о своей версии как о версии поколения на 1 больше, чем версия, которую он одновременно загружает. Когда один узел-источник завершил свою загрузку всей копии файла, он уменьшает значение своего поколения, о котором он уведомляет, до 0, и это уменьшение (отрицательное приращение) распространяется по цепи узлов, на которые он осуществляет подкачку прямо или опосредованно. Таким образом, номер поколения, связанный с уведомленными версиями файла, является другим фактором, используемым в одном из вариантов осуществления изобретения, для определения того, от какого узла следует получить файл, причем обычно запрашивается поколение с более низким номером, а поколение с номером, одинаковым с поколением запрашивающего узла, в типовом случае не приемлемо. Если только один соседний узел объявил о наличии у него файла с подходящей версией, то этап 309 опускается для данного запрашивающего узла. На этапе 311 запрашивающий узел запрашивает файл от выбранного соседнего узла, обладающего этим файлом, и начинает принимать файл.

В одном из вариантов осуществления изобретения, как только запрашивающий узел начинает принимать файл, он способен уведомить другие узлы об обладании этим файлом. Это объясняется тем, что запрашивающий узел может предоставить части файла, которые он уже получил, при одновременном продолжении приема файла от своего поставщика примерно с той же скоростью или с более высокой скоростью. Это действие во многих случаях несколько уменьшает время задержки при распространении файлов, поскольку узлу не требуется ожидать завершения приема файла, прежде чем можно будет уведомить об обладании им и предоставить файл другим узлам. Таким образом, на этапе 313 запрашивающий узел передает уведомление своим соседним узлам, что он обладает указанным файлом. На этапе 315 данный узел обслуживает любые принятые запросы на данный файл. Наконец, процесс завершается на этапе 319.

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

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

Хотя выше детально не рассмотрено, однако имеются ситуации, когда узел делает выбор из множества файлов для подкачки и/или загрузки, и/или когда делается выбор между задачей подкачки и задачей загрузки для конкретного узла. Эти ситуации более детально рассмотрены в отношении обобщенной блок-схемы 401 последовательности операций на фиг.4. Хотя ситуация, представленная на фиг.4, связана с одновременным наличием множества возможностей подкачки (выгрузки) и загрузки, следует иметь в виду, что во многих случаях множества таких возможностей не будет иметься, и в таких ситуациях некоторые из этапов, представленных на блок-схеме 401, могут быть опущены.

На этапе 403 конкретный узел принял запросы на подкачку двух или более конкретных файлов, а также принял уведомления, что два или более других файлов имеются в наличии для подкачки в данный узел. В случае, когда рассматриваемый узел имеет неограниченные возможности подкачки и загрузки, и одновременное исполнение (то есть по существу в одно и то же время или по меньшей мере в течение перекрывающихся интервалов времени) всех таких действий может выполняться без замедления или задержки любого одного из действий, то все подкачки и загрузки предпочтительно осуществляются одновременно. Если, однако, что является более типичным, ресурсы узла и/или сети являются ограниченными, так что реализуется только наиболее быстрая загрузка или подкачка, когда никакая другая загрузка или подкачка не обслуживается, то в общем случае будет производиться только наиболее быстрая возможная загрузка или подкачка путем выбора для обслуживания соответствующего действия (подкачки или загрузки) и файла. Следует иметь в виду, что если каналы подкачки и загрузки являются полностью отдельными, как в случае некоторых широкополосных технологий, то установление приоритета для каждого канала может быть выполнено отдельно, а не во взаимодействии, как показано на фиг.4.

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

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

На фиг.5 показано схематичное представление архитектуры сервер/клиент, которая может быть использована в соответствии с возможным вариантом осуществления изобретения. В частности, в одноранговой сети в соответствии с различными вариантами осуществления изобретения, множество узлов работают как клиенты и как серверы, хотя ясно, что один или несколько узлов могут работать только как клиенты или только как серверы. Приведенная для примера архитектура 501 клиент/сервер имеет клиентское оборудование 503 и серверное оборудование 505. Клиентское оборудование 503 является ответственным за запрос желательных файлов, если это необходимо, и за прием таковых. Более конкретно, клиентское оборудование 503 предпочтительно включает в себя клиентский интерфейс 507 для приема запроса, такого как от модуля или приложения, на получение конкретного файла, такого как тот, о котором получено уведомление от другого узла. Такие запросы могут быть приоритизированы и поставлены в очередь 511 по приоритету. В этот момент интерфейс 513 соединения узлов используется для выполнения запроса и получения желательного файла в соответствующее время на основе присвоенного запросу приоритета.

Серверное оборудование 505 узла предпочтительно содержит файловый интерфейс 515 для приема данных файлов, например, от другого модуля или приложения в узле. Информация файлов может быть сжата, например, в формат 64k Windows Media ® Audio (WMA), или может находиться в унитарном формате для подкачки большого массива данных, или может находиться в потоковом формате для потоковой подкачки. Для ясности внутри интерфейса 515 показаны два интерфейса: интерфейс «опубликования файла» и интерфейс «опубликования потока». Последний используется для облегчения публикации (в сети) потока посредством серверной части 505, в то время как первый используется для облегчения унитарной публикации всего файла, как пояснено выше. Данные файла, принятые в интерфейсе 515, передаются в кэш 517 сервера для временного хранения, и могут быть переупорядочены относительно других ожидающих обработки подкачек в приоритетной очереди 519 сервера. Предпочтительно, файлы наивысшего приоритета принимаются первыми на интерфейсе 515 файлов, хотя приоритеты могут изменять в процессе приема данных файла на интерфейсе 515. Наконец, данные файла предоставляются для доступа в соответствующем приоритетном порядке интерфейсу 513 соединения узла. Понятно, что данные файлов для подкачки могут поступать альтернативным образом от интерфейса 513 соединения узла, например, когда серверное оборудование должно подкачивать те же самые данные к еще одному узлу. В этом случае поступающие данные файлов могут сохраняться как в клиентской приоритетной очереди, так и в серверной приоритетной очереди.

Следует иметь в виду, что описано новое средство для широковещательной пересылки информационного содержания для использования в одноранговой сети. Принимая во внимание многие возможные варианты осуществления, в которых могут быть применены принципы настоящего изобретения, следует иметь в виду, что описанные варианты осуществления со ссылками на чертежи являются только иллюстративными и не должны восприниматься как ограничивающие объем изобретения. Например, специалистам в данной области техники должно быть понятно, что элементы проиллюстрированных вариантов осуществления, показанные в форме программного обеспечения, могут быть реализованы в виде аппаратных средств и наоборот, или что показанные варианты осуществления могут быть модифицированы по своей конфигурации и в деталях без отклонения от сущности изобретения. Поэтому описанное выше изобретение должно принимать во внимание все такие варианты осуществления, которые могут входить в объем нижеследующих пунктов формулы изобретения и их эквивалентов.

1. Способ пересылки файла между узлами в одноранговой сети, имеющей множество узлов, включающих в себя узел-источник, по меньшей мере, один узел-получатель и соседний узел, причем узел-получатель имеет непосредственное одноранговое соединение с соседним узлом и опосредованное одноранговое соединение с узлом-источником, причем способ включает в себя действия, при которых получают в узле-получателе метаданные, которые были переданы узлом-источником и которые соответствуют файлу, которым владеет узел-источник, принимают в узле-получателе от соседнего узла уведомление о том, что соседний узел извлек файл, которым обладает узел-источник, и определяют в узле-получателе, следует ли извлечь файл, которым обладает узел-источник, из соседнего узла, на основе метаданных, извлекают файл из соседнего узла в узел-получателя, если в узле получателя принято решение извлечь файл, причем действие извлечения файла включает в себя посылку запроса к соседнему узлу на получение файла и получение от соседнего узла в узле-получателе файла путем потоковой подкачки, и транслируют к другим узлам в одноранговой сети уведомления, что узел-получатель владеет файлом, как только узел-получатель начал получать файл путем потоковой подкачки.

2. Способ по п.1, отличающийся тем, что метаданные включают в себя приоритет, связанный с файлом, основанный на текущей полезности файла для осуществляемого, по существу, в реальном времени группового взаимодействия по одноранговой сети.

3. Способ по п.1, отличающийся тем, что уведомление, что узел-получатель владеет файлом, также включает в себя идентификатор поколения, причем упомянутый идентификатор поколения отличает копию файла, доступную от узла-получателя, от копии файла, доступной от узла-источника.

4. Способ по п.3, отличающийся тем, что дополнительно включает трансляцию второго уведомления, что узел-получатель обладает файлом, как только узел-получатель закончил принимать файл путем потоковой подкачки, причем второе уведомление включает в себя второй идентификатор поколения, при этом второй идентификатор поколения не отличает копию файла, доступную от узла-получателя, от копии файла, доступной от узла-источника.

5. Способ по п.1, отличающийся тем, что определение в узле-получателе, следует ли извлечь файл, которым обладает узел-источник, из соседнего узла, на основе метаданных, дополнительно включает определение на основе метаданных, что локальный файл существует на узле-получателе, который соответствует файлу, которым обладает узел-источник, и тем самым принятие решения не извлекать файл из соседнего узла.

6. Способ по п.2, отличающийся тем, что файл, которым обладает узел-источник, является аудиофайлом.

7. Способ по п.6, отличающийся тем, что текущую полезность файла для осуществляемого, по существу, в реальном времени группового взаимодействия по одноранговой сети определяют на основе уровня файла в списке аудиовоспроизведения, при этом текущий уровень воспроизведения в списке воспроизведения ассоциирован с более высоким приоритетом, чем уровень в списке воспроизведения, который не относится к текущему воспроизведению.

8. Считываемый компьютером носитель, имеющий сохраненные на нем исполняемые компьютером инструкции для выполнения способа по п.1.

9. Способ пересылки файлов между узлами в одноранговой сети, имеющей множество узлов, включающих в себя узел-источник, по меньшей мере, один узел-получатель и первый и второй соседние узлы, причем узел-получатель имеет непосредственное одноранговое соединение с первым и вторым соседними узлами и опосредованное одноранговое соединение с узлом-источником, причем способ включает в себя действия, при которых

получают в узле-получателе от первого соседнего узла уведомление, что первый соседний узел может предоставить первый файл, причем узел-получатель владеет первыми метаданными, ассоциированными с первым файлом, и первые метаданные содержат первый приоритет, принимают в узле-получателе запрос от второго соседнего узла на подкачку второго файла от узла-получателя к второму соседнему узлу, причем узел-получатель обладает вторыми метаданными, ассоциированными с вторым файлом, причем вторые метаданные включают в себя второй приоритет,

определяют, какой из первого и второго приоритетов соответствует более высокому уровню приоритета,

извлекают первый файл из первого соседнего узла, если первый приоритет соответствует более высокому уровню приоритета, чем второй приоритет, и в противном случае осуществляют подкачку второго файла во второй соседний узел, и

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

10. Способ по п.9, отличающийся тем, что первая копия файла, доступная от первого соседнего узла, ассоциирована с вторым идентификатором поколения, причем упомянутый второй идентификатор поколения отличает первую копию файла, доступную от первого соседнего узла, от первой копии файла, доступной от узла-источника.

11. Способ по п.9, отличающийся тем, что дополнительно включает трансляцию второго уведомления, что узел-получатель может предоставить первый файл, как только узел-получатель закончил принимать первый файл, при этом второе уведомление включает в себя второй идентификатор поколения, причем упомянутый второй идентификатор поколения не отличает первую копию файла, доступную от узла-получателя, от первой копии файла, доступной от первого соседнего узла.

12. Способ по п.11, отличающийся тем, что первый и второй файлы являются аудиофайлами.

13. Способ по п.9, отличающийся тем, что первый и второй приоритеты основаны на уровнях соответствующих файлов в списке аудиовоспроизведения, при этом текущий уровень воспроизведения в списке воспроизведения ассоциирован с более высоким приоритетом, чем уровень в списке воспроизведения, который не относится к текущему воспроизведению.

14. Считываемый компьютером носитель, имеющий сохраненные на нем исполняемые компьютером инструкции для выполнения способа по п.9.

15. Способ пересылки файлов между узлами в одноранговой сети, имеющей множество узлов, включающих в себя узел-получатель и первый и второй соседние узлы, причем узел-получатель имеет непосредственное одноранговое соединение с первым и вторым соседними узлами, причем способ включает в себя действия, при которых

получают в узле-получателе от снабжающего узла часть требуемого файла, имеющего первый идентификатор поколения, и присваивают этой части требуемого файла второй идентификатор поколения, который превышает первый идентификатор поколения,

получают в узле-получателе от первого соседнего узла первое уведомление, что первый соседний узел может предоставить требуемый файл, причем первое уведомление содержит идентификатор поколения копии первого соседнего узла,

получают в узле-получателе от второго соседнего узла второе уведомление, что второй соседний узел может предоставить требуемый файл, причем второе уведомление содержит идентификатор поколения копии второго соседнего узла,

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

16. Считываемый компьютером носитель, имеющий сохраненные на нем исполняемые компьютером инструкции для выполнения способа по п.15.



 

Похожие патенты:

Изобретение относится к области вещания медиаконтента в сети, в частности к системе приема и системе условного доступа для нее. .

Изобретение относится к средствам осуществления связи между вычислительными устройствами по вычислительным сетям радиосвязи. .

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

Изобретение относится к автоматике и вычислительной технике и может найти применение при построении распределенных систем программного управления технологическими процессами, роботами и робототехническими комплексами, а также подсистем логического управления многоуровневых иерархических АСУ и мультипроцессорных систем широкого класса.

Изобретение относится к вычислительной технике. .

Изобретение относится к области вычислительной техники, в частности системам управления и обработки данных

Изобретение относится к системам передачи информации с использованием активного прокси-сервера

Изобретение относится к доставке контента, в частности к его загрузке

Изобретение относится к системе и способу применения преобразований к файлам, состоящим из множественных частей

Изобретение относится к области аутентификации, в частности разграничения доступа пользователя к подобласти области сети

Изобретение относится к устройству обработки информации, системе и способу обновления программного обеспечения

Изобретение относится к способу оптимизации регулируемых параметров машины

Изобретение относится к вычислительной технике и может быть использовано в механизме, который предусматривает управляемый данными вывод командной строки в пределах окружения, которое поддерживает конвейер объектно-ориентированных команд

Изобретение относится к технике связи и может быть использовано для организации двустороннего обмена информацией между пользователями мобильных сетей связи
Наверх