Обработка потока с использованием виртуальных агентов обработки

В данном документе описываются технологии для доставки события и обработки потока с использованием виртуальных агентов обработки. Технический результат заключается в предоставлении выбора концепций в упрощенной форме. По приему публикации события в очереди, система среды выполнения идентифицирует один или более виртуальных агентов обработки, которые могут быть заинтересованы, но явным образом не подписаны на опубликованное событие. Информация опубликованного события доставляется к идентифицированным виртуальным агентам обработки. Перед фактической доставкой система среды выполнения дополнительно определяет, были ли активированы виртуальные агенты обработки, и активирует те агенты обработки, которые не были активированы. На основании принятой информации события, некоторые из виртуальных агентов обработки могут принять решение о подаче подписок в явной форме, чтобы принимать больше событий из очереди. Явные подписки будут инициировать, чтобы система среды выполнения доставляла события, на которые подписались, агентам обработки, которые могут включать в себя прошедшие события, которые были опубликованы в очереди до того, как принимается явная подписка. 2 н. и 8 з.п. ф-лы, 6 ил.

 

ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ

[0001] В системе обработки потока единица обработки потока может осуществлять связь с другими единицами обработки, чтобы принимать события для обработки. Это может быть сделано посредством либо прямой связи одной единицы обработки с другой, либо посредством модели публикация-подписка, где единица обработки подписывается на некоторые события и принимает события, когда они публикуются.

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

[0003] Именно в отношении этих и других соображений представляется раскрытие, выполненное в данном документе.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[0004] В данном документе описываются технологии для доставки события и обработки потока с использованием виртуальных агентов обработки. Один или более виртуальных агентов обработки могут быть созданы и сконфигурированы, чтобы принимать и обрабатывать события потока. Механизм, такой как очередь, может быть использован и/или сконфигурирован, чтобы принимать публикации события от разнообразных объектов в системе обработки потока. Опубликованные события также могут быть оставлены или сохранены для извлечения и доставки позже при необходимости. По приему публикации события система среды выполнения может идентифицировать один или более виртуальных агентов обработки, которые могут быть заинтересованы в приеме опубликованных событий, но которые явным образом не подписаны на опубликованное событие. Информация события опубликованного события затем может быть доставлена к идентифицированным виртуальным агентам обработки. Перед фактической доставкой события или информации события, система среды выполнения может дополнительно определять, были ли активированы виртуальные агенты обработки, и система среды выполнения может активировать агенты обработки, если агенты обработки не были активированы. Событие или информация события, содержащаяся в нем, затем может быть доставлена активированным агентам обработки.

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

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

[0007] Данная Сущность Изобретения предоставлена, чтобы представить выбор концепций в упрощенной форме, которые дополнительно описываются ниже в Подробном Описании. Данная Сущность Изобретения как не предназначена для того, чтобы идентифицировать ключевые признаки или неотъемлемые признаки заявленного предмета изобретения, так и не рассматривается, что данная Сущность Изобретения используется, чтобы ограничить объем заявленного предмета изобретения. Кроме того, заявленный предмет изобретения не ограничивается реализациями, которые устраняют любые или все недостатки, отмеченные в любой части данного раскрытия.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0008] Фигура 1 является схемой компьютерной системы, предоставляющей описание общих сведений одного механизма, раскрываемого в данном документе для обработки потока, с использованием виртуальных агентов обработки;

[0009] Фигура 2 является структурной схемой, показывающей аспекты очереди и виртуальных потоков;

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

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

[0012] Фигуры 5A-5D иллюстрируют операции посредством примерных виртуальных агентов обработки в ответ на события, опубликованные в очереди в разные моменты времени; и

[0013] Фигура 6 является схемой архитектуры компьютера, показывающей иллюстративную архитектуру компьютерного аппаратного обеспечения для вычислительной системы, выполненной с возможностью реализации технологий, представленных в данном документе.

ПОДРОБНОЕ ОПИСАНИЕ

[0014] В данном документе описываются технологии для доставки события и обработки потока, с использованием виртуальных агентов обработки. В технологиях, раскрываемых в данном документе, один или более виртуальных агентов обработки, которые могут именоваться в данном документе как «агенты обработки» или «PA», могут быть использованы в качестве единиц обработки для обработки потока. Эти виртуальные агенты обработки могут исполняться на одном или более серверов, и могут быть адресуемыми для операций и взаимодействий независимо от того, являются ли агенты обработки активированными или не активированными. Каждый из виртуальных агентов обработки может быть выполнен с возможностью публикации, приема, и/или обработки разнообразных событий. События могут быть опубликованы в очереди, и могут быть дополнительно оставлены или сохранены в очереди для извлечения позже.

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

[0016] Опубликованное событие или информация, содержащаяся внутри или ассоциированная с опубликованным событием, именуемая в данном документе как «информация события», затем может быть доставлена идентифицированным агентам обработки неявного подписчика. Перед фактической доставкой, система среды выполнения, которая поддерживает и осуществляет диспетчеризацию виртуальных агентов обработки, может определять, были ли активированы агенты обработки неявного подписчика, и может активировать агенты обработки, если агенты обработки не были активированы. Событие или информация события затем может быть доставлена активированным агентам обработки, где событие или информация события могут быть дополнительно обработаны. Сходным образом, когда публикация события принимается в очереди, один или более агентов обработки, которые были явным образом подписаны на прием опубликованного события, также могут быть идентифицированы и активированы при необходимости. Опубликованное событие затем может быть доставлено агентам обработки явного подписчика для обработки.

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

[0018] В соответствии с дополнительными аспектами события в очереди могут быть отображены в или обобщены в одном или более виртуальных потоках, и каждый из виртуальных потоков может включать в себя подмножество событий, которые публикуются в очереди. Публикация события и подписка на событие, выполняемая агентом обработки, и/или другими объектами, может быть направлена на виртуальные потоки, а не на очередь. Каждый из виртуальных потоков может быть определен посредством событий, которые должны быть опубликованы в нем, и/или посредством типа событий, в приеме которых заинтересован агент обработки. Раз так, то виртуальные потоки могут быть динамическими, и существование виртуальных потоков может зависеть от событий, которые должны быть опубликованы, и/или событий, которые должны быть доставлены. Дополнительные подробности касательно этих и прочих аспектов технологий, представленных в данном документе, будут предоставлены ниже в связи с Фигурами 1-6.

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

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

[0021] Обращаясь теперь к Фигуре 1, будут предоставлены подробности касательно компьютерной системы и некоторых компонентов, включенных в нее, в соответствии с аспектами, представленными в данном документе. В частности, Фигура 1 показывает аспекты системы 100 обработки потока для доставки события и обработки потока, с использованием виртуальных агентов обработки. Как показано на Фигуре 1, система 100 обработки потока может включать в себя систему 108 среды выполнения, которая поддерживает и способствует осуществлению связи среди разнообразных объектов в системе 100 обработки потока, включающих в себя, но не ограничиваясь, виртуальные агенты 102A-102N обработки (которые могут именоваться в данном документе по отдельности как виртуальный агент 102 обработки или собирательно как виртуальные агенты 102 обработки), систему 104 очереди, клиентское вычислительное устройство 116, и серверное вычислительное устройство 118.

[0022] Система 108 среды выполнения может включать в себя группу распределенных серверов (не показаны на Фигуре 1), которые могут быть выполнены с возможностью исполнения базового слоя 122 среды выполнения, чтобы собирательно обеспечивать и поддерживать «виртуализированные распределенные компоненты» (которые также могут именоваться в данном документе как «виртуальные компоненты»). Используемые в данном документе «компоненты» относятся к компонентам программного обеспечения, таким как объекты программного обеспечения или другим видам по отдельности адресуемых изолированных объектов, таким как распределенные объекты, агенты, исполнители и подобное. Виртуализированный распределенный компонент, поддерживаемый посредством системы 108 среды выполнения, имеет существование, которое является независимым от времени жизни любого из его экземпляров «в памяти», и, следовательно, независимым от времени жизни любого конкретного сервера в системе 108 среды выполнения. Если отсутствует экземпляр «в памяти» виртуального компонента, сообщение, отправленное компоненту, автоматически вызывает создание нового экземпляра на доступном сервере посредством базового слоя (уровня) 122 среды выполнения, который может быть любым доступным сервером в системе 108 среды выполнения. Раз так, то виртуальный компонент является всегда адресуемым посредством идентификационных данных виртуального компонента для взаимодействия и/или операции независимо от того, активирован или нет виртуальный компонент в системе.

[0023] Базовый слой 122 среды выполнения также может быть выполнен с возможностью осуществления диспетчеризации активации и деактивации виртуального компонента. Базовый слой 122 среды выполнения может быть дополнительно выполнен с возможностью осуществления диспетчеризации связи с виртуальными компонентами прозрачно для программы, которая использует виртуальный компонент. Для достижения этого, базовый слой 122 среды выполнения может обеспечивать сопровождение информации, которая указывает одно или более местоположения сервера для любого активированного экземпляра виртуального компонента, отправлять одну или более связи к активированному экземпляру виртуального компонента, или сберегать связи с виртуальным компонентом, который находится в деактивированном состоянии до тех пор, пока экземпляр виртуального компонента не активируется до активации для приема связей к нему. Базовый слой 122 среды выполнения, таким образом, может давать разработчику виртуальное «пространство компонента», которое позволяет вовлекать любой возможный виртуальный компонент в систему, как если бы он был активирован, т.е., присутствует в памяти.

