СПОСОБ И СИСТЕМА ДЛЯ ПЕРЕДАЧИ СООБЩЕНИЯ
METHOD AND THE SYSTEM FOR MESSAGE TRANSMISSION

Область техники, к которой относится изобретение
Данная технология относится к распределенной обработке данных и, в частности, к способу и системе для передачи сообщения. Уровень техники
Требования к запоминающим устройствам для хранения цифровых данных постоянно повышаются, поскольку большие объемы цифровых данных создаются ежедневно. Например, хранения могут требовать различные виды пользовательских данных, данных организаций и/или данных приложений. Это повышает требования к емкости хранилищ данных. Растущие потребности пользователей и/или организаций способны удовлетворить «облачные» системы удаленного хранения данных.
В общем случае «облачное» хранилище данных представляет собой вид компьютерного запоминающего устройства, в котором цифровые данные хранятся в логических пулах. Физическая память, в которой фактически хранятся цифровые данные, распределена между несколькими серверами, возможно, расположенными в различных местах (т.е. в различных центрах обработки данных), и обычно управляется компанией, предоставляющей услуги «облачного» хранения данных. Пользователи и/или организации обычно покупают или арендуют некоторый объем памяти у поставщиков услуг «облачного» хранения данных, чтобы хранить свои цифровые данные. Со своей стороны, поставщики услуг «облачного» хранения данных отвечают за доступность цифровых данных и защиту физической памяти с целью предотвращения утраты данных.
Раскрытие изобретения
Разработчики данной технологии обнаружили определенные технические недостатки, связанные с известными решениями для передачи сообщений. В частности, недостатки традиционных систем акторов касаются доставки сообщений и оперативности ответных действий в случае недоставки сообщений.
Следует отметить, что отправляющий актор традиционной системы акторов после отправки сообщения принимающему актору ожидает уведомления о приеме от принимающего актора. Если актор не получает это уведомление в течение заранее заданного интервала времени ожидания, сообщение может считаться недоставленным. Отправляющий актор может не получить уведомление в течение заранее заданного интервала времени ожидания по различным причинам.
В одном примере почтовый ящик принимающего актора может быть заполнен (или почти заполнен) так, что заранее заданный интервал времени ожидания истечет до того, как принимающий актор обработает сообщение. В другом примере принимающий актор может быть неисправен или не способен реагировать по другой причине. В результате отправляющий актор не получает уведомление, поскольку сообщение не было успешно принято принимающим актором. В еще одном примере, если предполагается, что принимающий актор представляет собой удаленный или внешний актор (например, часть системы акторов, отличной от системы акторов, к которой относится отправляющий актор), линия связи между соответствующими системами акторов отправляющего актора и принимающего актора может находиться в неработоспособном состоянии. В этом примере сообщение не может быть успешно отправлено принимающему актору, который по этой причине не может выдать уведомление.
Независимо от конкретной причины, по которой не получено это уведомление, отправляющий актор традиционной системы акторов способен ожидать, пока не истечет заранее заданный интервал времени ожидания, перед инициированием корректирующего действия в отношении сообщения. Это ожидание отправляющего актора нежелательно, поскольку оно вносит задержку в распределенную обработку данных традиционной системой акторов.
Разработчики данной технологии изобрели способы и системы, в которых акторы способны инициировать корректирующие действия в отношении сообщений без ожидания истечения заранее заданного интервал времени ожидания. Иными словами, способы и системы согласно данной технологии позволяют без ожидания истечения заранее заданного интервала времени ожидания определить, что (а) сообщение не было успешно принято целевым или принимающим актором (например, вследствие того, что целевой или принимающий актор неисправен или не способен реагировать) и/или (б) линия связи между отправляющим актором и целевым или принимающим актором неработоспособна.
В некоторых не имеющих ограничительного характера вариантах осуществления данной технологии предполагается, что акторы способны формировать сообщения особым образом так, чтобы системы акторов и/или акторы в системах акторов могли отслеживать доставку сообщений и сеансы связи, установленные между акторами. В результате этого системы акторов и/или акторы в системах акторов могут определять проблемы с доставкой сообщений и сеансами связи без ожидания отправляющим сообщение актором истечения заранее заданного времени ожидания перед инициированием выполнения корректирующих действий.
В соответствии с первым аспектом данной технологии реализован способ передачи сообщения. Сообщение должно передаваться от первого актора ко второму актору. Первый актор размещен в системе акторов. Система акторов реализована в распределенной компьютерной системе. Способ включает в себя формирование сообщения первым актором системы акторов. Сообщение включает в себя полезные данные, указывающие на информацию, которую первый актор должен предоставить второму актору, и первый триггер для инициирования проверки успешности приема сообщения вторым актором. Способ включает в себя отправку первым актором системы акторов сообщения второму актору. Способ включает в себя оповещение системой акторов первого актора о том, что сообщение не принято вторым актором, если в ответ на первый триггер система акторов определила, что второму актору не удалось успешно принять сообщение.
В некоторых вариантах осуществления способа система акторов представляет собой первую систему акторов, распределенная компьютерная система содержит вторую систему акторов, а способ дополнительно включает в себя определение системой акторов того, является сообщение локальным сообщением или внешним сообщением. Локальное сообщение должно передаваться между первым актором и вторым актором, представляющим собой часть первой системы акторов. Внешнее сообщение должно передаваться между первым актором и вторым актором, представляющим собой часть второй системы акторов.
В некоторых вариантах осуществления способа соответствующие первая система акторов и вторая система акторов выполняются в соответствующих различных компьютерных устройствах распределенной компьютерной системы.
В некоторых вариантах осуществления способа первый актор и второй актор представляют собой соответствующие конечные автоматы (SM, State Machine).
В некоторых вариантах осуществления способа сообщение представляет собой внешнее сообщение. Такое сообщение дополнительно содержит второй триггер для инициирования проверки работоспособности линии связи между первым актором и вторым актором. Первая система акторов содержит первый шлюзовой актор. Вторая система акторов содержит второй шлюзовой актор. Первый шлюзовой актор и второй шлюзовой актор способны передавать сообщения между первой системой акторов и второй системой акторов. Первый актор оповещается о том, что сообщение не принято вторым актором, если выполняется по меньшей мере одно из следующих условий: (а) в ответ на первый триггер определено, что второму актору не удалось успешно принять сообщение, и (б) в ответ на второй триггер определено, что линия связи неработоспособна.
В некоторых вариантах осуществления способа первый актор, второй актор, первый шлюзовой актор и второй шлюзовой актор реализованы в виде автоматов SM.
В некоторых вариантах осуществления способа первый актор и второй актор реализованы в виде автоматов SM первого типа, а первый шлюзовой актор и второй шлюзовой актор реализованы в виде автоматов SM второго типа. Автоматам SM первого типа недоступны протоколы связи, реализованные между первой системой акторов и второй системой акторов. Автоматам SM второго типа доступны протоколы связи, реализованные между первой системой акторов и второй системой акторов.
В некоторых вариантах осуществления способа отправка сообщения включает в себя отправку сообщения первым актором первому шлюзовому актору, отправку сообщения первым шлюзовым актором второму шлюзовому актору и отправку сообщения вторым шлюзовым актором второму актору.
В некоторых вариантах осуществления способа определение того, что линия связи неработоспособна, включает в себя определение первым шлюзовым актором неработоспособности линии связи между первым шлюзовым актором и вторым шлюзовым актором.
В некоторых вариантах осуществления способа определение того, что линия связи между первым шлюзовым актором и вторым шлюзовым актором неработоспособна, выполняется с использованием механизма эхо-тестирования (pinging-type mechanism) и/или другого механизма протокола TCP/IP (TCP/IP-type mechanism).
В некоторых вариантах осуществления способа определение того, что второй актор не принял сообщение, включает в себя определение вторым шлюзовым актором того, что второй актор не принял сообщение.
В некоторых вариантах осуществления способа сообщение представляет собой внутреннее сообщение, а отправка сообщения включает в себя отправку сообщения первым актором непосредственно второму актору.
В некоторых вариантах осуществления способа оповещение выполняется после отправки сообщения первым актором непосредственно второму актору.
В некоторых вариантах осуществления способа система акторов реализована в виде автомата SM.
В некоторых вариантах осуществления способа в результате оповещения системой акторов первого актора о том, что сообщение не принято вторым актором, первый актор выполняет корректирующее действие в отношении этого сообщения.
В некоторых вариантах осуществления способа корректирующее действие выполняется без ожидания истечения периода времени ожидания.
В некоторых вариантах осуществления способа корректирующее действие выполняется без необходимости поддержания первым актором процесса периода времени ожидания.
В некоторых вариантах осуществления способа в результате оповещения первого актора о том, что сообщение не принято вторым актором, первый актор выполняет корректирующее действие в отношении этого сообщения.
В некоторых вариантах осуществления способа корректирующее действие выполняется без ожидания истечения периода времени ожидания.
В некоторых вариантах осуществления способа корректирующее действие выполняется без необходимости поддержания первым актором процесса периода времени ожидания.
Согласно второму аспекту данной технологии реализована распределенная компьютерная система, реализующая систему акторов. Система акторов содержит первый актор. Сообщение должно передаваться первым актором второму актору. Первый актор способен формировать сообщение. Сообщение включает в себя полезные данные, указывающие на информацию, которую первый актор должен предоставить второму актору, и первый триггер для инициирования проверки успешности приема сообщения вторым актором. Первый актор способен отправлять сообщение второму актору. Система акторов способна оповещать первый актор о том, что сообщение не принято вторым актором, если в ответ на первый триггер система акторов определила, что второму актору не удалось успешно принять сообщение.
В некоторых вариантах осуществления распределенной компьютерной системы система акторов представляет собой первую систему акторов, при этом распределенная компьютерная система содержит вторую систему акторов, а первая система акторов дополнительно способна определять, является сообщение локальным сообщением или внешним сообщением. Локальное сообщение должно передаваться между первым актором и вторым актором, представляющим собой часть первой системы акторов. Внешнее сообщение должно передаваться между первым актором и вторым актором, представляющим собой часть второй системы акторов.
В некоторых вариантах осуществления распределенной компьютерной системы соответствующие первая система акторов и вторая система акторов выполняются в соответствующих различных компьютерных устройствах распределенной компьютерной системы.
В некоторых вариантах осуществления распределенной компьютерной системы первый актор и второй актор представляют собой соответствующие автоматы SM.
В некоторых вариантах осуществления распределенной компьютерной системы сообщение представляет собой внешнее сообщение. Такое сообщение дополнительно содержит второй триггер для инициирования проверки работоспособности линии связи между первым актором и вторым актором. Первая система акторов содержит первый шлюзовой актор. Вторая система акторов содержит второй шлюзовой актор. Первый шлюзовой актор и второй шлюзовой актор способны передавать сообщения между первой системой акторов и второй системой акторов. Система акторов способна оповещать первый актор о том, что сообщение не принято вторым актором, если выполняется по меньшей мере одно из следующих условий: (а) в ответ на первый триггер определено, что второму актору не удалось успешно принять сообщение, и (б) в ответ на второй триггер определено, что линия связи неработоспособна.
В некоторых вариантах осуществления распределенной компьютерной системы первый актор, второй актор, первый шлюзовой актор и второй шлюзовой актор реализованы в виде автоматов SM.
В некоторых вариантах осуществления распределенной компьютерной системы первый актор и второй актор реализованы в виде автоматов SM первого типа, а первый шлюзовой актор и второй шлюзовой актор реализованы в виде автоматов SM второго типа. Автоматам SM первого типа недоступны протоколы связи, реализованные между первой системой акторов и второй системой акторов. Автоматам SM второго типа доступны протоколы связи, реализованные между первой системой акторов и второй системой акторов.
В некоторых вариантах осуществления распределенной компьютерной системы способность первого актора отправлять сообщение включает в себя способность первого актора отправлять сообщение первому шлюзовому актору, который способен отправлять сообщение второму шлюзовому актору, который способен отправлять сообщение второму актору.
В некоторых вариантах осуществления распределенной компьютерной системы первый шлюзовой актор способен определять, что линия связи между первым шлюзовым актором и вторым шлюзовым актором неработоспособна.
В некоторых вариантах осуществления распределенной компьютерной системы определение того, что линия связи между первым шлюзовым актором и вторым шлюзовым актором неработоспособна, выполняется с использованием механизма эхо-тестирования и/или другого механизма протокола TCP/IP.
В некоторых вариантах осуществления распределенной компьютерной системы второй шлюзовой актор способен определить, что второй актор не принял сообщение.
В некоторых вариантах осуществления распределенной компьютерной системы сообщение представляет собой внутреннее сообщение. Первый актор способен отправлять такое сообщение непосредственно второму актору.
В некоторых вариантах осуществления распределенной компьютерной системы система акторов способна выполнять оповещение в ответ на действие первого актора, способного отправлять сообщение непосредственно второму актору.
В некоторых вариантах осуществления распределенной компьютерной системы система акторов реализована в виде автомата SM.
В некоторых вариантах осуществления распределенной компьютерной системы система акторов способна оповещать первый актор о том, что сообщение не принято вторым актором, в результате чего первый актор выполняет корректирующее действие в отношении этого сообщения.
В некоторых вариантах осуществления распределенной компьютерной системы корректирующее действие выполняется без ожидания истечения периода времени ожидания.
В некоторых вариантах осуществления распределенной компьютерной системы корректирующее действие выполняется без необходимости поддержания первым актором процесса периода времени ожидания.
В некоторых вариантах осуществления распределенной компьютерной системы в результате оповещения первого актора о том, что сообщение не принято вторым актором, первый актор выполняет корректирующее действие в отношении этого сообщения.
В некоторых вариантах осуществления распределенной компьютерной системы корректирующее действие выполняется без ожидания истечения периода времени ожидания.
В некоторых вариантах осуществления распределенной компьютерной системы корректирующее действие выполняется без необходимости поддержания первым актором процесса периода времени ожидания.
В контексте настоящего описания термин «сервер» означает компьютерную программу, выполняемую соответствующими аппаратными средствами и способную принимать запросы (например, от клиентских устройств) через сеть и выполнять эти запросы или инициировать их выполнение. Аппаратные средства могут представлять собой один физический компьютер или одну компьютерную систему и это не существенно для данной технологии. В настоящем контексте выражение «сервер» не означает, что каждая задача (например, принятая команда или запрос) или некоторая определенная задача принимается, выполняется или запускается одним и тем же сервером (т.е. одними и теми же программными и/или аппаратными средствами). Это выражение означает, что любое количество программных средств или аппаратных средств может принимать, отправлять, выполнять или запускать выполнение любой задачи или запроса либо результатов любых задач или запросов. Все эти программные и аппаратные средства могут представлять собой один сервер или несколько серверов, при этом оба эти случая подразумеваются в выражении «по меньшей мере один сервер».
В контексте настоящего описания термин «клиентское устройство» означает любое компьютерное аппаратное средство, способное выполнять программы, подходящие для решения некоторой задачи. Таким образом, некоторые (не имеющие ограничительного характера) примеры клиентских устройств включают в себя персональные компьютеры (настольные, ноутбуки, нетбуки и т.п.), смартфоны и планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы. Следует отметить, что в данном контексте устройство, функционирующее как клиентское устройство, также может функционировать как сервер для других клиентских устройств. Использование выражения «клиентское устройство» не исключает использования нескольких клиентских устройств для приема, отправки, выполнения или инициирования выполнения любой задачи или запроса, либо результатов любых задач или запросов, либо шагов любого описанного здесь способа.
В контексте настоящего описания выражение «информация» включает в себя информацию любого рода или вида, допускающую хранение в базе данных. Таким образом, информация включает в себя аудиовизуальные произведения (изображения, фильмы, звукозаписи, презентации и т.д.), данные (данные о местоположении, числовые данные и т.д.), текст (мнения, комментарии, вопросы, сообщения и т.д.), документы, электронные таблицы, списки слов и т.д., но не ограничивается ими.
В контексте настоящего описания выражение «компонент» включает в себя программное обеспечение (подходящее для определенных аппаратных средств), необходимое и достаточное для выполнения соответствующей определенной функции (или нескольких функций).
В контексте настоящего описания выражение «пригодный для использования в компьютере носитель информации» означает носители любого типа и вида, включая ОЗУ, ПЗУ, диски (CD-ROM, DVD, гибкие диски, жесткие диски и т.д.), USB-накопители, твердотельные накопители, накопители на магнитных лентах и т.д.
В контексте настоящего описания числительные «первый» «второй», «третий» и т.д. используются лишь для указания различия между существительными, к которым они относятся, но не для описания каких-либо определенных взаимосвязей между этими существительными. Например, должно быть понятно, что использование терминов «первый сервер» и «третий сервер» не подразумевает какого-либо определенного порядка, вида, хронологии, иерархии или классификации, в данном случае, серверов, и что их использование (само по себе) не подразумевает обязательного наличия «второго сервера» в любой ситуации. Кроме того, как встречается в настоящем описании в другом контексте, ссылка на «первый» элемент и «второй» элемент не исключает того, что эти два элемента могут быть одним и тем же реальным элементом. Таким образом, например, в некоторых случаях «первый» сервер и «второй» сервер могут представлять собой одно и то же программное и/или аппаратное средство, а в других случаях - различные программные и/или аппаратные средства.
Каждый вариант осуществления данной технологии имеет отношение к по меньшей мере одной из вышеупомянутых целей и/или к одному из вышеупомянутых аспектов, но не обязательно ко всем ним. Должно быть понятно, что некоторые аспекты данной технологии, связанные с попыткой достижения вышеупомянутой цели, могут не соответствовать этой цели и/или могут соответствовать другим целям, явным образом здесь не упомянутым.
Дополнительные и/или альтернативные признаки, аспекты и преимущества вариантов осуществления данной технологии содержатся в дальнейшем описании, в приложенных чертежах и в формуле изобретения.
Краткое описание чертежей
Дальнейшее описание приведено для лучшего понимания данной технологии, а также других аспектов и их признаков, и должно использоваться совместно с приложенными чертежами.
На фиг. 1 представлена схема системы, пригодной для реализации вариантов осуществления данной технологии, не имеющих ограничительного характера.
На фиг. 2 представлено соответствующее некоторым вариантам осуществления данной технологии устройство для хранения данных подсистемы распределенного хранения данных, представленной на фиг. 1.
На фиг. 3 представлена традиционная система акторов, реализованная в соответствии с некоторыми известными технологиями.
На фиг. 4 представлен вариант осуществления системы акторов, реализованной в изображенной на фиг. 1 системе в соответствии с некоторыми вариантами осуществления данной технологии.
На фиг. 5 представлены другие варианты осуществления систем акторов, реализованных в изображенной на фиг. 1 системе в соответствии с некоторыми вариантами осуществления данной технологии.
На фиг. 6 представлена блок-схема способа передачи сообщения, реализованного согласно вариантам осуществления данной технологии, не имеющим ограничительного характера.
Осуществление изобретения
Дальнейшее подробное описание представляет собой лишь описание примеров, иллюстрирующих данную технологию. Это описание не предназначено для определения объема или границ данной технологии.
На фиг. 1 представлена распределенная система 100 компьютерной обработки информации или сокращенно распределенная система 100 обработки информации. Распределенная система 100 обработки информации позволяет реализовать не имеющие ограничительного характера варианты осуществления данной технологии. Очевидно, что распределенная система 100 обработки информации приведена лишь в качестве иллюстративного варианта осуществления данной технологии. Таким образом, дальнейшее описание системы представляет собой описание примеров, иллюстрирующих данную технологию. Это описание не предназначено для определения объема или границ данной технологии.
В некоторых случаях также приводятся полезные примеры модификаций распределенной системы 100 обработки информации. Они способствуют пониманию, но также не определяют объема или границ данной технологии. Эти модификации не составляют исчерпывающего списка. Специалисту в данной области должно быть понятно, что возможны и другие модификации. Кроме того, если в некоторых случаях примеры модификаций не описаны, это не означает, что модификации невозможны и/или что описание содержит единственный вариант осуществления определенного элемента данной технологии. Специалисту в данной области должно быть понятно, что это не так. Кроме того, следует понимать, что распределенная система 100 обработки информации в некоторых случаях может представлять собой упрощенную реализацию данной технологии, и что такие варианты представлены, чтобы способствовать лучшему ее пониманию. Специалисту в данной области должно быть понятно, что различные варианты осуществления данной технологии могут быть значительно сложнее.
Распределенная система 100 обработки информации содержит источник 102 запросов, сеть 103 связи, подсистему 104 предварительной обработки запросов, подсистему 105 обработки транзакций, подсистему 106 маршрутизации транзакций, подсистему 108 распределенного хранения данных, подсистему 110 базы данных и операционную подсистему 111.
Далее описана реализация указанных выше компонентов распределенной системы 100 обработки информации в соответствии с различными не имеющими ограничительного характера вариантами осуществления данной технологии.
Источник запросов
Источник 102 запросов может представлять собой электронное устройство, связанное с конечным пользователем (например, клиентское устройство), или любую другую подсистему распределенной системы 100 обработки информации, способную обеспечивать пользовательские запросы к распределенной системе 100 обработки информации. Несмотря на то, что на фиг. 1 показан лишь один источник 102 запросов, распределенная система 100 обработки информации может содержать несколько источников 102 запросов. Как показано в данном документе, источник 102 запросов входит в состав распределенной системы 100 обработки информации. Тем не менее, в некоторых вариантах осуществления данной технологии источник 102 запросов может быть внешним по отношению к распределенной системе 100 обработки информации и может подключаться с использованием линии связи (не обозначена).
На практике типовой вариант осуществления распределенной системы 100 обработки информации может включать в себя большое количество источников 102 запросов (сотни, тысячи, миллионы и т.д.).
В некоторых вариантах осуществления данной технологии, когда распределенная система 100 обработки информации используется в среде бизнес-потребитель (В2С, Business-to-Customer), источник 102 запросов может представлять собой клиентское устройство, такое как смартфон, связанное с пользователем распределенной системы 100 обработки информации. Например, распределенная система 100 обработки информации может обеспечивать услуги «облачного» хранения данных для клиентского устройства определенного пользователя.
В некоторых вариантах осуществления данной технологии, когда распределенная система 100 обработки информации используется в среде бизнес-бизнес (В2В, Business-to-Business), источник 102 запросов может представлять собой подсистему, такую как удаленный сервер, обеспечивающую пользовательские запросы к распределенной системе 100 обработки информации. Например, в некоторых вариантах осуществления данной технологии распределенная система 100 обработки информации может обеспечивать услуги отказоустойчивой обработки и/или хранения данных для оператора такой подсистемы.
В целом, независимо от реализации распределенной системы 100 обработки информации в виде системы В2С или В2В (или любого другого варианта системы), источник 102 запросов может представлять собой клиентское устройство или другую подсистему, которые могут быть внутренними или внешними по отношению к распределенной системе 100 обработки информации.
Как указано выше, источник 102 запросов способен выдавать множество запросов 180, каждый из которых далее называется запросом 180. Характер запроса 180 зависит от вида источника 102 запросов. В частности, один из примеров запроса 180 представляет собой запрос, сформированный на языке структурированных запросов (SQL, Structured Query Language). Поэтому предполагается, что в некоторых вариантах осуществления данной технологии запрос 180 может быть сформирован на языке декларативного программирования, т.е. запрос 180 может представлять собой запрос декларативного вида.
В общем случае декларативное программирование относится к реализации структуры и элементов компьютерных программ, отражая логику вычислений без описания потока управления. Распространенные языки декларативного программирования включают в себя SQL, XQuery и другие языки запросов к базам данных. В целом, запрос декларативного вида определяет действие в выражениях «что требуется выполнить», а не «как это требуется выполнить».
Это означает, что запрос декларативного вида может быть связан с условием выполнения определенного действия. В качестве условия, например, может быть указано, в каком элементе должно выполняться это действие или где следует получать значения для выполнения этого действия.
В качестве не имеющих ограничительного характера примеров можно привести следующие запросы декларативного вида: «Вставить значение 5 в ячейку, связанную с ключом, который равен значению ячейки, связанной с ключом А» и «Для всех ключей, связанных с ячейкой, имеющей значение 5, заменить это значение на значение 10». Тем не менее, должно быть понятно, что представленные выше примеры декларативных языков и примеры запросов декларативного вида приведены исключительно для лучшего понимания, и что другие декларативные языки и другие запросы декларативного вида могут использоваться источником 102 запросов в пределах объема данной технологии.
В некоторых вариантах осуществления данной технологии источник 102 запросов также способен принимать множество ответов 181, каждый из которых далее называется ответом 181. В общем случае, в ответ на запрос 180, обработанный или не обработанный распределенной системой 100 обработки информации, распределенная система 100 обработки информации может формировать ответ 181, предназначенный для источника 102 запросов, связанного с соответствующим запросом 180. Характер ответа 181, среди прочего, зависит от вида источника 102 запросов, вида соответствующего запроса 180 и от того, обработала или не обработала распределенная система 100 обработки информации соответствующий запрос 180. В некоторых вариантах осуществления данной технологии распределенная система 100 обработки информации может формировать ответ 181, только если не удалось обработать запрос, или только в случае успешной обработки запроса, или в обоих случаях.
Например, во время обработки запроса 180 распределенная система 100 обработки информации может быть способна запрашивать дополнительные данные от источника 102 запросов для продолжения или завершения обработки запроса 180. В этом случае распределенная система 100 обработки информации может быть способна формировать ответ 181 в виде сообщения с запросом данных, в котором указываются дополнительные данные, запрашиваемые распределенной системой 100 обработки информации для продолжения или завершения обработки запроса 180.
В другом примере, если распределенная система 100 обработки информации успешно обработала соответствующий запрос 180, распределенная система 100 обработки информации может быть способна формировать ответ 181 в виде сообщения об успешном завершении, уведомляющего об успешной обработке соответствующего запроса 180.
В еще одном примере, если распределенной системе 100 обработки информации не удалось успешно обработать соответствующий запрос 180, распределенная система 100 обработки информации может быть способна формировать ответ 181 в виде сообщения о неудачном завершении, уведомляющий о том, что соответствующий запрос 180 обработать не удалось. В этом случае источник 102 запроса может быть способен выполнять дополнительные действия, такие как повторное направление запроса 180, выполнение диагностического анализа для определения причины неудачного завершения обработки запроса 180 распределенной системой 100 обработки информации, направление нового запроса, предназначенного для распределенной системы 100 обработки информации, и т.д.
Сеть связи
Источник 102 запросов связан с сетью 103 связи для направления запроса 180 в распределенную систему 100 обработки информации и для приема ответа 181 от распределенной системы 100 обработки информации. В некоторых не имеющих ограничительного характера вариантах осуществления данной технологии в качестве сети
103 связи может использоваться сеть Интернет. В других не имеющих ограничительного характера вариантах осуществления данной технологии сеть 103 связи может быть реализована иначе, например, в виде любой глобальной сети связи, локальной сети связи, частной сети связи и т.п. Реализация линии связи (отдельно не обозначена) между источником 102 запросов и сетью 103 связи зависит, среди прочего, от реализации источника 102 запросов.
Лишь в качестве примера, не имеющего ограничительного характера, в тех вариантах осуществления данной технологии, где источник 102 запросов реализован как беспроводное устройство связи (такое как смартфон), линия связи может быть реализована как беспроводная линия связи (такая как канал сети связи 3G, канал сети связи 4G, Wireless Fidelity или сокращенно WiFi, Bluetooth и т.п.). В тех примерах, где источник 102 запросов реализован как удаленный сервер, линия связи может быть беспроводной (такой как Wireless Fidelity или сокращенно WiFi, Bluetooth и т.д.) или проводной (такой как соединение по сети Ethernet).
Следует отметить, что сеть 103 связи, среди прочего, способна передавать пакет данных запроса, содержащий запрос 180, от источника 102 запросов в подсистему 104 предварительной обработки запросов распределенной системы 100 обработки информации. Например, этот пакет данных запроса может содержать выполняемые компьютером команды, составленные на языке программирования декларативного вида, на котором представлен запрос 180. Сеть 103 связи, среди прочего, также способна передавать пакет данных ответа, содержащий ответ 181, от распределенной системы 100 обработки информации в источник 102 запросов. Например, этот пакет данных ответа может содержать выполняемые компьютером команды, представляющие ответ 181.
Тем не менее, предполагается, что в некоторых вариантах осуществления данной технологии, где источник 102 запросов представляет собой, например, подсистему распределенной системы 100 обработки информации, сеть 103 связи может быть реализована способом, отличным от описанного выше, или в некоторых случаях может вовсе отсутствовать в пределах объема данной технологии.
Операционная подсистема (улей)
Как указано выше, распределенная система 100 обработки информации содержит операционную подсистему 111 или, сокращенно, улей. В общем случае улей 111 представляет собой программное приложение (например, конечный автомат), способное управлять по меньшей мере некоторыми подсистемами распределенной системы 100 обработки информации, такими как подсистема 104 предварительной обработки запросов и подсистема 105 обработки транзакций. Можно сказать, что улей 111 может быть реализован как конечный автомат (SM), способный формировать, удалять и/или выравнивать нагрузку других автоматов SM, образующих по меньшей мере некоторые подсистемы распределенной системы 100 обработки информации.
Должно быть понятно, что автомат SM представляет собой вычислительную модель, реализованную в виде компьютерной системы и определяемую списком состояний. Автомат SM может изменять свое текущее состояние в ответ на некоторые внешние входные данные и может в конкретный момент времени находиться лишь в одном состоянии. Переход автомата SM из одного состояния в другое состояние называется изменением состояния.
Следует отметить, что в контексте данной технологии автоматы SM, образующие по меньшей мере некоторые подсистемы распределенной системы 100 обработки информации, являются детерминированными по свое природе, т.е. каждое изменение состояния каждого автомата SM однозначно определено (а) текущим состоянием соответствующего автомата SM и (б) внешними входными данными соответствующего автомата SM. Иными словами, для текущего состояния автомата SM и для конкретных внешних входных данных существует единственное следующее состояние этого автомата SM. Этот детерминированный характер изменения состояния не зависит от того, у какого именно автомата SM распределенной системы 100 обработки информации происходит изменение состояния.
Поэтому, как описано ниже, в некоторых вариантах осуществления данной технологии распределенная система 100 обработки информации должна принимать внешние входные данные определенного вида, соответствующие свойству детерминированности автоматов SM по меньшей мере некоторых подсистем распределенной системы 100 обработки информации.
Подсистема распределенного хранения данных
Как упомянуто выше, распределенная система 100 обработки информации также содержит подсистему 108 распределенного хранения данных. В общем случае подсистема 108 распределенного хранения данных способна, среди прочего, хранить системные данные, указывающие состояния, изменения состояний, внешние входные и/или выходные данные по меньшей мере некоторых автоматов SM распределенной системы 100 обработки информации. Например, системные данные, связанные с автоматом SM распределенной системы 100 обработки информации, могут храниться в виде журнала, содержащего хронологический список состояний, изменений состояний, внешних входных и/или выходных данных этого автомата SM.
Подсистема 108 распределенного хранения данных также способна хранить клиентские данные, т.е. данные, связанные с внешними входными данными, обрабатываемыми распределенной системой 100 обработки информации. Например, в некоторых вариантах осуществления данной технологии клиентские данные могут храниться как часть системных данных в подсистеме 108 распределенного хранения данных в пределах объема данной технологии.
Для хранения системных и/или клиентских данных подсистема 108 распределенного хранения данных содержит множество устройств 112 хранения данных, каждое из которых далее называется устройством 112 хранения данных. Согласно различным вариантам осуществления данной технологии, некоторые или все устройства из множества устройств 112 хранения данных могут располагаться в одном месте или в различных местах. Например, некоторые или все устройства из множества устройств 112 хранения данных могут располагаться в одной серверной стойке, и/или в одном центре обработки данных, и/или могут быть распределены среди множества серверных стоек в одном или нескольких центрах обработки данных.
В некоторых вариантах осуществления данной технологии системные и/или клиентские данные, хранящиеся в одном устройстве 112 хранения данных, могут дублироваться и храниться в нескольких других устройствах 112 хранения данных. В некоторых вариантах осуществления изобретения такое дублирование и хранение системных и/или клиентских данных может обеспечивать отказоустойчивое хранение системных и/или клиентских данных в распределенной системе 100 обработки информации. Отказоустойчивое хранение системных и/или клиентских данных способно предотвращать утрату данных, когда устройство 112 хранения данных подсистемы 108 распределенного хранения данных становится временно или постоянно недоступным для хранения и извлечения данных. Такое отказоустойчивое хранение системных и/или клиентских данных также позволяет предотвращать утрату данных, когда автомат SM распределенной системы 100 обработки информации становится временно или постоянно недоступным.
Предполагается, что устройство 112 хранения данных может быть реализовано в виде компьютерного сервера. Компьютерный сервер содержит по меньшей мере одно физическое запоминающее устройство (т.е. накопитель 126) и одно или несколько программных приложений, способных выполнять машиночитаемые команды. Накопитель 126 может представлять собой твердотельный накопитель (SSD, Solid State Drive), накопитель на жестких дисках (HDD, Hard Disk Drive) и т.п.Поэтому можно сказать, что по меньшей мере одно физическое запоминающее устройство может быть реализовано как устройство с подвижным или неподвижным диском.
Например, как показано на фиг. 1, устройство 112 хранения данных способно содержать, помимо прочего, следующие программные приложения: приложение 114 виртуального накопителя (Vdrive), приложение 116 физического накопителя (Pdrive), по меньшей мере одно приложение 118 моделирования накопителя, по меньшей мере одно приложение 120 планирования работы, приложение 122 обеспечения работы в реальном времени и по меньшей мере один прокси-сервер 124 автомата SM. Функции указанных выше программных приложений и накопителя 126, обеспечивающие хранение по меньшей мере некоторых системных и/или клиентских данных, более подробно описаны ниже со ссылками на фиг. 2.
Подсистема предварительной обработки запросов
Как указано выше, подсистема 105 обработки транзакций может содержать несколько детерминированных автоматов SM, которые должны получать входные данные определенного вида и которые соответствуют свойству детерминированности автоматов SM. Также следует еще раз отметить, что источник 102 запросов выдает запрос 180 в виде запроса декларативного вида.
Соответственно, подсистема 104 предварительной обработки запросов способна принимать запрос 180 декларативного вида от источника 102 запросов и предварительно обрабатывать или преобразовывать запрос 180 во множество 182 детерминированных транзакций, соответствующих свойству детерминированности нескольких автоматов SM, образующих подсистему 105 обработки транзакций.
В целом, подсистема 104 предварительной обработки запросов предназначена для предварительной обработки или преобразования запроса 180 во множество детерминированных транзакций 182, которые могут быть обработаны детерминированными автоматами SM из подсистемы 105 обработки транзакций, обеспечивая возможность обработки запроса 180 подсистемой 105 обработки транзакций.
Следует отметить, что подсистема 104 предварительной обработки запросов также способна формировать ответ 181 для передачи в источник 102 запросов. Разумеется, что подсистема 104 предварительной обработки запросов связана с подсистемой 105 обработки транзакций не только для передачи множества 182 детерминированных транзакций, но и для приема информации об обработке множества 182 детерминированных транзакций. В некоторых не имеющих ограничительного характера вариантах осуществления данной технологии множество 182 детерминированных транзакций может содержать одну или несколько транзакций вида «считывание» или «запись».
В некоторых вариантах осуществления данной технологии подсистема 104 предварительной обработки запросов реализована в виде по меньшей мере одного автомата SM в пределах объема данной технологии.
В некоторых вариантах осуществления данной технологии предполагается, что представленная на фиг. 1 распределенная система 100 обработки информации способна поддерживать транзакции ACID (Atomicity, Consistency, Isolation and Durability). В целом, ACID - это аббревиатура для обозначения набора свойств транзакции (атомарность, согласованность, изолированность, долговечность), обеспечивающих надежность базы данных при выполнении транзакций. Поэтому в некоторых вариантах осуществления данной технологии предполагается, что транзакции, предназначенные для подсистемы 105 обработки транзакций, могут быть атомарными, согласованными, изолированными и долговечными в пределах объема данной технологии.
Подсистема обработки транзакций
В общем случае подсистема 105 обработки транзакций способна принимать и обрабатывать множество 182 детерминированных транзакций и, таким образом, обрабатывать запрос 180 от источника 102 запросов. Подсистема 105 обработки транзакций содержит (а) подсистему 106 маршрутизации транзакций и (б) подсистему 110 базы данных, которые описаны ниже.
Подсистема 110 базы данных содержит множество мест назначения транзакции (TDL, Transaction Destination Location) и разделена на множество сегментов 109, каждый из которых далее называется сегментом 109. В не имеющем ограничительного характера примере подсистема 110 базы данных может содержать базу данных, включающую в себя одну или несколько таблиц базы данных. Таблица базы данных может состоять из по меньшей мере двух столбцов, таких как первый столбец, содержащий ключи, и второй столбец, содержащий записи, в которых хранятся данные, связанные с соответствующими ключами. В этом не имеющем ограничительного характера примере место TDL может соответствовать строке таблицы базы данных, т.е. место TDL может соответствовать ключу и соответствующей записи в таблице базы данных.
В этом не имеющем ограничительного характера примере каждый сегмент 109 подсистемы 110 базы данных содержит часть таблицы базы данных. Следовательно, множество мест TDL, сопоставленных с соответствующими строками таблицы базы данных, разделено на множество сегментов 109 так, чтобы каждый сегмент 109 содержал соответствующее подмножество (например, диапазон) множества мест TDL.
В некоторых вариантах осуществления данной технологии предполагается, что каждый сегмент из множества сегментов 109 может быть реализован с использованием соответствующего детерминированного автомата SM. Это означает, что после приема транзакции, предназначенной для места TDL сегмента 109, реализованного с использованием автомата SM, этот автомат SM может обработать транзакцию и перейти из текущего состояния в новое состояние в соответствии с транзакцией, как описано выше.
Подсистема 106 маршрутизации транзакций способна маршрутизировать транзакции из множества 182 детерминированных транзакций в соответствующие места TDL и, таким образом, направлять их в соответствующие сегменты 109 подсистемы 110 базы данных. С этой целью подсистема 106 маршрутизации транзакций может включать в себя множество портов, которые обычно способны (а) принимать множество 182 детерминированных транзакций от подсистемы 104 предварительной обработки запросов,
(б) разделять множество 182 детерминированных транзакций на подмножества детерминированных транзакций, предназначенных для соответствующих сегментов 109, и
(в) формировать для каждого сегмента централизованный порядок выполнения детерминированных транзакций соответствующими сегментами 109.
Следует отметить, что каждый порт из множества портов, образующих подсистему 106 маршрутизации транзакций, может быть реализован как соответствующий автомат SM. В некоторых вариантах осуществления изобретения предполагается, что множество портов может включать в себя порты двух различных видов для маршрутизации транзакций из множества 182 детерминированных транзакций в соответствующие сегменты 109. В других вариантах осуществления изобретения по меньшей мере некоторые функции множества портов могут выполняться автоматами SM, соответствующими множеству сегментов 109.
Кроме того, как показано на фиг. 1, по меньшей мере некоторые из автоматов SM подсистемы 105 обработки транзакций могут быть связаны с подсистемой 108 распределенного хранения данных с использованием соответствующей линии 160 связи. В целом, линия 160 связи предназначена для передачи системных данных, среди прочего, таких как данные о состояниях, изменениях состояний, внешние входные и/или выходные данные соответствующих автоматов SM и т.д., в подсистему 108 распределенного хранения данных для хранения. Ниже со ссылками на фиг.2 более подробно описана реализация линий 160 связи и конфигурация подсистемы 108 распределенного хранения данных для хранения системных данных.
На фиг. 2 представлено устройство 112 хранения данных, входящее в состав подсистемы 108 распределенного хранения данных. Как описано выше, устройство 112 хранения данных содержит по меньшей мере один прокси-сервер 124 автомата SM. Прокси-сервер автомата SM предназначен для управления связью между автоматом SM и подсистемой 108 распределенного хранения данных. В некоторых вариантах осуществления данной технологии предполагается, что по меньшей мере один прокси-сервер 124 автомата SM устройства 112 хранения данных может представлять собой прикладной программный интерфейс (API, Application Programing Interface), управляющий связью между автоматом SM и устройством 112 хранения данных. В других вариантах осуществления данной технологии по меньшей мере один прокси-сервер 124 автомата SM сам может быть реализован как автомат SM. В других вариантах осуществления данной технологии по меньшей мере один прокси-сервер 124 автомата SM может быть реализован как программный модуль (не как автомат SM) для выполнения описанных выше функций.
В некоторых вариантах осуществления данной технологии прокси-сервер 124 автомата SM может быть способен (а) принимать системные данные обновления журнала этого автомата SM с использованием соответствующей линии 160 связи, (б) обрабатывать системные данные и (в) передавать обработанные системные данные соответствующему приложению 114 Vdrive для дальнейшей обработки.
По меньшей мере один прокси-сервер 124 автомата SM может быть способен обрабатывать системные данные, например, для обеспечения целостности и отказоустойчивости системных данных. В некоторых вариантах осуществления данной технологии предполагается, что по меньшей мере один прокси-сервер 124 автомата SM может быть способен выполнять стойкое к потере кодирование (erasure coding) системных данных. В целом, стойкое к потере кодирование представляет собой способ кодирования, предусматривающий получение данных с избыточностью и разделение их на несколько фрагментов. Такие избыточность и фрагментация способствуют восстановлению данных в случае потери одного или нескольких фрагментов вследствие нарушений работоспособности в системе.
Предполагается, что обработанные таким образом по меньшей мере одним прокси-сервером 124 автомата SM системные данные принимаются по меньшей мере одним соответствующим приложением 114 Vdrive устройства 112 хранения данных. Приложение 114 Vdrive предназначено для обработки системных данных, полученных от по меньшей мере одного прокси-сервера 124 автомата SM, и для ответного формирования соответствующих операций ввода/вывода (I/O, Input/Output), которые должны выполняться накопителем 126 для сохранения системных данных в накопителе 126 устройства 112 хранения данных. После формирования по меньшей мере одним приложением 114 Vdrive операций I/O, соответствующих принятым системным данным, по меньшей мере одно приложение 114 Vdrive передает операции I/O приложению 116 Pdrive.
Иными словами, предполагается, что устройство 112 хранения данных может содержать несколько прокси-серверов 124 автомата SM для обработки и передачи системных данных нескольким соответствующим приложениям 114 Vdrive, которые обрабатывают системные данные, формируют соответствующие операции I/O и передают соответствующие операции I/O в единое приложение 116 Pdrive устройства 112 хранения данных.
В целом, приложение 116 Pdrive предназначено для управления работой накопителя 126. Например, приложение 116 Pdrive может быть способным выполнять кодирование операций I/O, которые должны выполняться в накопителе 126, и различные другие функции, способствующие надежному хранению данных в накопителе 126.
Приложение 116 Pdrive связано с приложением 120 планирования работы для передачи операции I/O. Приложение 120 планирования работы способно планировать передачу операций I/O в накопитель 126. Предполагается, что приложение 120 планирования работы или сокращенно планировщик может использовать различные схемы планирования для определения порядка передачи операций I/O в накопитель 126 для их дальнейшего выполнения.
Предполагается, что в некоторых вариантах осуществления данной технологии планировщик 120 может быть реализован как часть приложения 116 Pdrive. Иными словами, приложением 116 Pdrive могут выполняться различные схемы планирования в пределах объема данной технологии.
Предполагается, что планировщик 120 может обеспечивать гибридную схему планирования. Например, планировщик 120 может обеспечивать схему «справедливого» планирования, которая при определенных условиях также представляет собой схему планирования «в реальном времени».
Следует отметить, что для данного устройства 112 хранения данных может потребоваться хранение операций I/O, соответствующих системным данным, связанным с несколькими автоматами SM. Кроме того, каждый из нескольких автоматов SM связан с заранее заданной долей производительности накопителя, которую накопитель 126 может выделить для выполнения операций I/O, связанных с соответствующим автоматом SM. В целом, схемы «справедливого» планирования способны упорядочивать операции I/O, передаваемые в накопитель 126, так, чтобы производительность накопителя 126, предназначенная для выполнения упорядоченных операций I/O, использовалась согласно заранее заданным долям, связанным с несколькими автоматами SM.
Следует также отметить, что распределенная система 100 обработки информации может использоваться для предоставления услуг «облачного» хранения данных. Во многих таких вариантах осуществления может быть желательным обрабатывать и сохранять системные данные в реальном времени, т.е. в течение очень короткого интервала времени. Чтобы обеспечить выполнение требования режима реального времени к распределенной системе 100 обработки информации, операции I/O могут быть связаны с соответствующими предельными сроками, которые указывают момент времени, по прошествии которого соответствующие операции I/O уже не попадают в пределы допустимого времени, соответствующие требованиям режима реального времени к распределенной системе 100 обработки информации. В целом, схемы планирования реального времени способны упорядочивать операции I/O, передаваемые в накопитель 126, так, чтобы операции I/O выполнялись накопителем 126 с соблюдением соответствующих предельных сроков.
Вкратце, планировщик 120 может обеспечивать гибридную схему планирования, позволяющую упорядочивать операции I/O, передаваемые для выполнения в накопитель 126, так, чтобы и учитывались заранее заданные доли производительности накопителя для каждого соответствующего автомата SM, и соблюдались соответствующие предельные сроки операций I/O.
Как было упомянуто выше, накопитель 126 представляет собой носитель информации для выполнения операций I/O и, соответственно, для хранения системных данных, переданных в устройство 112 хранения данных. Например, накопитель 126 может быть реализован в виде накопителя HDD или накопителя SSD. Накопитель 126 включает в себя внутреннее логическое устройство 250 накопителя для выбора операции I/O среди всех переданных в накопитель операций I/O с целью выполнения в текущий момент времени.
Следует отметить, что операции I/O могут направляться для выполнения в накопитель 126 по одной, но это может приводить к увеличению задержек между накопителем 126 и другими компонентами устройства 112 хранения данных. Поэтому операции I/O могут предаваться в накопитель 126 пакетами или группами. После приема пакета или группы операций I/O накопителем 126 внутреннее логическое устройство 250 накопителя способно выбрать для выполнения наиболее эффективную операцию I/O среди имеющихся в пакете операций I/O.
Например, наиболее эффективная операция I/O может выбираться на основе различных критериев, таких как место выполнения предыдущей операции I/O в накопителе 126 и место выполнения операций I/O, имеющихся в накопителе 126. Иными словами, внутреннее логическое устройство 250 накопителя способно выбирать для текущего выполнения наиболее эффективную операцию (с точки зрения накопителя 126) среди всех операций I/O, имеющихся в накопителе 126 в текущий момент времени.
Поэтому в некоторых случаях, несмотря на то, что планировщик 120 упорядочил операции I/O для передачи определенным образом с учетом требований режима реального времени к распределенной системе 100 обработки информации, внутреннее логическое устройство 250 накопителя 126 может выдавать в накопитель 126 команды для формирования порядка выполнения операций I/O, отличного от порядка передачи, выбранного планировщиком 120. Поэтому порядок выполнения иногда может не соответствовать требованиям режима реального времени распределенной системы 100 обработки информации (в частности, когда от планировщика 120 принимаются дополнительные операции I/O, которые могут быть более «эффективными» с точки зрения накопителя 126 и могут выбираться среди еще не выполненных операций I/O).
Чтобы обеспечить работу устройства 112 хранения данных в реальном времени и предотвратить описанную выше проблему, также известную как «торможение работы» (operation stagnation), устройство 112 хранения данных может содержать диспетчерский контроллер операций I/O, который далее называется приложением 122 обеспечения работы в реальном времени. В целом, приложение 122 обеспечения работы в реальном времени позволяет управлять тем, какие операции I/O из числа уже упорядоченных планировщиком 120 передаются в текущий момент времени для выполнения в накопитель 126.
Предполагается, что в некоторых вариантах осуществления данной технологии приложение 122 обеспечения работы в реальном времени может быть реализовано как часть приложения 116 Pdrive. Иными словами, вышеупомянутые функции приложения 122 обеспечения работы в реальном времени могут выполняться приложением 116 Pdrive в пределах объема данной технологии.
Устройство 112 хранения данных также может содержать по меньшей мере одно соответствующее приложение 118 моделирования накопителя для каждого накопителя 126 в устройстве 112 хранения данных. В целом, приложение 118 моделирования накопителя способно эмулировать идеальную работу накопителя 126 для анализа накопителя 126 в диагностических целях. Тем не менее, в других вариантах осуществления изобретения планировщик 120 также может использовать приложение 118 моделирования накопителя, чтобы упорядочивать операции I/O для их передачи в накопитель 126.
Предполагается, что в некоторых вариантах осуществления данной технологии по меньшей мере одно соответствующее приложение 118 моделирования накопителя может быть реализовано как часть приложения 116 Pdrive. Иными словами, вышеупомянутые функции по меньшей мере одного соответствующего приложения 118 моделирования накопителя могут выполняться приложением 116 Pdrive в пределах объема данной технологии.
Системы акторов
На фиг. 3 представлена традиционная система 300 акторов. Системы акторов обычно реализуются для выполнения распределенной обработки данных. Например, традиционная система 300 акторов содержит первый актор 302 и второй актор 304. Первый актор 302 и второй актор 304 иногда называются обрабатывающими блоками традиционной системы 300 акторов, которые создаются или запускаются для обработки данных распределенным образом.
Актор (такой как первый актор 302 или второй актор 304) в традиционной системе 300 акторов, среди прочего, может быть способен отправлять сообщение другим акторам и назначать способ обработки принятых сообщений. Например, первый актор 302 может быть способен отправлять сообщение 350 второму актору 304, а второй актор 304 может определять, как следует обрабатывать принятое сообщение 350.
Первый актор 302 и второй актор 304 могут иметь соответствующие адреса для связи. Например, первый актор 302 имеет первый адрес 312, а второй актор 304 имеет второй адрес 314. Для отправки сообщения 350 второму актору 304 первый актор 302 обладает информацией о втором адресе 314 второго актора 304.
Предполагается, что адрес актора может указывать на то, является данный актор локальным актором или он является удаленным или внешним актором. В представленном на фиг.3 примере второй адрес 314 второго актора 304 содержит информацию, указывающую на то, что второй актор 304 представляет собой локальный актор, т.е. второй актор 304 входит в состав той же системы акторов (т.е. традиционной системы 300 акторов), что и первый актор 302. Если второй актор 304 входит в состав другой системы акторов (системы акторов, отличной от традиционной системы 300 акторов), второй адрес 314 может содержать информацию, указывающую на то, что второй актор 304 представляет собой удаленный или внешний актор, т.е. второй актор 304 и первый актор 302 входят в состав различных систем акторов.
Первый актор 302 и второй актор 304 также имеют соответствующие почтовые ящики для связи. Например, первый актор 302 имеет первый почтовый ящик 322, а второй актор 304 имеет второй почтовый ящик 324. Почтовый ящик выполняет функции очереди на обработку для сообщений, принятых соответствующим актором. Например, первый почтовый ящик 322 может использоваться в качестве очереди на обработку для сообщений, принятых первым актором 302, а второй почтовый ящик 324 может использоваться в качестве очереди на обработку для сообщений, принятых вторым актором 304. Сообщения в почтовом ящике могут обрабатываться соответствующим актором, например, в порядке их поступления (FIFO, First-In-First-Out).
Каждый актор в традиционной системе 300 акторов имеет соответствующее состояние, которое может быть изменено на основе информации, принятой в сообщении от другого актора. Например, второй актор 304 имеет некоторое текущее состояние. Сообщение 350 содержит полезные данные, указывающие на информацию, которую первый актор 302 должен предоставить второму актору 304. После успешного приема сообщения 350 второй актор 304 может обработать сообщение 350 и перейти в новое состояние в зависимости от (а) своего текущего состояния и (б) полезных данных из сообщения 350.
В традиционной системе 300 акторов акторы реализованы со средствами ожидания, чтобы обеспечить обработку отправленных ими сообщений или инициирование корректирующих действий в отношении не обработанных сообщений. Например, когда первый актор 302 отправляет сообщение 350 второму актору 304, первый актор в некотором смысле «ожидает» в течение заранее заданного интервала времени ожидания уведомление от второго актора 304, указывающее на то, что сообщение 350 обработано вторым актором 304.
Если первый актор 302 получает уведомление от второго актора 304 в течение заранее заданного интервала времени ожидания, сообщение 350 рассматривается как успешно обработанное вторым актором 304.
Если первый актор 302 не получает уведомление от второго актора 304 в течение заранее заданного интервала времени ожидания, сообщение 350 рассматривается как сообщение, которое не удалось успешно обработать, и в результате первый актор 302 может выполнить корректирующее действие в отношении этого сообщения 350. Например, корректирующее действие может включать в себя повторную отправку сообщения 350 второму актору 304, отправку сообщения 350 другому актору и т.п.
Первый актор 302 может не получить уведомление в течение заранее заданного интервала времени ожидания по различным причинам.
В одном примере второй почтовый 324 ящик второго актора 304 может быть заполнен (или почти заполнен) так, что заранее заданный интервал времени ожидания истечет до того, как второй актор 304 обработает сообщение 350 из числа всех сообщений во втором почтовом ящике 324.
В другом примере второй актор 304 может быть неисправен или не способен реагировать по другой причине. В результате первый актор 302 не получает уведомление, поскольку сообщение 350 не было успешно принято вторым актором 304.
В другом примере, если предполагается, что второй актор 304 представляет собой удаленный или внешний актор (например, часть системы акторов, отличной от системы акторов, к которой относится первый актор 302), линия связи между соответствующими системами акторов первого актора 302 и второго актора 304 может находиться в неработоспособном состоянии. В этом примере сообщение 350 не может быть успешно отправлено второму актору 304, который по этой причине не может выдать уведомление.
Независимо от конкретной причины, по которой уведомление не получено первым актором 302, первый актор 302 традиционной системы 300 акторов способен ожидать, пока не истечет заранее заданный интервал времени ожидания, перед инициированием корректирующего действия в отношении этого сообщения 350. Такое ожидание первого актора 302 нежелательно, поскольку оно вносит задержку в распределенную обработку данных традиционной системой 300 акторов.
Разработчики данной технологии изобрели способы и системы, в которых акторы способны инициировать корректирующие действия в отношении сообщений без ожидания истечения заранее заданного интервала времени ожидания. Иными словами, способы и системы согласно данной технологии позволяют без ожидания истечения заранее заданного интервала времени ожидания определить, что (а) сообщение не было успешно принято целевым актором (например, вследствие того, что целевой актор неисправен или не способен реагировать) и/или (б) линия связи между отправляющим актором и целевым актором неработоспособна.
В некоторых не имеющих ограничительного характера вариантах осуществления данной технологии предполагается, что акторы способны формировать сообщения особым образом так, чтобы системы акторов и/или акторы в системах акторов могли отслеживать доставку сообщений и сеансы связи, установленные между акторами. В результате системы акторов и/или акторы в системах акторов способны определять проблемы с доставкой сообщений и с сеансами связи без ожидания отправляющим актором истечения заранее заданного времени ожидания перед инициированием выполнения корректирующих действий.
На фиг. 4 представлена система 400 акторов, соответствующая некоторым не имеющим ограничительного характера вариантам осуществления данной технологии. Система 400 акторов содержит первый актор 402 и второй актор 404. Первый актор 402 имеет первый адрес 412 и первый почтовый ящик 422, а второй актор 404 имеет второй адрес 414 и второй почтовый ящик 424.
В не имеющем ограничительного характера примере осуществления данной технологии первый актор 402 может быть реализован в виде первого порта подсистемы 106 маршрутизации транзакций (см. фиг.1), а второй актор 404 может быть реализован в виде второго порта подсистемы 106 маршрутизации транзакций. Предполагается, что первый актор 402 и второй актор 404 могут быть реализованы в виде соответствующих автоматов SM (или соответствующих виртуальных машин).
В некоторых вариантах осуществления данной технологии предполагается, что система 400 акторов, помимо первого актора 402 и второго актора 404, может содержать координирующий актор (не показан). В целом, координирующий актор предназначен для загрузки или «запуска» акторов системы 400 акторов при необходимости. Например, если некоторый актор системы 400 акторов неисправен, координирующий актор системы 400 акторов может быть способен запускать другой актор для замены неисправного актора.
Можно предположить, что первый актор 402 способен отправлять сообщение 450 второму актору 404 для обработки. Тем не менее, вместо формирования сообщения, содержащего только полезные данные, указывающие на информацию, которую первый актор 402 должен предоставить второму актору 404 (подобно тому, как это было описано выше применительно к сообщению 350), первый актор 402 способен формировать сообщение 450 особым образом в соответствии с не имеющими ограничительного характера вариантами осуществления данной технологии.
Первый актор 402 системы 400 акторов способен формировать сообщение 450 так, чтобы сообщение 450 содержало первый триггер 460 в дополнение к полезным данным. Первый триггер 460 позволяет инициировать проверку успешности приема сообщения 450 вторым актором 404. Например, первый триггер 460 может инициировать проверку системой 400 акторов (системой акторов, к которой относится целевой актор) успешности приема сообщения 450 вторым актором 404.
В некоторых вариантах осуществления изобретения сообщение 450 может формироваться первым актором 402 так, чтобы включать в себя поле первого триггера (не показано), содержащее первый триггер 460 в виде информации, позволяющей инициировать проверку успешности приема сообщения 450 вторым актором 404.
Первый актор 402 способен отправлять сообщение 450 с первым триггером 460 второму актору 404. Например, первый актор 402 может обладать информацией о втором адресе 414 второго актора 404. В этом случае второй адрес 414 может указывать на то, что второй актор 404 представляет собой локальный актор, т.е. второй актор 404 входит в состав той же системы акторов, что и первый актор 402 (например, системы 400 акторов). Первый актор 402 способен отправлять сообщение 450 второму актору 404 на основе второго адреса 414.
Предполагается, что, поскольку второй актор 404 представляет собой локальный актор, сообщение 450 представляет собой локальное сообщение. Таким образом, сообщение 450 может быть отправлено системой 400 акторов от первого актора 402 непосредственно (например, без промежуточных акторов) ко второму актору 404.
Когда сообщение 450 отправляется первым актором 402, первый триггер 460 инициирует проверку системой 400 акторов успешности приема сообщения 450 вторым актором. Предполагается, что система 400 акторов в ответ на первый триггер 460 способна отслеживать доставку сообщения 450.
Если в ответ на первый триггер 460 система 400 акторов определяет, что второй актор 404 успешно принял сообщение 450, система 400 акторов может отправить уведомление первому актору 402, указывающее на то, что сообщение 450 принято вторым актором 404. Например, в этом случае сообщение 450 может быть помещено в очередь во втором почтовом ящике 424 второго актора 404.
Если в ответ на первый триггер 460 система 400 акторов определяет, что второму актору 404 не удалось успешно принять сообщение 450, система 400 акторов может отправить другое уведомление первому актору 402, оповещающее первый актор 402 о том, что сообщение 450 не принято вторым актором 404. Например, в этом случае система 400 акторов может определить, что второй актор 404 неисправен или не способен реагировать.
В некоторых вариантах осуществления изобретения система 400 акторов может иметь доступ к таблице акторов, содержащей все акторы, реализованные в системе 400 акторов. Таким образом, когда отправляется сообщение 450, система 400 акторов в ответ на первый триггер 460 может быть способна «искать» второй актор 404 в этой таблице акторов и проверять второй актор 404 на предмет неисправности или неспособности реагировать. Таким образом, если определено, что второй актор 404 способен реагировать, система 400 акторов может определить, что второй актор 404 успешно принял сообщение 450. Если определено, что второй актор 404 неисправен или не способен реагировать, система 400 акторов может определить, что второму актору 404 не удалось успешно принять сообщение 450.
Следует отметить, что инициирование первым триггером 460 проверки успешности приема вторым актором 404 сообщения 450 выполняется без ожидания в течение периода времени ожидания. Иными словами, когда сообщение 450 отправляется первым актором 402, первый триггер 460 из сообщения 450 инициирует проверку системой 400 акторов второго актора 404 на предмет неисправности или неспособности реагировать без ожидания в течение этого периода времени.
В некоторых вариантах осуществления данной технологии предполагается, что формирование сообщений описанным здесь определенным образом (т.е. формирование сообщений с триггерами, такими как первый триггер 460) может выполняться в сочетании с процессами периода времени ожидания, которые могут выполняться акторами системы акторов. Иными словами, акторы могут реализовывать процессы периода времени ожидания и одновременно формировать сообщения с триггерами, как описано в данном документе.
Если система 400 акторов оповещает первый актор 402 о том, что сообщение 450 не принято вторым актором 404 (т.е. о том, что второму актору 404 не удалось успешно принять сообщение 450, например, вследствие неисправности второго актора 404 или его неспособности реагировать), в результате этого оповещения системой 400 акторов первый актор 402 может выполнить корректирующее действие в отношении этого сообщения 450.
Следует еще раз отметить, что корректирующее действие, выполняемое первым актором 402, может выполняться без ожидания истечения периода времени ожидания. Это также означает, что в некоторых вариантах осуществления данной технологии корректирующее действие в отношении этого сообщения 450 может инициироваться и/или выполняться первым актором 402 без необходимости поддержания первым актором 402 процесса периода времени ожидания.
Кроме того, следует отметить, что первый актор 402 может выполнять разнообразные корректирующие действия в отношении этого сообщения 450, если сообщение 450 не принято вторым актором 404. Конкретное корректирующее действие, выполняемое первым актором 402, зависит, среди прочего, от варианта осуществления данной технологии.
Независимо от того, какое конкретное корректирующее действие выполняется первым актором 402, в некоторых вариантах осуществления данной технологии первый актор 402 может реализовывать алгоритм корректирующего действия или иным образом осуществлять доступ к нему. В целом, первый актор 402 в ответ на оповещение о том, что второй актор 404 не принял сообщение 450, может быть способен использовать алгоритм корректирующего действия для определения конкретного корректирующего действия, которое требуется выполнить. Например, выбор алгоритмом корректирующего действия конкретного корректирующего действия может, в числе прочего, зависеть от полезных данных из сообщения 450.
На фиг. 5 представлена первая система 500 акторов и вторая система 580 акторов, соответствующие некоторым не имеющим ограничительного характера вариантам осуществления данной технологии. Первая система 500 акторов и вторая система 580 акторов входят в состав системы 501 предоставления услуг. Предполагается, что в некоторых вариантах осуществления данной технологии в системе 501 предоставления услуг может требоваться осуществление связи (например, обмен дистанционными или внешними сообщениями) между акторами первой системы 500 акторов и акторами второй системы 580 акторов.
В не имеющем ограничительного характера примере осуществления данной технологии первая система 500 акторов может быть реализована в виде подсистемы 106 маршрутизации транзакций (см. фиг. 1), а вторая система 580 акторов может быть реализована в виде подсистемы 110 базы данных. В этом случае система 501 предоставления услуг может быть реализована, например, в виде подсистемы 105 обработки транзакций.
Следует отметить, что в некоторых вариантах осуществления данной технологии первая система 500 акторов и вторая система 580 акторов могут быть связаны в соответствии со схемой общей адресации (например, реализованы в общем адресном пространстве). Например, схема адресации может быть реализована системой 501 предоставления услуг для связи между первой системой 500 акторов и второй системой 580 акторов.
Первая система 500 акторов содержит первый актор 502, а вторая система 580 акторов содержит второй актор 504. Например, первый актор 502 может представлять собой порт подсистемы 106 маршрутизации транзакций, а второй актор 504 может представлять собой сегмент 109 подсистемы 110 базы данных.
Кроме того, первая система 500 акторов содержит первый шлюзовой актор 530, а вторая система 580 акторов содержит второй шлюзовой актор 540. В целом, шлюзовые акторы реализуются соответствующими системами акторов и используются для связи между системами акторов системы 501 предоставления услуг. Иными словами, первый актор 502 может не отправлять сообщение 550 непосредственно второму актору 504, поскольку второй актор 504 представляет собой удаленный или внешний актор. Вместо этого сообщение 550 может маршрутизироваться первым актором 502 второму актору 504 через первый шлюзовой актор 530 и второй шлюзовой актор 540. Далее описано формирование и маршрутизация сообщения 550 от первого актора 502 ко второму актору 504.
Как показано на фиг. 5, первый актор 502 имеет первый адрес 512 и первый почтовый ящик 522, а второй актор 504 имеет второй адрес 514 и второй почтовый ящик 524.
Первый актор 502 способен формировать сообщение 550, которое должно отправляться по второму адресу 514 (связанному со вторым актором 504). Первая система 500 акторов может определить, что второй адрес 514 представляет собой удаленный или внешний адрес по отношению к первой системе 500 акторов. Например, первая система 500 акторов может определить, что второй адрес 514 не связан с каким-либо входящим в ее состав актором, а представляет собой адрес во второй системе 580 акторов. В таком случае первая система 500 акторов может быть способна отправить сообщение 550 от первого актора 502 первому шлюзовому актору 530.
Первый шлюзовой актор 530 поддерживает линию 590 связи со вторым шлюзовым актором 540. Линия 590 связи обеспечивает связь между акторами первой системы 500 акторов и акторами второй системы 580 акторов. Иными словами, обмен сообщениями между акторами первой системы 500 акторов и акторами второй системы 580 акторов осуществляется с использованием линии 590 связи.
После приема первым шлюзовым актором 530 сообщения 550 первый шлюзовой актор 530 может отправить сообщение 550 по линии 590 связи второму шлюзовому актору 540. Когда второй шлюзовой актор 540 принимает сообщение 550, вторая система 580 акторов может быть способна определить, что сообщение 550 предназначено для второго адреса 514. Таким образом, вторая система 580 акторов может отправить сообщение 550 от второго шлюзового актора 540 ко второму актору 504 на основе второго адреса 514.
В некоторых вариантах осуществления данной технологии сообщение 550 может содержать полезные данные, которые первый актор 502 должен предоставить второму актору 504, а также первый триггер 560 и второй триггер 570. Далее описываются назначение и функции первого триггера 560 и второго триггера 570.
Первый триггер 560 предназначен для инициирования проверки успешности приема сообщения 550 вторым актором 504. Когда сообщение 550 принимается вторым шлюзовым актором 540, первый триггер 560 инициирует проверку второй системой 580 акторов (т.е. системой акторов, к которой относится целевой актор, представляющий собой второй актор 504) успешности приема сообщения 550 вторым актором 504.
Например, подобно описанному выше для первого триггера 460 из сообщения 450, показанного на фиг. 4, если вторая система 580 акторов определяет, что второй актор 504 неисправен или не способен реагировать, вторая система 580 акторов может оповестить первый актор 502 о том, что сообщение 550 не принято вторым актором 504.
С этой целью вторая система 580 акторов может выдать команду второму шлюзовому актору 540, чтобы от имени второго актора 504 сформировать уведомление, указывающее на то, что сообщение 550 не принято вторым актором, и отправить это уведомление по линии 590 связи первому шлюзовому актору 530, откуда это уведомление отправляется первой системой 500 акторов первому актору 502.
Если вторая система 580 акторов определяет, что второй актор 504 способен реагировать, уведомление, указывающее на то, что сообщение 550 принято вторым актором 504, может быть отправлено вторым шлюзовым актором 540 первому шлюзовому актору 530, а затем - первому актору 502.
Второй триггер 570 предназначен для инициирования проверки установления связи между первым актором 502 и вторым актором 504. Когда сообщение 550 принимается первым шлюзовым актором 530, второй триггер 570 инициирует проверку первым шлюзовым актором 530 установления и работоспособности линии 590 связи.
Например, первый шлюзовой актор 530 может быть способен использовать механизм эхо-тестирования связи со вторым шлюзовым актором 540, чтобы отслеживать работоспособность линии 590 связи. В другом примере первый шлюзовой актор 530 может быть способен использовать средство протокола TCP/IP для тестирования связи со вторым шлюзовым актором 540, чтобы отслеживать работоспособность линии 590 связи. Используемое первым шлюзовым актором 530 конкретное средство проверки работоспособности линии 590 связи, может, среди прочего, зависеть от реализации нижних уровней системы 501 предоставления услуг.
Также следует отметить, что первый шлюзовой актор 530 может хранить информацию о сообщениях, принятых им для передачи во внешние системы акторов (такие как вторая система 580 акторов). Например, когда первый шлюзовой актор 530 принимает сообщение 550, первый шлюзовой актор 530 может сохранить информацию, касающуюся первого адреса 512 первого актора 502, сформировавшего сообщение 550, и второго адреса 514 второго актора 504, который должен принять сообщение 550.
Как описано выше, первый шлюзовой актор 530 может отправить сообщение 550 второму шлюзовому актору 540. В ответ на второй триггер 570 первый шлюзовой актор 530 может отслеживать работоспособность линии 590 связи во время и/или после отправки сообщения 550. Если первый шлюзовой актор 530 определяет, что линия 590 связи неработоспособна, первый шлюзовой актор 530 может отправить уведомление первому актору 502 (на основе информации, сохраненной во время приема сообщения 550 первым шлюзовым актором 530), оповещающее первый актор 502 о том, что сообщение 550 не принято вторым актором 504.
В некоторых вариантах осуществления данной технологии представленный на фиг.6 способ 600 может выполняться одной или несколькими системами акторов. Далее способ 600 описан более подробно.
Шаг 602: формирование первым актором системы акторов сообщения, включающего в себя (а) полезные данные, указывающие на информацию, которую первый актор должен предоставить второму актору, и (б) первый триггер для инициирования проверки успешности приема сообщения вторым актором.
Способ 600 начинается на шаге 602, где первый актор системы акторов формирует сообщение. В качестве примера можно рассмотреть первый актор 402 системы 400 акторов, представленной на фиг. 4. Сообщение 450 должно передаваться первым актором 402 второму актору 404.
Предполагается, что в некоторых вариантах осуществления данной технологии первый актор 402 и второй актор 404 могут быть реализованы в виде соответствующих автоматов SM. В других вариантах осуществления данной технологии система 400 акторов может быть реализована в распределенной компьютерной системе 100 (см. фиг. 1)·
Сообщение 450 формируется первым актором 402 и содержит (а) полезные данные, указывающие на информацию, которую первый актор 402 должен предоставить второму актору 404, и (б) первый триггер 460 для инициирования проверки успешности приема сообщения 450 вторым актором 404.
В некоторых вариантах осуществления система 400 акторов может быть способна определять, является сообщение 450 локальным сообщением или оно является дистанционным или внешним сообщением. Система 400 акторов может определить сообщение 450 как локальное, поскольку сообщение 450 должно передаваться между первым актором 402 и вторым актором 404, входящими в состав системы 400 акторов.
В некоторых вариантах осуществления изобретения сообщение, предназначенное для передачи, может формироваться так, чтобы оно дополнительно содержало второй триггер. В качестве примера можно рассмотреть сообщение 550, сформированное первым актором 502 первой системы 500 акторов (см. фиг. 5). Помимо первого триггера 560 и соответствующих полезных данных, сообщение 550 содержит второй триггер 570 для инициирования проверки работоспособности линии связи между первым актором 502 и вторым актором 504.
В этом случае первая система 500 акторов может определить сообщение 550 как дистанционное или внешнее сообщение, поскольку сообщение 550 должно передаваться первым актором 502 и вторым актором 504, которые не входят в состав одной системы акторов, т.е. первый актор 502 представляет собой часть первой системы 500 акторов, а второй актор 504 представляет собой часть второй системы 580 акторов.
Предполагается, что в некоторых вариантах осуществления данной технологии первая система 500 акторов и вторая система 580 акторов могут выполняться в соответствующих различных компьютерных устройствах распределенной компьютерной системы 100 (см. фиг. 1). Например, первая система 500 акторов и вторая система 580 акторов могут быть реализованы в различных устройствах 112 хранения данных.
Шаг 604: отправка первым актором сообщения второму актору.
Способ 600 продолжается на шаге 604, где первый актор отправляет сообщение второму актору. В качестве примера можно рассмотреть представленное на фиг.4 сообщение 450. Первый актор 402 шлюза может отправить сообщение 450 второму актору 404. В этом случае сообщение 450 может передаваться системой 400 акторов от первого актора 402 ко второму актору 404.
С учетом того, что сообщение 450 представляет собой внутреннее сообщение, оно может быть отправлено первым актором 402 непосредственно второму актору 404. Например, сообщение 450 может передаваться системой 400 акторов от первого актора 402 непосредственно ко второму актору 404 без приема сообщения 450 промежуточными акторами.
В изображенном на фиг. 5 не имеющем ограничительного характера примере сообщение 550 представляет собой дистанционное или внешнее сообщение. В этом случае первая система 500 акторов содержит первый шлюзовой актор 530, а вторая система 580 акторов содержит второй шлюзовой актор 540. Первый шлюзовой актор 530 и второй шлюзовой актор 540 способны передавать сообщения между первой системой 500 акторов и второй системой 580 акторов. Первый шлюзовой актор 530 и второй шлюзовой актор 540 могут быть реализованы в виде соответствующих автоматов SM.
В некоторых вариантах осуществления данной технологии первый актор 502 и второй актор 504 могут быть реализованы в виде автоматов SM первого типа, а первый шлюзовой актор 530 и второй шлюзовой актор 540 могут быть реализованы в виде автоматов SM второго типа. Автоматам SM первого типа могут быть недоступны протоколы связи, реализованные между первой системой 500 акторов и второй системой 580 акторов. Автоматам SM второго типа могут быть доступны протоколы связи, реализованные между первой системой 500 акторов и второй системой 580 акторов.
В представленном на фиг. 5 не имеющем ограничительного характера примере отправка сообщения 550 может включать в себя (а) отправку сообщения 550 первым актором 502 первому шлюзовому актору 530 (например, первая система 500 акторов может передавать сообщение 550 от первого актора 502 к первому шлюзовому актору 530), (б) отправку сообщения 550 первым шлюзовым актором 530 второму шлюзовому актору 540 (например, по линии 590 связи) и (в) отправку сообщения 550 вторым шлюзовым актором 540 второму актору 504 (например, вторая система 580 акторов может передавать сообщение 550 от второго шлюзового актора 540 ко второму актору 504).
Шаг 606: оповещение системой акторов первого актора о том, что сообщение не принято вторым актором, если в ответ на первый триггер система акторов определила, что второму актору не удалось успешно принять сообщение.
Способ 600 завершается на шаге 606, где система акторов оповещает первый актор о том, что сообщение не принято вторым актором, если определено, что второму актору не удалось успешно принять сообщение.
В качестве примера можно рассмотреть представленное на фиг.4 сообщение 450. Система 400 акторов способна оповещать первый актор 402 о том, что сообщение 450 не принято вторым актором 404, если в ответ на первый триггер 460 система акторов 400 определила, что второму актору 404 не удалось успешно принять сообщение 450.
В некоторых вариантах осуществления изобретения это оповещение системой 400 акторов может выполняться дополнительно, когда сообщение 450 отправляется первым актором 402 непосредственно второму актору 404.
Следует отметить, что система 400 акторов в ответ на первый триггер 460 может определять, что второй актор 404 неисправен или не способен реагировать по другой причине и, следовательно, не смог успешно принять отправленное ему сообщение 450.
В некоторых вариантах осуществления изобретения в результате этого оповещения системой 400 акторов первый актор 402 может выполнить корректирующее действие в отношении этого сообщения 450. Предполагается, что корректирующее действие может выполняться (а) без ожидания истечения периода времени ожидания и/или (б) без необходимости поддержания первым актором 402 процесса периода времени ожидания.
В представленном на фиг. 5 не имеющем ограничительного характера примере первый актор 502 может быть оповещен о том, что сообщение 550 не принято вторым актором, по меньшей мере в одном из следующих случаев: (а) если в ответ на первый триггер 560 определено, что второму актору 504 не удалось успешно принять сообщение 550, и (б) если в ответ на второй триггер 570 определено, что линия связи между первым актором 502 и вторым актором 504 неработоспособна.
В одном примере определение того, что второму актору 504 не удалось успешно принять сообщение 550, может включать в себя определение вторым шлюзовым актором 540 того, что второй актор 504 не принял сообщение 550. Предполагается, что вторая система 580 акторов может определить, что второй актор неисправен или не способен реагировать по другой причине, и, следовательно, она может определить и оповестить второй шлюзовой актор 540 о том, что второму актору 504 не удалось успешно принять сообщение 550.
Например, определение того, что линия связи между первым актором 502 и вторым актором 504 неработоспособна, может включать в себя определение первым шлюзовым актором 530 того, что линия 590 связи между первым шлюзовым актором 530 и вторым шлюзовым актором 540 неработоспособна. С этой целью в некоторых вариантах осуществления изобретения первый шлюзовой актор 530 может использовать по меньшей мере одно из следующего: (а) механизм эхо-тестирования и (б) механизм протокола TCP/IP.
Предполагается, что в некоторых вариантах осуществления данной технологии триггеры, содержащиеся в сообщениях, могут формироваться отправляющими акторами. Например, отправляющий актор может формировать первый триггер, если определено (например, соответствующей системой акторов), что сообщение представляет собой локальное сообщение. В другом примере отправляющий актор может формировать первый триггер и второй триггер, если определено (например, соответствующей системой акторов), что сообщение представляет собой дистанционное или внешнее сообщение.
Тем не менее, в других вариантах осуществления изобретения триггеры могут формироваться элементами, отличными от отправляющего актора. Например, по меньшей мере один из первого триггера и второго триггера может формироваться соответствующей системой акторов, в состав которой входит отправляющий актор, а затем добавляться в сообщение. В другом примере второй триггер может формироваться первым шлюзовым актором системы акторов, в состав которой входит отправляющий актор, а затем добавляться в сообщение.
Специалисту в данной области могут быть очевидны возможные изменения и усовершенствования описанных выше вариантов осуществления данной технологии. Предшествующее описание приведено лишь в качестве примера, но не для ограничения объема изобретения. Объем охраны данной технологии определяется исключительно объемом приложенной формулы изобретения.