[0024] Если сервер, на котором активируется виртуальный компонент, дает сбой, виртуальный компонент может быть восстановлен посредством повторной активации другой активации виртуального компонента на другом сервере в системе 108 среды выполнения. Раз так, то в отношении виртуальных компонентов не требуется надзор и/или явное повторное создание посредством приложения, которое разработано на основании базового слоя 122 среды выполнения.

[0025] Виртуализация компонентов основана на уровне косвенного обращения, которое осуществляет отображение от виртуальных компонентов к физическим экземплярам/активациям, которые работают в настоящий момент. Данный уровень косвенного обращения может предоставлять базовому слою 122 среды выполнения возможность справляться со многими проблемами, на которые в противном случае должен реагировать разработчик приложения, такими как размещение виртуального компонента и балансировка нагрузки, деактивация неиспользуемых виртуальных компонентов, и восстановление виртуального компонента после сбоев сервера. Таким образом, виртуальные компоненты, предоставляемые базовым слоем 122 среды выполнения могут упрощать модель программирования при этом обеспечивая гибкость среды выполнения при балансировке нагрузки и прозрачное восстановление из сбоев. Больше подробностей в отношении базового слоя 122 среды выполнения можно найти в находящейся одновременно на рассмотрении Патентной Заявке США № 14/228,129, поданной 26 марта 2104г., и озаглавленной «Virtualized Components in Computing Systems».

[0026] В соответствии с аспектами технологий, представляемых в данном документе, виртуальные агенты 102 обработки в системе 100 обработки потока, могут быть сконструированы в качестве виртуальных компонентов, предоставляемых и поддерживаемых посредством базового слоя 122 среды выполнения системы 108 среды выполнения. На основании такой конструкции, виртуальные агенты 122 обработки могут быть всегда адресуемыми для взаимодействия и/или операции независимо от того, являются или нет виртуальные агенты 102 обработки активированными. Виртуальные агенты 102 обработки могут быть восстановлены после сбоя сервера, на котором виртуальный агент 102 обработки был активирован, посредством повторной активации виртуального агента 102 обработки на другом сервере в системе 108 среды выполнения.

[0027] В некоторых аспектах, виртуальные агенты 102 обработки могут каждый быть выполнен с возможностью реализации некоторых действий и могут собирательно предоставлять функциональную возможность для крупномасштабного приложения программного обеспечения. Например, в компьютерном игровом приложении, виртуальный агент 102 обработки может быть создан и выполнен с возможностью осуществления диспетчеризации каждой игры в игровом приложении. Виртуальный агент 102 обработки также может быть создан для каждой карты, которая размещает игру в игровом приложении. Отдельные виртуальные агенты 102 обработки могут быть дополнительно созданы и выполнены с возможностью осуществления диспетчеризации индивидуальных игроков, которые участвуют в разнообразных играх игрового приложения. Конфигурации виртуального агента 102 обработки, включающие в себя действия, которые должны быть выполнены посредством виртуального агента 102 обработки, ввод и вывод виртуального агента 102 обработки, и/или другие конфигурации, могут быть указаны посредством декларативного определения виртуального агента 102 обработки или могут быть получены программным путем.

[0028] Для того чтобы предоставить согласованную систему для обработки потока, разнообразным виртуальным агентам 102 обработки в системе 100 обработки потока может требоваться осуществлять связь друг с другом. Например, сообщение может быть сообщено от одного виртуального агента 102 обработки другому, чтобы обновить статус виртуальных агентов 102 обработки, чтобы активировать другой виртуальный агент 102 обработки, и/или инициировать, чтобы некоторые действия были выполнены другим виртуальным агентом 102 обработки. В соответствии с некоторыми аспектами, описываемыми в данном документе, сообщение от виртуального агента 102 обработки, предназначенное для сообщения другим виртуальным агентам 102 обработки и/или другому субъекту в системе, может быть опубликовано в качестве события 112 в очереди 106, реализуемой посредством системы 104 очереди.

[0029] Система 104 очереди может включать в себя один или более серверов, реализующих очередь 106 для приема и оставления публикаций события от разнообразных объектов в системе 100 обработки потока. Следует отметить, что серверы в системе 104 очереди и системе 108 среды выполнения могут включать в себя одни и те же или отличные серверы, и серверы в системе 104 очереди и системе 108 среды выполнения могут быть web-серверами, серверами приложений, сетевыми приборами, выделенными компьютерными устройствами аппаратного обеспечения, персональными компьютерами («PC»), или любым сочетанием этих и/или других вычислительных устройств, известных в области техники. Серверы могут быть соединены посредством сети (не показана на Фигуре 1), которая может быть локальной сетью («LAN»), глобальной сетью («WAN»), Интернет, или любой другой сетевой топологией, известной в области техники, которая соединяет вычислительные устройства.

[0030] Событие 112, которое должно быть опубликовано в очереди 106, может включать в себя разнообразную информацию, ассоциированную с событием, которое произошло или наблюдалось на субъекте отправки события, который может быть виртуальным агентом 102 обработки, клиентским вычислительным устройством 116, серверным вычислительным устройством 118, и/или потенциально другими объектами в системе 100 обработки потока. Информация, которая содержится в событии 112, может включать в себя, но не ограничивается, идентификацию субъекта, порождающего событие, время события, местоположение события, идентификации объектов, вовлеченных в событие, и/или другую информацию, которая может быть использована, чтобы описывать событие. Событие 112 может быть опубликовано в очереди 106 посредством отправки публикации 110 события через систему 108 среды выполнения. Публикация 110 события может включать в себя всю информацию, которая содержится в соответствующем событии 112, с дополнительной информацией, такой как указание на то, что событие является для публикации, данные, указывающие на то где и когда должно быть опубликовано событие 112, и подобное. В дополнительных аспектах, система 104 очереди также может оставлять или сохранять опубликованные события 112 в очереди 106 или в других местоположениях хранения, которые являются доступными для системы 104 очереди и/или системы 108 среды выполнения.

[0031] Для того, чтобы принимать события для обработки от других виртуальных агентов 102 обработки и/или других объектов, порождающих событие в системе 100 обработки потока, виртуальный агент 102 обработки может отправлять одну или более подписки 114 на событие, чтобы подписаться на прием событий, которые публикуются в очереди 106. Такой виртуальный агент 102 обработки может именоваться в данном документе как «агент 102 обработки явного подписчика» или «явный подписчик 102» этих событий. В качестве примера, а не ограничения, подписка 114 на событие может содержать данные, которые указывают тип или контент событий, в приеме которых заинтересован подписывающийся виртуальный агент 102 обработки. Подписка 114 на событие также может указывать период времени, в течение которого события, на которые подписались, должны происходить. Подписка 114 на событие может дополнительно указывать одно или более утверждения или правила, которые могут быть использованы, чтобы фильтровать события, которые должны быть доставлены к виртуальному агенту 102 обработки. Должно быть понятно, что разнообразные другие данные, описывающие события, в приеме которых заинтересован виртуальный агент 102 обработки, также могут быть включены в подписку 114 на событие.

[0032] Как будет обсуждено более подробно ниже, система 108 среды выполнения также может быть выполнена с возможностью исполнения слоя 124 обработки потока, который может именоваться в данном документе как «слой 124 обработки потока» или «слой 124 обработки потока среды выполнения». Слой 124 обработки потока среды выполнения может быть выполнен с возможностью осуществления диспетчеризации связей события среди объектов в системе 100 обработки потока, включая, но не ограничиваясь, диспетчеризацию публикаций 110 события в очереди 106, координацию доставки событий 112 к виртуальным агентам 102 обработки и/или другим подписчикам на событие, прием и обработку подписок 114 на событие, и потенциально другие операции.

[0033] Слой 124 обработки потока среды выполнения может принимать подписки 114 на события от одного или более агентов 102 обработки явного подписчика, и отправлять события 112, на которые подписались, к соответствующим агентам 102 обработки явного подписчика, когда события 112, на которые подписались, публикуются в очереди 106. В соответствии с дополнительными аспектами, слой 124 обработки потока среды выполнения может дополнительно отправлять опубликованное событие 112 или информацию события, которая содержится в событии 112, к одному или более виртуальным агентам 102 обработки, которые не были явным образом подписаны на события 112, но могут быть заинтересованы в приеме информации, которая содержится в опубликованных событиях 112, которые именуются в данном документе как «агенты 102 обработки неявного подписчика» или «неявный подписчик 102» опубликованных событий 112.

[0034] Агент 102 обработки неявного подписчика может быть идентифицирован посредством изучения конфигураций или установок виртуального агента 102 обработки, таких как действия, которые должны быть выполнены посредством виртуального агента 102 обработки, ввод и вывод виртуального агента 102 обработки, статус виртуального агента 102 обработки, и/или другие конфигурации виртуального агента 102 обработки. Например, виртуальный агент 102 обработки может быть идентифицирован в качестве агента 102 обработки неявного подписчика, если действия, которые должны быть выполнены виртуальным агентом 102 обработки, вовлекают объект или субъект, который инициируется, упоминаются, или иным образом ассоциируются с опубликованным событием 112. Виртуальный объект 102 обработки также может быть идентифицирован в качестве агента 102 обработки неявного подписчика, если данные, включенные в опубликованное событие 112, потребляются или обрабатываются виртуальным агентом 102 обработки. Должно быть понятно, что эти примеры являются лишь иллюстративными, и не должны толковаться в качестве ограничивающих. Другие способы идентификации агента 102 обработки неявного подписчика также могут быть использованы.

[0035] Как только слой 124 обработки потока среды выполнения идентифицировал агенты 102 обработки неявного подписчика, событие 112 может быть доставлено к агентам 102 обработки неявного подписчика посредством базового слоя 122 среды выполнения. Как обсуждалось выше, виртуальные агенты 102 обработки в системе 100 обработки потока могут быть реализованы в качестве виртуальных компонентов, поддерживаемых базовым слоем 122 среды выполнения системы 108 среды выполнения. С точки зрения слоя 124 обработки потока среды выполнения, виртуальные агенты 102 обработки могут быть всегда адресуемыми для доставки событий 112 независимо от того активированы или нет в системе виртуальные агенты 102 обработки. Таким образом, слой 124 обработки потока среды выполнения может пропускать событие 112 к базовому слою 122 среды выполнения для доставки.

[0036] По приему события 112 базовый слой 122 среды выполнения может определять, были или нет активированы агенты 102 обработки неявного подписчика, т.е., были ли агенты 102 обработки неявного подписчика загружены в память и готовы для работы. Если агенты 102 обработки неявного подписчика не были активированы, базовый слой 122 среды выполнения может активировать агенты 102 обработки неявного подписчика и затем доставлять событие 112 к активированным агентам 102 обработки неявного подписчика. Сходным образом, при доставке событий 112 к агентам 102 обработки явного подписчика, базовый слой 122 среды выполнения также может определять активированы ли агенты 102 обработки явного подписчика, и активировать агенты 102 обработки явного подписчика, при необходимости, перед доставкой событий 112.

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

[0038] На основании принятого события 112 или информации события некоторые агенты обработки неявного подписчика могут принимать решение о подаче одной или более подписок 112 на событие слою 124 обработки потока среды выполнения, чтобы принимать больше событий, публикуемых в очереди 106, для обработки. Как кратко упомянуто выше, события, которые содержаться в явных подписках 114 на события, поданных агентом 102 обработки неявного подписчика, могут включать в себя прошедшие события, которые были опубликованы в очереди 106 перед тем, как подписки 114 на событие принимаются и обрабатываются. Слой 124 обработки потока среды выполнения может извлекать прошедшие события из очереди или другого хранилища, в котором соответствующие события оставлены, и доставлять извлеченные события к агенту 102 обработки неявного подписчика. Следует отметить, что когда агент 102 обработки неявного подписчика подает подписку 114 на событие, агент 102 обработки неявного подписчика может превращаться в агента 102 обработки явного подписчика для событий, на которые подписались, и с ним могут обращаться образом сходным с тем, что описан выше для обработки агента 102 обработки явного подписчика.

[0039] Дополнительно должно быть понятно, что, несмотря на то, что вышеприведенное главным образом описывало то, что виртуальный агент 102 обработки может отправлять публикации 110 события, подавать подписки 114 на событие, и/или принимать события 112, разнообразные другие субъекты в системе 100 обработки потока также могут выполнять эти операции. Например, пользователь компьютерного игрового приложения может быть заинтересован в приеме информации касательно игры, такой как информация рейтинга игры. Пользователь может отправлять подписку 114 на событие системе 108 среды выполнения, чтобы получать такую информацию посредством клиентского вычислительного устройства 116, которое может быть персональным компьютером («PC»), лэптопом, ноутбуком, персональным цифровым помощником («PDA»), игровой консолью, телевизионной абонентской приставкой, устройством для чтения электронных книг, устройством потребительской электроники, интеллектуальным телефоном, планшетным вычислительным устройством, серверным компьютером, или любым другим вычислительным устройством, выполненным с возможностью осуществления связи с системой 108 среды выполнения.

[0040] Сходным образом, серверное вычислительное устройство 118, которое может быть серверными компьютерами, web-серверами, серверами приложений, сетевыми приборами, выделенными компьютерными устройствами аппаратного обеспечения, PC, или любым сочетанием этих и/или других вычислительных устройств, известных в области техники, и имеющее исполняемую на нем игру, может отправлять публикацию 110 события, чтобы опубликовать событие 112 начала игры в очереди 106. Серверное вычислительное устройство 118 также может отправлять одну или более подписки 114 на событие для того, чтобы принимать события 112, в обработке которых заинтересовано серверное вычислительное устройство 118. Другие субъекты в системе 100 обработки потока также могут быть выполнены с возможностью публикации, приема, и/или подписки на события 112 способом сходным с тем, что описан выше.

[0041] Также следует иметь в виду, что несмотря на то, что Фигура 1 главным образом раскрывает использование очереди 106 для приема и оставления публикаций 110 события от разнообразных субъектов в системе 100 обработки потока, разнообразные другие механизмы также могут быть использованы сходным образом. В действительности, виртуально любая структура данных, которая может сохранять и удерживать данные для обработки позже, может быть использована образом сходным с тем, что описан выше в отношении очереди 106. Подразумевается, что данная заявка включает в себя все такие структуры данных для удержания и сохранения публикаций 110 события.

[0042] Обращаясь теперь к Фигуре 2, будет описана структурная схема, показывающая дополнительные аспекты очереди 106 и слоя 124 обработки потока среды выполнения. Как кратко обсуждалось выше, слой 124 обработки потока среды выполнения может предоставлять и поддерживать виртуальные потоки для обработки публикаций 110 события и подписок 114 на событие. Посредством использования виртуальных потоков, публикации 110 события и подписки 114 на событие, поданные виртуальными агентами 102 обработки, и/или другими субъектами, могут быть направлены в виртуальные потоки, а не на очередь 106. В результате, виртуальным агентам 102 обработки может не потребоваться знать о существовании очереди 106. Фигура 2 иллюстрирует разнообразные виртуальные потоки, обобщенные слоем 124 обработки потока среды выполнения, и взаимодействия между виртуальными потоками, очередью 106 и виртуальными агентами 102 обработки.

[0043] Как показано на Фигуре 2, слой 124 обработки потока среды выполнения может включать в себя модуль 202 виртуального потока для предоставления и поддержки функциональной возможности, ассоциированной с виртуальными потоками и для обеспечения сопровождения отображения событий по очереди 106 и виртуальным потокам. Виртуальные потоки, предоставленные модулем 202 виртуального потока, могут включать в себя виртуальные потоки 204A-204С публикации события (которые могут именоваться в данном документе по отдельности как виртуальный поток 204 публикации события или собирательно как виртуальные потоки 204 публикации события) и виртуальные потоки 206A-206D подписки на событие (которые могут именоваться в данном документе по отдельности как виртуальный поток 206 подписки на событие или собирательно как виртуальные потоки 206 подсписки на событие).

[0044] Каждый из виртуальных потоков 204 публикации события может быть определен посредством событий, которые должны быть в нем опубликованы, и каждый из виртуальных потоков 206 подписки на событие может быть определен посредством событий, в приеме которых заинтересован подписывающийся субъект. Например, виртуальный агент 102A обработки может отправлять публикацию 110 события в слой 124 обработки потока среды выполнения, чтобы публиковать событие 112. Публикация 110 события может быть отправлена в слой 124 обработки потока среды выполнения через виртуальный поток 204C публикации события. Перед тем, как публикация 110 события принимается в слое 124 обработки потока среды выполнения, виртуальный поток 204C публикации события может не существовать и поступление публикации 110 события может вызвать создание виртуального потока 204C публикации события. Другими словами, публикация 110 события или событие, которое содержится в ней, могут определять и вызывать возникновение виртуального потока 204 публикации события, в который отправляется публикация 110 события. Подобным образом, другие виртуальные агенты 102 обработки также могут подавать публикации 110 события их соответствующим виртуальным потокам 204 публикации события, чтобы публиковать события. После приема публикаций 110 события через виртуальные потоки 204 публикации события, модуль 202 виртуального потока может отправлять события, указанные в публикациях 110 события, в очередь 106 для публикации.

[0045] Сходным образом, когда виртуальный агент 102P обработки подает подписку 114 на событие, указывающую события в приеме которых заинтересован виртуальный агент 102P обработки, такая подписка 114 на событие может определять виртуальный поток 206D подписки на событие, соответствующий событиям, указанным посредством подписки 114 на событие. В результате, посредством подачи подписки 114 на событие, виртуальный агент 102P обработки является эквивалентно подписывающимся на виртуальный поток 206D подписки на событие, определяемый подпиской 114 на событие. Должно быть понятно, что виртуальный агент 102 обработки может подписываться на несколько виртуальных потоков 206 подписки на событие посредством подачи одной или более подписок 114 на событие слою 124 обработки потока среды выполнения. Как только слой 124 обработки потока среды выполнения принял подписку 114 на событие, виртуальный поток 206 D подписки на событие может быть создан и возникнуть. На основании подписки 114 на событие, модуль 202 виртуального потока может извлекать события 112, опубликованные в очереди, и проталкивать события 112 в виртуальный поток 206D подписки на событие, который затем может быть доставлен к виртуальному агенту 102P обработки.

[0046] Например, виртуальный агент 102A обработки может быть выполнен с возможностью обработки игры, и может отправлять публикацию 110 события слою 124 обработки потока среды выполнения, чтобы публиковать событие 112, которое возникает в игре. Поданная публикация 110 события может вызывать создание потока 204C события игры, чтобы принимать событие 112 для публикации. Событие 112, принимаемое через поток 204C события игры, может быть в дальнейшем отправлено в очередь 106 для публикации и сохранения. В то же время, слой 124 обработки потока среды выполнения возможно также принял подписку 114 на событие от виртуального агента 102P обработки, чтобы подписаться на прием всех событий уничтожения противника в играх. Такая подписка 114 на событие может вызывать создание потока 206D события уничтожения противника.

[0047] По приему публикации 110 события в потоке 204C события игры модуль 202 виртуального потока может обнаруживать, что события уничтожения противника, если присутствуют, опубликованные посредством потока 204C события игры, должны быть переадресованы потоку 206D события уничтожения противника для доставки виртуальному агенту 102P обработки. Обнаружение может быть выполнен посредством, например, использования отображения событий в очереди 106 и в виртуальных потоках, обеспечение сопровождения которых осуществляется посредством модуля 202 виртуального потока, как обсуждалось выше. Впоследствии, для каждого события 112 уничтожения противника, опубликованного посредством потока 204C события игры, модуль 202 виртуального потока может извлекать событие 112 уничтожения противника из очереди 106 и проталкивать его в поток 206D события уничтожения противника для доставки виртуальному агенту 102P обработки. Следует иметь в виду, что вышеприведенный пример является лишь иллюстративным, и разнообразные другие события 112, публикации 110 события, подписки 114 на событие и/или другие данные могут быть сообщены среди виртуальных агентов 102 обработки и очереди 106 посредством виртуальных потоков 201 и 206, и/или слоя 124 обработки потока среды выполнения.

[0048] В соответствии с дополнительными аспектами подписка 114 на событие, поданная посредством виртуального агента 102 обработки, может дополнительно указывать одно или более утверждения, которые могут быть использованы, чтобы дополнительно определять соответствующий виртуальный поток 206 подписки на событие. Утверждения могут быть обработаны в нужное время посредством слоя 124 обработки потока среды выполнения, чтобы уточнять виртуальный поток 206 подписки на событие с тем, чтобы создавать один или более фильтров, которые могут быть использованы, чтобы фильтровать события, которые проталкиваются в виртуальный поток 206 подписки на событие. Используя утверждения, события, отправленные к виртуальному агенту 102 обработки, могут быть дополнительно уточнены и, следовательно, исключать доставку ненужных событий виртуальному агенту 102 обработки.

[0049] Как может быть видно из вышеприведенного, виртуальные потоки 204 и 206 являются высоко динамичными и гибкими, и могут быть созданы по мере необходимости, тем самым значительно увеличивая масштабируемость системы 100 обработки потока. В соответствии с дополнительными аспектами, виртуальные потоки 204 и 206 могут логически существовать все время, однако ресурсы системы распределяются им только, когда присутствуют события в виртуальных потоках 204 и 206 для обработки. Виртуальные потоки 204 и 206 могут быть деактивированы посредством требования обратно их ресурсов, когда в виртуальных потоках 204 и 206 не принимаются события в течении некоторого периода времени. Данный период времени может быть предварительно определенным или динамически регулируемым в соответствии со статусом системы, таким как использование ресурсов системы. Такая реализация может обладать преимуществом в сценариях, где виртуальные потоки построены с тонкой детализацией. Например, виртуальные потоки в прикладной системе могут быть сконструированы на каждого пользователя, на каждое устройство, и/или на каждый сеанс. В большой прикладной системе, количество пользователей, устройств и/или сеансов, и, следовательно, количество виртуальных потоков, может быть в масштабе сотен миллионов или даже миллиардов. События, ассоциированные с этими виртуальными потоками, тем не менее, могут происходить лишь нечасто и/или в пакетах, и в один момент, может требоваться, чтобы была активирована лишь небольшая часть виртуальных потоков. В такой системе, посредством распределения ресурсов виртуальным потокам только, когда присутствуют события в виртуальных потоках 204 и 206 для обработки, можно значительно увеличить эффективность и масштабируемость системы.

[0050] Кроме того, модуль 202 виртуального потока может быть дополнительно выполнен с возможностью агрегации связей с и от виртуальных агентов 102 обработки перед взаимодействием с очередью 106. Например, модуль 202 виртуального потока может принимать несколько публикаций 110 события от нескольких виртуальных агентов 102 обработки. Эти несколько публикаций 110 события могут быть агрегированы посредством, например, мультиплексирования, и сообщены очереди 106, чтобы опубликовать несколько событий 112 посредством единственного соединения связи. Подобным образом, несколько подписок 114 на событие, принятые от нескольких виртуальных агентов 102 обработки, могут быть обработаны и агрегированы, и событие 112, которое должно быть отправлено нескольким виртуальным агентам 102 обработки, может быть извлечено из очереди 106 также посредством единственного соединения связи с очередью 106.

[0051] Следует иметь в виду, что несмотря на то, что примеры выше описывали то, что осуществляется агрегация нескольких связей и они сообщаются очереди 106 посредством единственного соединения связи, должно быть понятно, что более чем одно соединение связи может быть установлено между слоем 124 обработки потока среды выполнения и очередью 106 для осуществления связи. Количество установленных соединений связи, тем не менее, может быть много меньшим, чем количество запросов связи, таких как публикации 110 события, и/или подписки 114 на событие, от виртуальных агентов 102 обработки. Преимущество агрегации связи может становиться более значительным по мере того, как растет масштаб системы 100 обработки потока. Например, для системы 100 обработки потока с миллионами виртуальных агентов 102 обработки, запросы связи от виртуальных агентов 102 обработки могут быть в масштабе десятков миллионов, и, как правило, невыполнимо для очереди 106 устанавливать такое большое количество прямых соединений TCP/IP с каждым из виртуальных агентов 102 обработки. Посредством агрегации связи, модуль 202 виртуального потока может сокращать количество прямых соединений TCP/IP с очередью 106 до нескольких тысяч, тем самым, по существу, сокращая потребление ресурсов связи.

[0052] Дополнительно следует иметь в виду, что несмотря на то, что Фигуры 1 и 2 иллюстрируют то, что одна очередь 106 используется для публикации и оставления событий 112, может быть использовано несколько очередей 106. В таких реализациях, модуль 202 виртуального потока может быть дополнительно выполнен с возможностью осуществления диспетчеризации нескольких очередей 106 и обеспечения сопровождения отображения событий среди очередей 106 и разнообразных виртуальных потоков 204 и 206. Также должно быть понятно, что другие субъекты в системе 100 обработки потока, такие как клиентское вычислительное устройство и серверное вычислительное устройство, также могут публиковать события через публикации 110 события, подавать подписки 114 на событие, и/или принимать события 112 посредством виртуальных потоков 204 и 206.

[0053] Фигура 2 дополнительно иллюстрирует аспекты для организации и диспетчеризации виртуальных агентов 102 обработки, использующих контейнеры 208A-208B агента обработки (которые могут именоваться в данном документе по отдельности как контейнер 208 агента обработки или собирательно как контейнеры 208 агента обработки). Каждый из контейнеров 208 агента обработки может предоставлять независимую вычислительную среду виртуальным агентам 102 обработки, которая является отделенной и изолированной от других контейнеров 208 агента обработки. Разнообразные вычислительные ресурсы, такие как виртуальные машины, могут быть распределены контейнеру 208 агента обработки, чтобы размещать виртуальные агенты 102 обработки. Каждый контейнер 208 агента обработки также может масштабироваться независимо от других контейнеров 208 агента обработки. Должно быть понятно, что виртуальный агент 102 обработки, который публикует событие 112, и виртуальный агент 102 обработки, который подписывается на и принимает событие 112, могут находиться в одном и том же контейнере 208 агента обработки или в двух разных контейнерах 208 агента обработки. Дополнительно должно быть понятно, что виртуальные агенты 102 обработки могут быть организованы и их диспетчеризация может осуществляться разнообразными другими способами, которые не привлекают использование контейнеров 208 агента обработки.

[0054] Фигура 3 является блок-схемой, иллюстрирующей аспекты одной иллюстративной подпрограммы 300 для доставки событий к виртуальным агентам 102 обработки. В некоторых реализациях, подпрограмма 300 выполняется посредством слоя 124 обработки потока среды выполнения системы 108 среды выполнения, описанной выше в отношении Фигуры 1. Тем не менее, следует иметь в виду, что подпрограмма 300 также может быть выполнена посредством других модулей и/или компонентов системы 108 среды выполнения или посредством модулей и/или компонентов других субъектов в системе 100 обработки потока, иллюстрируемой на Фигуре 1.

[0055] Следует иметь в виду, что логические операции, описываемые в данном документе в отношении Фигуры 3 и других фигур, реализуются (1) в качестве последовательности реализуемых компьютером действий или программных модулей, работающих в вычислительной системе и/или (2) в качестве взаимно-соединенных схем машинной логики или модулей схемы внутри вычислительной системы. Реализация является вопросом выбора, который зависит от производительности и других требований вычислительной системы. Соответственно, логические операции, описываемые в данном документе, упоминаются по-разному как состояния, операции, структурные устройства, действия, или модули. Эти состояния, операции, структурные устройства, действия и модули могут быть реализованы в программном обеспечении, во встроенном программном обеспечении, в цифровой логике особого назначения, и любом их сочетании. Также следует иметь в виду, что большее или меньшее число операций может быть выполнено, чем показанное на фигурах и описываемое в данном документе. Эти операции также могут быть выполнены в очередности отличной от тех, что описываются в данном документе. Также должно быть понятно, что каждый из иллюстрируемых способов может быть окончен в любое время и не требуется чтобы выполнялся полностью.

[0056] Некоторые или все операции способов, и/или по существу эквивалентные операции, могут быть выполнены посредством исполнения машиночитаемых инструкций, включенных в компьютерные запоминающие носители информации, как определено ниже. Понятие «машиночитаемые инструкции», и его вариации, используемые в описании и формуле изобретения, используется в данном документе расширительным образом, чтобы включать в себя подпрограммы, приложения, модули приложения, программные модули, программы, компоненты, структуры данных, алгоритмы, и подобное. Машиночитаемые инструкции могут быть реализованы в разнообразных конфигурациях системы, включая однопроцессорные или многопроцессорные системы, миникомпьютеры, компьютеры класса мэйнфрейм, персональные компьютеры, переносные вычислительные устройства, основанную на микропроцессоре, программируемую потребительскую электронику, их сочетание, и подобное.

[0057] Подпрограмма 300 начинается на операции 302, где слой 124 обработки потока системы 108 среды выполнения может принимать публикацию 110 события в соответствующем виртуальном потоке 204 публикации события. Как обсуждалось выше, виртуальный поток 204 публикации события может быть динамически создан на основании принятой публикации 110 события. Затем подпрограмма 300 переходит к операции 304, где слой 124 обработки потока среды выполнения отправляет событие 112, указанное в публикации 110 события к очереди 106 для публикации. Слой 124 обработки потока среды выполнения может дополнительно инструктировать очередь 106, чтобы оставить или сохранить событие 112 в очереди 106 с тем, чтобы событие 112 могло быть извлечено позже. В некоторых реализациях, событие 112 также может быть оставлено или сохранено в запоминающем устройстве, которое является доступным для очереди 106 и/или слоя 124 обработки потока среды выполнения.

[0058] От операции 304, подпрограмма 300 переходит к операции 306, где слой 124 обработки потока среды выполнения может извлекать событие 112 из очереди 106, и подпрограмма 300 в дальнейшем переходит к операции 308, где на основании события 112 могут быть идентифицированы агенты 102 обработки неявного подписчика. Как отмечено выше, агент 102 обработки неявного подписчика является виртуальным агентом 102 обработки, который не был явным образом подписан на событие 112, но может быть заинтересован в приеме информации, которая содержится в опубликованном событии 112. Агент 102 обработки неявного подписчика может быть идентифицирован посредством изучения конфигураций или установок виртуального агента 102 обработки, таких как действия, которые должны быть выполнены посредством виртуального агента 102 обработки, ввод и вывод виртуального агента 102 обработки, статус виртуального агента 102 обработки, и/или другие конфигурации виртуального агента 102 обработки. Например, виртуальный агент 102 обработки может быть идентифицирован в качестве агента 102 обработки неявного подписчика, если действия, которые должны быть выполнены посредством виртуального агента 102 обработки, вовлекают объект или субъект, который инициируется, упоминаются, или иным образом ассоциируются с опубликованным событием 112. Виртуальный агент 102 обработки также может быть идентифицирован в качестве агента 102 обработки неявного подписчика, если данные, включенные в опубликованное событие 112, потребляются или обрабатываются посредством виртуального агента 102 обработки.

[0059] В некоторых реализациях, слой 124 обработки потока среды выполнения может обеспечивать сопровождение неявной таблицы активации, которая отображает разные типы событий или соответствующие виртуальные потоки 206 подписки на событие в одном или более агентах 102 обработки неявного подписчика. Примерная неявная таблица активации показан на Фигуре 6 и будет описана позже. Неявная таблица активации может быть предварительно генерируемой и при необходимости по ней может осуществляться поиск посредством слоя 124 обработки потока среды выполнения. Неявная таблица активации также может быть реализована посредством функции или модуля, исполняющегося в слое 124 обработки потока среды выполнения, который может выводить один или более агентов 102 обработки неявного подписчика для заданного события или информации события. Следует отметить, что неявная таблица активации может быть реализована другими способами, следуя тем же самым принципам, что описаны выше.

[0060] От операции 308 подпрограмма 300 переходит к операции 310, где агенты 102 обработки неявного подписчика, идентифицированные на операции 308, могут быть проинформированы событием 112, например, посредством отправки события 112 или информации события у события 112 к агентам 102 обработки неявного подписчика. Как упомянуто выше, информация события может содержать информацию, которая содержится внутри или ассоциирована с событием 112. В зависимости от природы агентов 102 обработки неявного подписчика, информация события, отправленная к некоторым агентам 102 обработки неявного подписчика, может содержать часть или все данные, которые содержатся в событии 112. Применительно к другим агентам 102 обработки неявного подписчика, информация события может содержать только указание существования события 112. Как будет обсуждено подробно в отношении Фигуры 4, на основании принятого события 112 или информации события, агенты 102 обработки неявного подписчика могут принимать решение о том, подписаться ли на прием еще событий и/или выполнять ли дальнейшие операции.

[0061] От операции 310, подпрограмма 300 переходит к операции 312, где слой 124 обработки потока среды выполнения может принимать подписки 114 на событие от одного или более агентов 102 обработки неявного подписчика, чтобы подписаться на соответствующие виртуальные потоки 206 подписки на событие. Подпрограмма 300 затем переходит к операции 314, где слой 124 обработки потока среды выполнения может определять, включают ли в себя события, указанные в явных подписках 114 на событие, прошедшие события, которые уже произошли и были опубликованы в очереди 106. Если определяется, что явные подписки 114 на событие включают в себя прошедшие события, подпрограмма 300 переходит к операции 316, где слой 124 обработки потока среды выполнения может извлекать прошедшие события из очереди 106 и/или других запоминающих устройств, которые хранят прошедшие события, и доставлять извлеченные прошедшие события к соответствующим виртуальным агентам 102 обработки.

[0062] От операции 316, или если определяется на операции 314, что явные подписки 114 на событие не включают в себя прошедшие события, подпрограмма 300 переходит к операции 318, где слой 124 обработки потока среды выполнения может обновлять явные подписки, обеспечение сопровождения которых она осуществляет, и/или выполнять другие операции на основании принятых явных подписок 114 на событие, такие как обновление отображения событий в виртуальных потоках 204 публикации события, виртуальных потоках 204 подписки на событие, и очереди 106.

[0063] От операции 306, подпрограмма 300 также может переходить к операции 320. На операции 320, слой 124 обработки потока среды выполнения может идентифицировать один или более агентов 102 обработки явного подписчика на основании подписок 114 на событие ранее поданных посредством виртуальных агентов 102 обработки. Подпрограмма 300 может в дальнейшем переходить к операции 322, где событие 112 может быть доставлено к агентам 102 обработки явного подписчика. От операции 318 или операции 322, подпрограмма 300 переходит к операции 324, где может быть определено, требуется ли слою 124 обработки потока среды выполнения доставлять еще события. Если слою 124 обработки потока среды выполнения требуется доставлять еще события, подпрограмма 300 возвращается к операции 302, чтобы принимать еще публикации 110 события для обработки и доставки. В противном случае, подпрограмма 300 переходит к операции 326, где подпрограмма 300 заканчивается.

[0064] Следует иметь в виду, что в описанном выше процессе доставки события, при доставке события 112 агентам 102 обработки явного подписчика и/или при отправке события 112 или информации события агентам 102 обработки неявного подписчика, базовый слой 122 среды выполнения может сначала определять, были ли активированы соответствующие агенты 102 обработки. Если присутствуют какие-либо агенты 102 обработки, которые не были активированы, базовый слой 122 среды выполнения может активировать агенты 102 обработки, и затем доставлять событие 122 или информацию события активированным агентам 102 обработки.

[0065] В связи с этим, агент 102 обработки, такой как агент 102 обработки неявного подписчика, может быть активирован динамически, включая распределение ресурсов системы по прибытию первого события 112 в потоке 206, в отношении которого агент 102 обработки отвечает за обработку. Таким образом, не требуется, чтобы ресурсы системы, такие как память и CPU, распределялись агенту 102 обработки до того, как поступает первое событие 112. Подобным образом, когда агент 102 обработки становится незанятым в течение заданного периода времени, например, из-за того, что не принимаются события 112 для обработки из потоков 206, на которые агент 102 обработки подписан, агент 102 обработки может быть прозрачно деактивирован, чтобы потребовать обратно его ресурсы системы. Заданный период времени для деактивации агента 102 обработки может быть предварительно определен или динамически регулироваться в соответствии со статусом системы, таким как использование ресурсов системы.

[0066] Фигура 4 является блок-схемой, иллюстрирующей аспекты одной иллюстративной подпрограммы 400 для обработки события и подписки. В некоторых реализациях, подпрограмма 400 выполняется посредством виртуального агента 102 обработки, описанного выше в связи с Фигурами 1 и 2. Тем не менее, следует иметь в виду, что подпрограмма 400 также может быть выполнена посредством других субъектов в системе 100 обработки потока, иллюстрируемой на Фигуре 1.

[0067] Подпрограмма 400 начинается на операции 402, где агент 102 обработки неявного подписчика может принимать событие 112 или информацию события у события 112 от слоя 124 обработки потока среды выполнения, и в дальнейшем обрабатывает принятое событие 112 или информацию события. От операции 402, подпрограмма 400 в дальнейшем переходит к операции 404, где агент 102 обработки неявного подписчика может определять, требуется ли ему подписаться на еще события 112 на основании принятого события 112 или информации события. Если определяется, что агенту 102 обработки неявного подписчика требуется подписаться на еще события, подпрограмма переходит к операции 406, где агент 102 обработки неявного подписчика может идентифицировать один или более виртуальных потоков 206 подписки на событие, от которых агенты 102 обработки неявного подписчика заинтересованы в приеме событий. На операции 408, агент 102 обработки неявного подписчика может подписываться на идентифицированные виртуальные потоки 206 подписки на событие посредством подачи подписок 114 на событие слою 124 обработки потока среды выполнения. Посредством подачи подписок 114 на событие, агент 102 обработки неявного подписчика может превращаться в агента 102 обработки явного подписчика по отношению к поданным подпискам 114 на событие.

[0068] От операции 408, подпрограмма 400 переходит к операции 410, где агент 102 обработки явного подписчика может принимать события, на которые подписались, которые публикуются в очереди 106. Как обсуждалось выше, если подписка 114 на событие, подаваемая на операции 408, указывает прошедшие события, события, принимаемые на операции 410, могут включать в себя эти прошедшие события. Подпрограмма 400 затем переходит к операции 412, где принятые события могут быть обработаны. Подпрограмма 400 в дальнейшем переходит к операции 414, где может быть определено, требуется ли агенту 102 обработки явного подписчика еще события для обработки. Если определяется, что требуются еще события, подпрограмма 400 возвращается обратно к операции 410, где агент 102 обработки явного подписчика может принимать больше событий 112 для обработки. Если определяется на операции 414, что не требуются еще события, или если определяется на операции 404, что агенту 102 обработки неявного подписчика не требуется подписаться на еще события, подпрограмма 400 переходит к операции 416, где подпрограмма 400 заканчивается.

[0069] Фигуры 5A-5D иллюстрируют операции посредством примерных виртуальных агентов 102 обработки в ответ на события 112, опубликованные в очереди 106 в разные моменты времени, в соответствии с одним или более аспектами, представленными в данном документе. Как иллюстрируется на Фигуре 5A, слой 124 обработки потока системы 108 среды выполнения может обеспечивать сопровождение или иным образом генерировать неявную таблицу 506 активации, которая отображает разные типы событий 112 или их соответствующие виртуальные потоки 206 подписки на событие в агентах 102 обработки неявного подписчика. В соответствии с примерной неявной таблицей 506 активации, показанной на Фигуре 5A, агенты обработки карты, агенты обработки игры, агенты обработки рейтинга, и/или агенты обработки элитного игрока могут быть идентифицированы в качестве агентов 102 обработки неявного подписчика потока 504 игры. Сходным образом, для потока 520 игрока, потенциальные агенты 102 обработки неявного подписчика могут включать в себя агенты обработки игрока, агенты обработки игры, и/или агенты обработки элитного игрока. На основании неявной таблицы 506 активации, слой 124 обработки потока среды выполнения может идентифицировать и активировать один или более агентов 102 обработки неявного подписчика по мере того, как события 112 принимаются и публикуются в очереди 106.

[0070] В момент времени T0, событие 502 запуска игры публикуется в очереди 106, например, посредством виртуального потока 204 публикации события. Данные, которые содержатся в событии 502 запуска игры, включают в себя то, что игра X запущена на карте H с игроками A-F, присутствующими в настоящий момент в игре X. Слой 124 обработки потока среды выполнения может извлекать событие 502 запуска игры из очереди 106, и идентифицировать агенты 102 обработки неявного подписчика потока 504 игры, который соответствует событию 502 запуска игры. На основании неявной таблицы 506 активации, слой 124 обработки потока среды выполнения может определять, что агенты 102 обработки неявного подписчика потока 504 игры могут включать в себя агент 508 обработки карты для вычисления количества уничтожений противника на карте G, агент 510 обработки карты для вычисления количества уничтожений противника на карте H, и агент 512 обработки элитного игрока для вычисления количества уничтожений противника для элитных игроков C, M и S. Слой 124 обработки потока среды выполнения может затем генерировать информацию 514 события запуска игры на основании события 502 запуска игры и проталкивать ее в поток 504 игры для доставки идентифицированным агентам 508, 510 и 512 обработки неявного подписчика.

[0071] В момент времени T1, как показано на Фигуре 5B, информация 514 события запуска игры может быть доставлена к и обработана посредством агентов 508, 510 и 512 обработки неявного подписчика. В агенте 508 обработки, может быть определено, что карта H, ассоциированная с игрой X в информации 514 события запуска игры отличается от карты G, в которой заинтересован агент 508 обработки карты. В результате, агент 508 обработки может ничего не делать в отношении принятой информации 514 события запуска игры. Тем не менее в агенте 510 обработки карты может быть определено, что карта H, которая содержится в информации 514 события запуска игры, является той, в которой заинтересован агент 510 обработки карты, и, следовательно, агент 510 обработки карты затем может отправлять подписку 520, чтобы подписаться на поток 530 уничтожения противника игры X, чтобы принимать все события уничтожения противника в игре X.

[0072] Сходным образом, агент 512 обработки элитного игрока может определять, что игра X включает в себя одного из элитных игроков, которых он обрабатывает, и, следовательно, подавать подписку 524, чтобы подписаться на поток 532 уничтожения противника игрока C игры X, чтобы принимать все события уничтожения противника посредством игрока C в игре X. Следует отметить, что несмотря на то, что информация 504 события запуска игры доставляется к и обрабатывается в агентах 508, 510 и 512 обработки, могут существовать еще события, опубликованные в очереди 106, такие как событие 514 уничтожения противника посредством игрока C, событие 516 награждения, чтобы награждать игрока A, и событие 518 уничтожения противника посредством игрока F.

[0073] В момент времени T2, как показано на Фигуре 5C, слой 124 обработки потока среды выполнения может обрабатывать подписки на событие, поданные посредством агента 510 обработки карты и агента 512 обработки элитного игрока. Поскольку подписка 522 запрашивает все события уничтожения противника с момента начала игры X, слой 124 обработки потока среды выполнения может определять, что такая подписка включает в себя прошедшие события 514 и 518 уничтожения противника, которые опубликованы до того, как принята подписка 522. Подобным образом, слой 124 обработки потока среды выполнения также может определять, что подписка 524 включает в себя прошедшее событие 514 уничтожения противника. Соответственно, слой 124 обработки потока среды выполнения может извлекать события 514 и 518 уничтожения противника из очереди 106, отправлять события 514 и 518 уничтожения противника к агенту 510 обработки карты посредством потока 530 уничтожения противника игры X и отправлять событие 514 уничтожения противника агенту 512 обработки элитного игрока посредством потока 532 уничтожения противника игрока C игры X.

[0074] Как показано на Фигуре 5D, в момент времени T3, новое событие 528 уничтожения противника публикуется в очереди 106. Слой 124 обработки потока среды выполнения может извлекать событие 528 из очереди 106 и определять, что данное новое событие 528 уничтожения противника принадлежит к потоку 530 уничтожения противника игры X. Затем может быть осуществлено проталкивание события 528 уничтожения противника в поток 530 уничтожения противника игры X и оно может быть доставлено к агенту 510 обработки карты. Слой 124 обработки потока среды выполнения может продолжать обрабатывать и доставлять еще события по мере того, как они публикуются в очереди 106 сходным образом.

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

[0076] Фигура 6 показывает примерную компьютерную архитектуру для вычислительного устройства 600, выполненного с возможностью сохранения и исполнения компонентов, показанных на Фигуре 1. Компьютерная архитектура, показанная на Фигуре 6, иллюстрирует обычный серверный компьютер, рабочую станцию, настольный компьютер, лэптоп, планшет, интеллектуальный телефон с большим экраном, сетевой прибор, персональный цифровой помощник («PDA»), устройство для чтения электронных книг, цифровой сотовый телефон, или другое вычислительное устройство, и может быть использовано, чтобы исполнять любой из компонентов программного обеспечения, представленных в данном документе. Например, компьютерная архитектура, показанная на Фигуре 6, может быть использована, чтобы исполнять любой из компонентов программного обеспечения, описанных выше.

[0077] Вычислительное устройство 600 включает в себя основную плату 602, или «материнскую плату», которая является платой с печатной схемой, с которой множество компонентов или устройств могут быть соединены посредством системной шины или других электрических путей связи. В одном иллюстративном аспекте, один или более центральных блоков 604 обработки («CPU») работают совместно с набором 606 микросхем. CPU 604 могут быть стандартными программируемыми процессорами, которые выполняют арифметические и логические операции, необходимые для работы вычислительного устройства 600.

[0078] CPU 604 выполняют операции посредством перехода из одного дискретного, физического состояния в следующее посредством манипуляции переключающих элементов, которые дифференцируются между и меняют эти состояния. Переключающие элементы могут, главным образом, включать в себя электронные схемы, которые обеспечивают сопровождение одного из двух двоичных состояний, такие как триггеры, и электронные схемы, которые предоставляют состояние вывода на основании логического сочетания состояний одного или более других переключающих элементов, таких как логические вентили. Эти базовые переключающие элементы могут быть объединены, чтобы создавать более сложные логические схемы, включающие в себя регистры, сумматоры-вычитатели, арифметические логические блоки, блоки с плавающей точкой, и подобное.

[0079] Набор 606 микросхем предоставляет интерфейс между CPU 604 и оставшейся частью из компонентов и устройств на основной плате 602. Набор 606 микросхем может предоставлять интерфейс для RAM 608, используемой в качестве основной памяти в вычислительном устройстве 600. Набор 606 микросхем может дополнительно предоставлять интерфейс для машиночитаемого запоминающего носителя информации, такого как постоянная память 610 («ROM») или энергонезависимая RAM («NVRAM») для хранения базовых подпрограмм, которые помогают запуску вычислительного устройства 600 и переносу информации между разнообразными компонентами и устройствами. ROM 610 или NVRAM также может хранить другие компоненты программного обеспечения, необходимые для работы вычислительного устройства 600 в соответствии с аспектами, описываемыми в данном документе.

[0080] Вычислительное устройство 600 может работать в сетевой среде, используя логические соединения с удаленными вычислительными устройствами и компьютерными системами посредством сети, такой как локальная сеть 620. Набор 606 микросхем может включать в себя функциональную возможность для предоставления возможности сетевого соединения через контроллер 612 сетевого интерфейса (NIC), такой как адаптер гигабитного Ethernet. NIC 612 выполнен с возможностью соединения вычислительного устройства 600 с другими вычислительными устройствами через сеть 620. Следует иметь в виду, что несколько NIC 612 может присутствовать в вычислительном устройстве 600, соединяя компьютер с другими типами сетей и удаленных компьютерных систем. Локальная сеть 620 позволяет вычислительному устройству 600 осуществлять связь с удаленными услугами и серверами, такими как удаленный компьютер 650.

[0081] Вычислительное устройство 600 может быть соединено с устройством 616 массовой памяти, которое предоставляет энергонезависимое хранилище для вычислительного устройства. Устройство 616 массовой памяти может хранить системные программы, прикладные программы, другие программные модули, и данные, которые были описаны более подробно в данном документе. Устройство 616 массовой памяти может быть соединено с вычислительным устройством 600 посредством контроллера 614 хранилища, соединенным с набором 606 микросхем. Устройство 616 массовой памяти может состоять из одного или более физических блоков хранения. Контроллер 614 хранилища может взаимодействовать с физическими блоками хранения посредством интерфейса последовательно подключаемого SCSI («SAS»), интерфейса последовательной усовершенствованной технологии подключения («SATA»), интерфейса оптоволоконного канала («FC»), или другого типа интерфейса для физического соединения и переноса данных между компьютерами и физическими блоками хранения. Также следует иметь в виду, что устройство 616 массовой памяти, другие запоминающие носители информации и контроллер 614 хранилища могут включать в себя компоненты Мультимедийной Карты (MMC), компоненты eMMC, компоненты Secure Digital (SD), компоненты PCI Express, или подобные.

[0082] Вычислительное устройство 600 может хранить данные на устройстве 616 массовой памяти посредством преобразования физического состояния физических блоков хранения, чтобы отражать сохраненную информацию. Конкретное преобразование физического состояния может зависеть от разнообразных факторов, в разных реализациях данного описания. Примеры таких факторов могут включать в себя, но не ограничиваются, технологию, используемую, чтобы реализовывать физические блоки хранения, характеризуется ли устройство 616 массовой памяти как первичное или вторичное хранилище, и подобное.

[0083] Например, вычислительное устройство 600 может сохранять информацию в устройстве 616 массовой памяти посредством выдачи инструкций через контроллер 614 хранилища, чтобы изменять магнитные характеристики конкретного местоположения внутри блока накопителя на магнитном диске, отражающие или преломляющие характеристики конкретного местоположения в оптическом блоке хранения, или электрические характеристики конкретного конденсатора, транзистора, или другого дискретного компонента в твердотельном блоке хранения. Возможны другие преобразования физических носителей информации, не отступая от объема и сущности настоящего описания, при этом вышеприведенные примеры предоставлены только чтобы способствовать описанию. Вычислительное устройство 600 может в дальнейшем считывать информацию из устройства 616 массовой памяти посредством обнаружения физических состояний или характеристик одного или более конкретных местоположений внутри физических блоков хранения.

[0084] В дополнение к устройству 616 массовой памяти, описанному выше, вычислительное устройство 600 может иметь доступ к другим машиночитаемым запоминающим носителям информации, чтобы сохранять и извлекать информацию, такую как программные модули, структуры данных, или другие данные. Таким образом, несмотря на то, что система 108 среды выполнения и другие модули изображены в качестве данных и программного обеспечения хранящегося в устройстве 616 массовой памяти, следует иметь в виду, что система 108 среды выполнения и/или другие модули могут быть сохранены, по меньшей мере, частично в других машиночитаемых запоминающих носителях информации устройства 600. Несмотря на то, что описание машиночитаемых носителей информации, которое содержится в данном документе, относится к устройству массовой памяти, такому как твердотельный накопитель, жесткий диск или накопитель CD-ROM, специалистам в соответствующей области техники следует иметь в виду, что машиночитаемые носители информации могут быть любыми доступными компьютерными запоминающими носителями информации или средствами связи, доступ к которым может быть осуществлен посредством вычислительного устройства 600.

[0085] Средства связи включают в себя машиночитаемые инструкции, структуры данных, программные модули, или прочие данные в модулированном сигнале данных, таком как несущая волна или другой механизм транспорта, и включают в себя любые средства доставки. Понятие «модулированный сигнал данных» означает сигнал, одна или более характеристики которого изменены или установлены таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, средства связи включают в себя проводные средства, такие как проводная сеть или прямое проводное соединение, и беспроводные средства, такие как акустические, RF, инфракрасные и другие беспроводные средства. Сочетания любых из вышеприведенных также должны быть включены в объем машиночитаемых носителей информации.

[0086] В качестве примера, а не ограничения, машиночитаемые запоминающие носители информации могут включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители информации, реализованные любым способом или по любой технологии для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Например, компьютерные носители информации включают в себя, но не ограничиваются, RAM, ROM, EPROM, EEPROM, флэш-память или другую технологию твердотельной памяти, CD-ROM, цифровые универсальные диски («DVD»), HD-DVD, BLU-RAY, или другое оптическое хранилище, магнитные кассеты, магнитную ленту, магнитное дисковое хранилище или другие магнитные запоминающие устройства, или любой другой носитель информации, который может быть использован, чтобы сохранять требуемую информацию, и доступ к которому может быть осуществлен посредством вычислительного устройства 600. В целях формулы изобретения, фраза «Компьютерный запоминающий носитель информации», «машиночитаемый запоминающий носитель информации», и их вариации, не включают в себя волны или сигналы как таковые и/или средства связи.

[0087] Устройство 616 массовой памяти может хранить операционную систему 622, используемую чтобы управлять работой вычислительного устройства 600. В соответствии с одним аспектом, операционная система выполнена в виде операционной системы LINUX. В соответствии с другим аспектом, операционная система выполнена в виде операционной системы WINDOWS® от MICROSOFT Corporation. В соответствии с дополнительными аспектами, операционная система может быть выполнена в виде операционных систем UNIX, Android, Windows Phone или iOS. Следует иметь в виду, что другие операционные системы также могут быть использованы. Устройство 616 массовой памяти может хранить другие системные или прикладные программы и данные, используемые вычислительным устройством 600, такие как система 108 среды выполнения и/или любые другие компоненты программного обеспечения и данные, описанные выше. Устройство 616 массовой памяти также может хранить другие программы и данные, в частности не идентифицированные в данном документе.

[0088] В одном аспекте, устройство 616 массовой памяти или машиночитаемые запоминающие носители информации кодируются исполняемыми компьютером инструкциями, которые, когда загружаются в вычислительное устройство 600, преобразуют компьютер из вычислительной системы общего назначения в компьютер специального назначения, выполненный с возможностью реализации аспектов, описываемых в данном документе. Эти исполняемые компьютером инструкции преобразуют вычислительное устройство 600 посредством указания того, каким образом CPU 604 переходят между состояниями, как описано выше. В соответствии с одним аспектом, вычислительное устройство 600 имеет доступ к машиночитаемым запоминающим носителям информации, хранящим исполняемые компьютером инструкции, которые, когда исполняются посредством вычислительного устройства 600, выполняют разнообразные подпрограммы, описанные выше в отношении Фигур 3 и 4. Вычислительное устройство 600 также может включать в себя машиночитаемые запоминающие носители информации для выполнения любых из других реализуемых компьютером операций, описанных в данном документе.

[0089] Вычислительное устройство 600 также может включать в себя один или более контроллеров 617 ввода/вывода для приема и обработки ввода от устройства 619 ввода. Устройство 619 ввода может включать в себя некоторое количество устройств ввода, таких как клавиатуру, мышь, микрофон, головные телефоны, экран касания, электронный стилус, или любой другой тип устройства ввода. Сходным образом, контроллер 617 ввода/вывода может предоставлять вывод на дисплей, такой как компьютерный монитор, дисплей с плоским экраном, цифровой проектор, принтер, плоттер, или другой тип устройства вывода. Следует иметь в виду, что вычислительное устройство 600 может не включать в себя все компоненты, показанные на Фигуре 6, может включать в себя другие компоненты, которые явно не показаны на Фигуре 6, или может использовать архитектуру, полностью отличную от той, что показана на Фигуре 6.

[0090] Раскрытие, представляемое в данном документе, может быть рассмотрено с учетом следующих положений.

[0091] Положение 1: Реализуемый компьютером способ для доставки событий, при этом способ, содержащий этапы, на которых: принимают публикацию события; идентифицируют агент обработки для приема информации, ассоциированной с событием, на основании конфигураций агента обработки, при этом агент обработки явным образом не подписан на прием события; определяют, активирован ли агент обработки; в ответ на определение, что агент обработки не активирован, активируют агент обработки; доставляют информацию, ассоциированную с событием, агенту обработки; принимают подписку на одно или более события от агента обработки; и доставляют одно или более события агенту обработки.

[0092] Положение 2: Способ по положению 1, дополнительно содержащий этапы, на которых: определяют, указывает ли подписка одно или более прошедшие события, которые должны быть доставлены; и в ответ на определение, что подписка указывает одно или более прошедшие события, которые должны быть доставлены, доставляют одно или более прошедшие события агенту обработки.

[0093] Положение 3: Способ по положениям 1-2, в котором этап, на котором принимают публикацию события в очереди, содержит этапы, на которых: принимают запрос, чтобы опубликовать событие в очереди; активируют виртуальный поток, соответствующий событию; и публикуют событие в очереди посредством виртуального потока.

[0094] Положение 4: Способ по положениям 1-3, в котором подписка на одно или более события определяет виртуальный поток, и подписка является подпиской на виртуальный поток, соответствующий одному или более событиям.

[0095] Положение 5: Способ по положениям 1-4, в котором этап, на котором активируют агент обработки, содержит этап, на котором распределяют ресурсы системы агенту обработки, и при этом подписка на виртуальный поток активирует виртуальный поток и предписывает, чтобы ресурсы системы были распределены виртуальному потоку.

[0096] Положение 6: Способ по положениям 1-5, дополнительно содержащий этапы, на которых: деактивируют виртуальный поток, когда события не принимаются в виртуальном потоке в течение некоторого периода времени, посредством требования назад ресурсов системы, распределенных виртуальному потоку; и деактивируют агент обработки агент обработки становится незанятым в течение заданного периода времени, посредством требования обратно ресурсов системы, распределенных агенту обработки.

[0097] Положение 7: Способ по положениям 1-6, в котором конфигурация агента обработки получается программным путем или определяется из декларативного определения агента обработки.

[0098] Положение 8: Способ по положениям 1-7, в котором агент обработки является адресуемым для доставки события независимо от того, является ли агент обработки активированным или не активированным.

[0099] Положение 9: Машиночитаемый запоминающий носитель информации с хранящимися на нем исполняемыми компьютером инструкциями, которые, когда исполняются посредством компьютера, предписывают компьютеру: определить агент обработки для приема события, которое публикуется в очереди и на которое агент обработки явным образом не подписан, при этом событие публикуется в очереди посредством первого виртуального потока, соответствующего событию; определять, активирован ли агент обработки; в ответ на определение, что агент обработки не активирован, активировать агент обработки; предписать, чтобы информация события у события была доставлена к агенту обработки; обработать явную подписку на второй виртуальный поток, определяемый посредством явной подписки, при этом явная подписка подается агентом обработки в ответ на информацию события, доставленную к агенту обработки; и предписать, чтобы события во втором виртуальном потоке была доставлена агенту обработки.

[0100] Положение 10: Машиночитаемый запоминающий носитель информации по положению 9, в котором события, опубликованные в очереди, оставляются.

[0101] Положение 11: Машиночитаемый запоминающий носитель информации по положениям 9-10, содержащий дополнительные исполняемые компьютером инструкции, которые, когда исполняются посредством компьютера, предписывают компьютеру: определить, включает ли в себя второй виртуальный поток прошедшие события, опубликованные в очереди; и в ответ на определение, что второй виртуальный поток включает в себя прошедшие события, опубликованные в очереди, предписать, чтобы прошедшие события были опубликованы во втором виртуальном потоке и доставлены агенту обработки.

[0102] Положение 12: Машиночитаемый запоминающий носитель информации по положениям 9-11, содержащий дополнительные исполняемые компьютером инструкции, которые, когда исполняются посредством компьютера, предписывают компьютеру: деактивировать второй виртуальный поток, когда события не принимаются во втором виртуальном потоке в течение некоторого периода времени, посредством требования обратно ресурсов системы, распределенных виртуальному потоку; и деактивировать агент обработки, когда агент обработки становится незанятым в течение заданного периода времени, посредством требования обратно ресурсов системы, распределенных агенту обработки.

[0103] Положение 13: Машиночитаемый запоминающий носитель информации по положениям 9-12, в котором активация агента обработки содержит распределение ресурсов системы агенту обработки, и при этом подписка на второй виртуальный поток активирует второй виртуальный поток и предписывает, чтобы ресурсы системы были распределены второму виртуальному потоку.

[0104] Положение 14: Машиночитаемый запоминающий носитель информации по положениям 9-13, в котором агент обработки является адресуемым для доставки события независимо от того, является ли агент обработки активированным или не активированным.

[0105] Положение 15: Машиночитаемый запоминающий носитель информации по положениям 9-14, в котором агент обработки получается программным путем или определяется на основании декларативного определения агента обработки.

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

[0107] Положение 17: Система по положению 16, в которой активация агента обработки содержит распределение ресурсов системы агенту обработки, и при этом подписка на второй виртуальный поток активирует второй виртуальный поток и предписывает, чтобы ресурсы системы были распределены второму виртуальному потоку.

[0108] Положение 18: Система по положениям 16-17, дополнительно содержащая множество серверов, исполняющих один или более агентов обработки, при этом среда выполнения дополнительно выполнена с возможностью восстановления агента обработки после сбоя одного сервера, на котором был активирован агент обработки, посредством повторной активации агента обработки на другом сервере.

[0109] Положение 19: Система по положениям 16-18, в которой конфигурация агента обработки получается программным путем или определяется из декларативного определения агента обработки.

[0110] Положение 20: Система по положениям 16-19, в которой среда выполнения дополнительно выполнена с возможностью: деактивации второго виртуального потока, когда события не принимаются во втором виртуальном потоке в течение некоторого периода времени, посредством требования назад ресурсов системы, распределенных виртуальному потоку; и деактивации агента обработки, когда агент обработки становится незанятым в течение заданного периода времени, посредством требования обратно ресурсов системы, распределенных агенту обработки.

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

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

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

принимают (302) публикацию события;

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

определяют, активирован ли агент обработки;

в ответ на определение, что агент обработки не активирован, активируют агент обработки;

доставляют информацию, ассоциированную с событием, агенту обработки;

принимают (312) подписку на одно или более событий от агента обработки; и

доставляют (316, 322) одно или более событий агенту обработки,

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

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

2. Способ по п. 1, дополнительно содержащий этапы, на которых:

определяют (314), указывает ли подписка одно или более прошедших событий, которые должны быть доставлены; и

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

3. Способ по п. 1, в котором этап, на котором принимают публикацию события, содержит этапы, на которых:

принимают запрос (110), чтобы опубликовать событие в очереди (106);

активируют виртуальный поток (204), соответствующий событию; и

публикуют событие в очереди (106) посредством виртуального потока (204).

4. Способ по п. 1, в котором подписка (114) на одно или более событий (112) определяет виртуальный поток (206), и подписка (114) является подпиской на виртуальный поток (206), соответствующий одному или более событий (112).

5. Способ по п. 4, в котором этап, на котором активируют агент обработки, содержит этап, на котором распределяют ресурсы системы агенту обработки, и при этом подписка (114) на виртуальный поток (206) активирует виртуальный поток (206) и предписывает, чтобы ресурсы системы были распределены виртуальному потоку (206).

6. Способ по п. 5, дополнительно содержащий этапы, на которых:

деактивируют виртуальный поток (206), когда события не принимаются в виртуальном потоке в течение некоторого периода времени, посредством требования назад ресурсов системы, распределенных виртуальному потоку (206); и

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

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

диспетчеризации очереди (106) для приема и оставления публикаций событий;

приема (302) публикации события в первом виртуальном потоке (204) и переадресации публикации события в очередь (106);

идентификации (308) агента обработки для доставки информации события для события на основании, по меньшей мере, частично установок или конфигураций агента обработки, которые содержат одно или более из действий, которые должны быть выполнены агентом обработки, ввода агента обработки, вывода агента обработки, или статуса агента обработки, при этом агент обработки явным образом не подписан на прием события и является адресуемым для доставки информации события независимо от того, является ли агент обработки активированным или не активированным;

определения, активирован ли агент обработки;

в ответ на определение, что агент обработки не активирован, активации агента обработки;

доставки информации события агенту обработки;

приема (312) явной подписки на события во втором виртуальном потоке (206) от агента обработки после того, как информация события доставляется агенту обработки;

определения (314), указывает ли явная подписка прошедшие события, опубликованные в очереди до того, как принимается явная подписка;

в ответ на определение (314), что явная подписка указывает прошедшие события, извлечения прошедшего события из прошедших событий, опубликованных в очереди, и проталкивания прошедших событий во вторые виртуальные потоки (206), и

доставки (316, 322) событий во втором виртуальном потоке (206) агенту обработки,

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

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

8. Система по п. 7, в которой активация агента обработки содержит распределение ресурсов системы агенту обработки, и при этом подписка на второй виртуальный поток (206) активирует второй виртуальный поток (206) и предписывает, чтобы ресурсы системы были распределены второму виртуальному потоку (206).

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

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



 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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