RU2746042C1 - Способ и система для передачи сообщения - Google Patents

Способ и система для передачи сообщения Download PDF

Info

Publication number
RU2746042C1
RU2746042C1 RU2019103253A RU2019103253A RU2746042C1 RU 2746042 C1 RU2746042 C1 RU 2746042C1 RU 2019103253 A RU2019103253 A RU 2019103253A RU 2019103253 A RU2019103253 A RU 2019103253A RU 2746042 C1 RU2746042 C1 RU 2746042C1
Authority
RU
Russia
Prior art keywords
actor
message
actors
gateway
implemented
Prior art date
Application number
RU2019103253A
Other languages
English (en)
Inventor
Денис Николаевич Подлужный
Original Assignee
Общество С Ограниченной Ответственностью "Яндекс"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Общество С Ограниченной Ответственностью "Яндекс" filed Critical Общество С Ограниченной Ответственностью "Яндекс"
Priority to RU2019103253A priority Critical patent/RU2746042C1/ru
Priority to US16/776,011 priority patent/US11184745B2/en
Application granted granted Critical
Publication of RU2746042C1 publication Critical patent/RU2746042C1/ru

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/12Messaging; Mailboxes; Announcements
    • H04W4/14Short messaging services, e.g. short message services [SMS] or unstructured supplementary service data [USSD]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/23Reliability checks, e.g. acknowledgments or fault reporting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/58Message adaptation for wireless communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/18Information format or content conversion, e.g. adaptation by the network of the transmitted or received information for the purpose of wireless delivery to users or terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/70Services for machine-to-machine communication [M2M] or machine type communication [MTC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/12Messaging; Mailboxes; Announcements

Abstract

Изобретение относится к области вычислительной техники для передачи сообщений. Технический результат заключается в обеспечении определения без ожидания истечения заранее заданного интервала времени ожидания, что (а) сообщение не было успешно принято целевым или принимающим актором и/или (б) линия связи между отправляющим актором и целевым или принимающим актором неработоспособна. Технический результат достигается за счет формирования первым актором системы акторов сообщения, содержащего полезные данные, указывающие на информацию, которую первый актор должен предоставить второму актору, и первый триггер для инициирования проверки успешности приема сообщения вторым актором; отправки первым актором системы акторов сообщения второму актору; и оповещения системой акторов первого актора о том, что сообщение не принято вторым актором, если в ответ на первый триггер система акторов определила, что второму актору не удалось успешно принять сообщение. 2 н. и 38 з.п. ф-лы, 6 ил.

Description

Область техники, к которой относится изобретение
Данная технология относится к распределенной обработке данных и, в частности, к способу и системе для передачи сообщения. Уровень техники
Требования к запоминающим устройствам для хранения цифровых данных постоянно повышаются, поскольку большие объемы цифровых данных создаются ежедневно. Например, хранения могут требовать различные виды пользовательских данных, данных организаций и/или данных приложений. Это повышает требования к емкости хранилищ данных. Растущие потребности пользователей и/или организаций способны удовлетворить «облачные» системы удаленного хранения данных.
В общем случае «облачное» хранилище данных представляет собой вид компьютерного запоминающего устройства, в котором цифровые данные хранятся в логических пулах. Физическая память, в которой фактически хранятся цифровые данные, распределена между несколькими серверами, возможно, расположенными в различных местах (т.е. в различных центрах обработки данных), и обычно управляется компанией, предоставляющей услуги «облачного» хранения данных. Пользователи и/или организации обычно покупают или арендуют некоторый объем памяти у поставщиков услуг «облачного» хранения данных, чтобы хранить свои цифровые данные. Со своей стороны, поставщики услуг «облачного» хранения данных отвечают за доступность цифровых данных и защиту физической памяти с целью предотвращения утраты данных.
Раскрытие изобретения
Разработчики данной технологии обнаружили определенные технические недостатки, связанные с известными решениями для передачи сообщений. В частности, недостатки традиционных систем акторов касаются доставки сообщений и оперативности ответных действий в случае недоставки сообщений.
Следует отметить, что отправляющий актор традиционной системы акторов после отправки сообщения принимающему актору ожидает уведомления о приеме от принимающего актора. Если актор не получает это уведомление в течение заранее заданного интервала времени ожидания, сообщение может считаться недоставленным. Отправляющий актор может не получить уведомление в течение заранее заданного интервала времени ожидания по различным причинам.
В одном примере почтовый ящик принимающего актора может быть заполнен (или почти заполнен) так, что заранее заданный интервал времени ожидания истечет до того, как принимающий актор обработает сообщение. В другом примере принимающий актор может быть неисправен или не способен реагировать по другой причине. В результате отправляющий актор не получает уведомление, поскольку сообщение не было успешно принято принимающим актором. В еще одном примере, если предполагается, что принимающий актор представляет собой удаленный или внешний актор (например, часть системы акторов, отличной от системы акторов, к которой относится отправляющий актор), линия связи между соответствующими системами акторов отправляющего актора и принимающего актора может находиться в неработоспособном состоянии. В этом примере сообщение не может быть успешно отправлено принимающему актору, который по этой причине не может выдать уведомление.
Независимо от конкретной причины, по которой не получено это уведомление, отправляющий актор традиционной системы акторов способен ожидать, пока не истечет заранее заданный интервал времени ожидания, перед инициированием корректирующего действия в отношении сообщения. Это ожидание отправляющего актора нежелательно, поскольку оно вносит задержку в распределенную обработку данных традиционной системой акторов.
Разработчики данной технологии изобрели способы и системы, в которых акторы способны инициировать корректирующие действия в отношении сообщений без ожидания истечения заранее заданного интервал времени ожидания. Иными словами, способы и системы согласно данной технологии позволяют без ожидания истечения заранее заданного интервала времени ожидания определить, что (а) сообщение не было успешно принято целевым или принимающим актором (например, вследствие того, что целевой или принимающий актор неисправен или не способен реагировать) и/или (б) линия связи между отправляющим актором и целевым или принимающим актором неработоспособна.
В некоторых не имеющих ограничительного характера вариантах осуществления данной технологии предполагается, что акторы способны формировать сообщения особым образом так, чтобы системы акторов и/или акторы в системах акторов могли отслеживать доставку сообщений и сеансы связи, установленные между акторами. В результате этого системы акторов и/или акторы в системах акторов могут определять проблемы с доставкой сообщений и сеансами связи без ожидания отправляющим сообщение актором истечения заранее заданного времени ожидания перед инициированием выполнения корректирующих действий.
В соответствии с первым аспектом данной технологии реализован способ передачи сообщения. Сообщение должно передаваться от первого актора ко второму актору. Первый актор размещен в системе акторов. Система акторов реализована в распределенной компьютерной системе. Способ включает в себя формирование сообщения первым актором системы акторов. Сообщение включает в себя полезные данные, указывающие на информацию, которую первый актор должен предоставить второму актору, и первый триггер для инициирования проверки успешности приема сообщения вторым актором. Способ включает в себя отправку первым актором системы акторов сообщения второму актору. Способ включает в себя оповещение системой акторов первого актора о том, что сообщение не принято вторым актором, если в ответ на первый триггер система акторов определила, что второму актору не удалось успешно принять сообщение.
В некоторых вариантах осуществления способа система акторов представляет собой первую систему акторов, распределенная компьютерная система содержит вторую систему акторов, а способ дополнительно включает в себя определение системой акторов того, является сообщение локальным сообщением или внешним сообщением. Локальное сообщение должно передаваться между первым актором и вторым актором, представляющим собой часть первой системы акторов. Внешнее сообщение должно передаваться между первым актором и вторым актором, представляющим собой часть второй системы акторов.
В некоторых вариантах осуществления способа соответствующие первая система акторов и вторая система акторов выполняются в соответствующих различных компьютерных устройствах распределенной компьютерной системы.
В некоторых вариантах осуществления способа первый актор и второй актор представляют собой соответствующие конечные автоматы (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.
Предполагается, что в некоторых вариантах осуществления данной технологии триггеры, содержащиеся в сообщениях, могут формироваться отправляющими акторами. Например, отправляющий актор может формировать первый триггер, если определено (например, соответствующей системой акторов), что сообщение представляет собой локальное сообщение. В другом примере отправляющий актор может формировать первый триггер и второй триггер, если определено (например, соответствующей системой акторов), что сообщение представляет собой дистанционное или внешнее сообщение.
Тем не менее, в других вариантах осуществления изобретения триггеры могут формироваться элементами, отличными от отправляющего актора. Например, по меньшей мере один из первого триггера и второго триггера может формироваться соответствующей системой акторов, в состав которой входит отправляющий актор, а затем добавляться в сообщение. В другом примере второй триггер может формироваться первым шлюзовым актором системы акторов, в состав которой входит отправляющий актор, а затем добавляться в сообщение.
Специалисту в данной области могут быть очевидны возможные изменения и усовершенствования описанных выше вариантов осуществления данной технологии. Предшествующее описание приведено лишь в качестве примера, но не для ограничения объема изобретения. Объем охраны данной технологии определяется исключительно объемом приложенной формулы изобретения.

Claims (52)

1. Способ передачи сообщения первым актором второму актору, причем первый актор размещен в системе акторов, реализованной в распределенной компьютерной системе, включающий в себя:
- формирование первым актором системы акторов сообщения, содержащего полезные данные, указывающие на информацию, которую первый актор должен предоставить второму актору, и первый триггер для инициирования проверки успешности приема сообщения вторым актором;
- отправку первым актором системы акторов сообщения второму актору; и
- оповещение системой акторов первого актора о том, что сообщение не принято вторым актором, если в ответ на первый триггер система акторов определила, что второму актору не удалось успешно принять сообщение.
2. Способ по п. 1, отличающийся тем, что система акторов представляет собой первую систему акторов, распределенная компьютерная система содержит вторую систему акторов, а способ дополнительно включает в себя определение системой акторов того, является сообщение локальным сообщением или внешним сообщением, при этом локальное сообщение должно передаваться между первым актором и вторым актором, представляющим собой часть первой системы акторов, а внешнее сообщение должно передаваться между первым актором и вторым актором, представляющим собой часть второй системы акторов.
3. Способ по п. 2, отличающийся тем, что соответствующие первая система акторов и вторая система акторов реализованы в соответствующих различных компьютерных устройствах распределенной компьютерной системы.
4. Способ по п. 1, отличающийся тем, что первый актор и второй актор представляют собой соответствующие конечные автоматы.
5. Способ по п. 2, отличающийся тем, что сообщение представляет собой внешнее сообщение и дополнительно содержит второй триггер для инициирования проверки работоспособности линии связи между первым актором и вторым актором, при этом первая система акторов содержит первый шлюзовой актор, вторая система акторов содержит второй шлюзовой актор, первый шлюзовой актор и второй шлюзовой актор способны передавать сообщения между первой системой акторов и второй системой акторов, и первый актор оповещается о том, что сообщение не принято вторым актором, если (а) в ответ на первый триггер определено, что второму актору не удалось успешно принять сообщение, и/или (б) в ответ на второй триггер определено, что линия связи неработоспособна.
6. Способ по п. 5, отличающийся тем, что первый актор, второй актор, первый шлюзовой актор и второй шлюзовой актор реализованы в виде конечных автоматов.
7. Способ по п. 6, отличающийся тем, что первый актор и второй актор реализованы в виде конечных автоматов первого типа, а первый шлюзовой актор и второй шлюзовой актор реализованы в виде конечных автоматов второго типа, при этом конечным автоматам первого типа недоступны протоколы связи, реализованные между первой системой акторов и второй системой акторов, а конечным автоматам второго типа доступны протоколы связи, реализованные между первой системой акторов и второй системой акторов.
8. Способ по п. 5, отличающийся тем, что отправка сообщения включает в себя:
- отправку первым актором сообщения первому шлюзовому актору;
- отправку первым шлюзовым актором сообщения второму шлюзовому актору; и
- отправку вторым шлюзовым актором сообщения второму актору.
9. Способ по п. 5, отличающийся тем, что определение того, что линия связи неработоспособна, включает в себя определение первым шлюзовым актором неработоспособности линии связи между первым шлюзовым актором и вторым шлюзовым актором.
10. Способ по п. 9, отличающийся тем, что определение неработоспособности линии связи между первым шлюзовым актором и вторым шлюзовым актором выполняется с использованием механизма эхо-тестирования и/или другого механизма протокола TCP/IP.
11. Способ по п. 5, отличающийся тем, что определение того, что второй актор не принял сообщение, включает в себя определение вторым шлюзовым актором того, что второй актор не принял сообщение.
12. Способ по п. 2, отличающийся тем, что сообщение представляет собой внутреннее сообщение, а отправка сообщения включает в себя отправку сообщения первым актором непосредственно второму актору.
13. Способ по п. 12, отличающийся тем, что оповещение выполняется после отправки сообщения первым актором непосредственно второму актору.
14. Способ по п. 1, отличающийся тем, что система акторов реализована в виде конечного автомата.
15. Способ по п. 1, отличающийся тем, что в результате оповещения системой акторов первого актора о том, что сообщение не принято вторым актором, первый актор выполняет корректирующее действие в отношении этого сообщения.
16. Способ по п. 15, отличающийся тем, что корректирующее действие выполняется без ожидания истечения периода времени ожидания.
17. Способ по п. 15, отличающийся тем, что корректирующее действие выполняется без необходимости поддержания первым актором процесса периода времени ожидания.
18. Способ по п. 5, отличающийся тем, что в результате оповещения первого актора о том, что сообщение не принято вторым актором, первый актор выполняет корректирующее действие в отношении этого сообщения.
19. Способ по п. 18, отличающийся тем, что корректирующее действие выполняется без ожидания истечения периода времени ожидания.
20. Способ по п. 18, отличающийся тем, что корректирующее действие выполняется без необходимости поддержания первым актором процесса периода времени ожидания.
21. Распределенная компьютерная система, реализующая систему акторов, содержащую первый актор, в которой первым актором должно передаваться сообщение второму актору, при этом первый актор способен:
- формировать сообщение, содержащее полезные данные, указывающие на информацию, которую первый актор должен предоставить второму актору, и первый триггер для инициирования проверки успешности приема сообщения вторым актором; и
- отправлять сообщение второму актору;
а система акторов способна оповещать первый актор о том, что сообщение не принято вторым актором, если в ответ на первый триггер система акторов определила, что второму актору не удалось успешно принять сообщение.
22. Система по п. 21, отличающаяся тем, что система акторов представляет собой первую систему акторов, распределенная компьютерная система содержит вторую систему акторов, первая система акторов дополнительно способна определять, является сообщение локальным сообщением или внешним сообщением, при этом локальное сообщение должно передаваться между первым актором и вторым актором, представляющим собой часть первой системы акторов, а внешнее сообщение должно передаваться между первым актором и вторым актором, представляющим собой часть второй системы акторов.
23. Система по п. 22, отличающаяся тем, что соответствующие первая система акторов и вторая система акторов реализованы в соответствующих различных компьютерных устройствах распределенной компьютерной системы.
24. Система по п. 21, отличающаяся тем, что первый актор и второй актор представляют собой соответствующие конечные автоматы.
25. Система по п. 22, отличающаяся тем, что сообщение представляет собой внешнее сообщение и дополнительно содержит второй триггер для инициирования проверки работоспособности линии связи между первым актором и вторым актором, при этом первая система акторов содержит первый шлюзовой актор, а вторая система акторов содержит второй шлюзовой актор, первый шлюзовой актор и второй шлюзовой актор способны передавать сообщения между первой системой акторов и второй системой акторов, а система акторов способна оповещать первый актор о том, что сообщение не принято вторым актором, если (а) в ответ на первый триггер определено, что второму актору не удалось успешно принять сообщение, и/или (б) в ответ на второй триггер определено, что линия связи неработоспособна.
26. Система по п. 25, отличающаяся тем, что первый актор, второй актор, первый шлюзовой актор и второй шлюзовой актор реализованы в виде конечных автоматов.
27. Система по п. 26, отличающаяся тем, что первый актор и второй актор реализованы в виде конечных автоматов первого типа, а первый шлюзовой актор и второй шлюзовой актор реализованы в виде конечных автоматов второго типа, при этом конечным автоматам первого типа недоступны протоколы связи, реализованные между первой системой акторов и второй системой акторов; а конечным автоматам второго типа доступны протоколы связи, реализованные между первой системой акторов и второй системой акторов.
28. Система по п. 25, отличающаяся тем, что способность первого актора отправлять сообщения включает в себя:
- способность первого актора отправлять сообщения первому шлюзовому актору;
- способность первого шлюзового актора отправлять сообщения второму шлюзовому актору; и
- способность второго шлюзового актора отправлять сообщения второму актору.
29. Система по п. 25, отличающаяся тем, что определение того, что линия связи неработоспособна, включает в себя определение первым шлюзовым актором неработоспособности линии связи между первым шлюзовым актором и вторым шлюзовым актором.
30. Система по п. 29, отличающаяся тем, что определение неработоспособности линии связи между первым шлюзовым актором и вторым шлюзовым актором выполняется с использованием механизма эхо-тестирования и/или другого механизма протокола TCP/IP.
31. Система по п. 25, отличающаяся тем, что определение того, что второй актор не принял сообщение, включает в себя определение вторым шлюзовым актором того, что второй актор не принял сообщение.
32. Система по п. 22, отличающаяся тем, что сообщение представляет собой внутреннее сообщение, а отправка сообщения включает в себя отправку сообщения первым актором непосредственно второму актору.
33. Система по п. 32, отличающаяся тем, что система акторов способна выполнять оповещение в ответ на действие первого актора, способного отправлять сообщения непосредственно второму актору.
34. Система по п. 21, отличающаяся тем, что система акторов реализована в виде конечного автомата.
35. Система по п. 21, отличающаяся тем, что система акторов способна оповещать первый актор о том, что сообщение не принято вторым актором, в результате чего первый актор выполняет корректирующее действие в отношении этого сообщения.
36. Система по п. 35, отличающаяся тем, что корректирующее действие выполняется без ожидания истечения периода времени ожидания.
37. Система по п. 35, отличающаяся тем, что корректирующее действие выполняется без необходимости поддержания первым актором процесса периода времени ожидания.
38. Система по п. 25, отличающаяся тем, что в результате оповещения первого актора о том, что сообщение не принято вторым актором, первый актор выполняет корректирующее действие в отношении этого сообщения.
39. Система по п. 38, отличающаяся тем, что корректирующее действие выполняется без ожидания истечения периода времени ожидания.
40. Система по п. 38, отличающаяся тем, что корректирующее действие выполняется без необходимости поддержания первым актором процесса периода времени ожидания.
RU2019103253A 2019-02-06 2019-02-06 Способ и система для передачи сообщения RU2746042C1 (ru)

Priority Applications (2)

Application Number Priority Date Filing Date Title
RU2019103253A RU2746042C1 (ru) 2019-02-06 2019-02-06 Способ и система для передачи сообщения
US16/776,011 US11184745B2 (en) 2019-02-06 2020-01-29 Actor system and method for transmitting a message from a first actor to a second actor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2019103253A RU2746042C1 (ru) 2019-02-06 2019-02-06 Способ и система для передачи сообщения

Publications (1)

Publication Number Publication Date
RU2746042C1 true RU2746042C1 (ru) 2021-04-06

Family

ID=71836873

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2019103253A RU2746042C1 (ru) 2019-02-06 2019-02-06 Способ и система для передачи сообщения

Country Status (2)

Country Link
US (1) US11184745B2 (ru)
RU (1) RU2746042C1 (ru)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2718215C2 (ru) 2018-09-14 2020-03-31 Общество С Ограниченной Ответственностью "Яндекс" Система обработки данных и способ обнаружения затора в системе обработки данных
RU2731321C2 (ru) 2018-09-14 2020-09-01 Общество С Ограниченной Ответственностью "Яндекс" Способ определения потенциальной неисправности запоминающего устройства
RU2714602C1 (ru) 2018-10-09 2020-02-18 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для обработки данных
RU2721235C2 (ru) 2018-10-09 2020-05-18 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для маршрутизации и выполнения транзакций
RU2711348C1 (ru) 2018-10-15 2020-01-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для обработки запросов в распределенной базе данных
RU2714373C1 (ru) 2018-12-13 2020-02-14 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования выполнения операций ввода/вывода
RU2749649C2 (ru) 2018-12-21 2021-06-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования обработки операций ввода/вывода
RU2720951C1 (ru) 2018-12-29 2020-05-15 Общество С Ограниченной Ответственностью "Яндекс" Способ и распределенная компьютерная система для обработки данных
RU2746042C1 (ru) * 2019-02-06 2021-04-06 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для передачи сообщения

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2273105C2 (ru) * 2001-04-30 2006-03-27 Нокиа Корпорейшн Система передачи сообщений
US20090300449A1 (en) * 2006-03-30 2009-12-03 Alibaba Group Holding Limited Method and System for Message Retransmission and Intersystem Message Delivery
US20100035581A1 (en) * 2008-08-11 2010-02-11 Sung Jun Park Data transmission method and user equipment for the same
US20120204265A1 (en) * 2002-03-08 2012-08-09 Mcafee, Inc. Systems and Methods For Message Threat Management
US20140304601A1 (en) * 2007-12-12 2014-10-09 Mogreet, Inc. Methods and systems for video messaging

Family Cites Families (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5278984A (en) 1990-12-19 1994-01-11 Bull Hn Information Systems Inc. Method for managing requests by specifying time intervals for transmitting a minimum number of messages for specific destinations and priority levels
US5640563A (en) 1992-01-31 1997-06-17 International Business Machines Corporation Multi-media computer operating system and method
US5247677A (en) 1992-05-22 1993-09-21 Apple Computer, Inc. Stochastic priority-based task scheduler
US5577202A (en) 1992-08-24 1996-11-19 Trw Inc. Message handling system for automated gateway between first and second handling systems wherein first envelope is added to a second envelope respectively without changing text
US5845316A (en) 1996-05-23 1998-12-01 Lucent Technologies Inc. Scheduling random I/O for data storage tape
US6023720A (en) 1998-02-09 2000-02-08 Matsushita Electric Industrial Co., Ltd. Simultaneous processing of read and write requests using optimized storage partitions for read and write request deadlines
US6256755B1 (en) 1998-10-19 2001-07-03 International Business Machines Corporation Apparatus and method for detecting defective NVRAM cells
US6851115B1 (en) 1999-01-05 2005-02-01 Sri International Software-based architecture for communication and cooperation among distributed electronic agents
IE20000203A1 (en) 1999-03-25 2001-02-21 Converge Net Technologies Inc Storage domain management system
US7774469B2 (en) 1999-03-26 2010-08-10 Massa Michael T Consistent cluster operational data in a server cluster using a quorum of replicas
US20030115410A1 (en) 1999-06-03 2003-06-19 Lucent Technologies Inc. Method and apparatus for improving file system response time
US6791992B1 (en) 1999-10-07 2004-09-14 The Regents Of The University Of California Earliest-deadline-first queuing cell switching architecture and method
US6757897B1 (en) 2000-02-29 2004-06-29 Cisco Technology, Inc. Apparatus and methods for scheduling and performing tasks
US7234126B2 (en) 2000-08-23 2007-06-19 Interuniversitair Microelektronica Centrum Task concurrency management design method
US6553472B2 (en) 2001-01-12 2003-04-22 Sun Microsystems, Inc. Method for programming clock delays, command delays, read command parameter delays, and write command parameter delays of a memory controller in a high performance microprocessor
US7177866B2 (en) 2001-03-16 2007-02-13 Gravic, Inc. Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only
RU2376635C2 (ru) 2002-10-23 2009-12-20 Закрытое акционерное общество "МедиаЛингва" Способ и система проведения транзакций в сети с использованием сетевых идентификаторов
US7073021B2 (en) 2003-03-21 2006-07-04 Seagate Technology Llc Semantically-aware, dynamic, window-based disc scheduling method and apparatus for better fulfilling application requirements
US6823347B2 (en) 2003-04-23 2004-11-23 Oracle International Corporation Propagating commit times
US7562362B1 (en) 2003-06-18 2009-07-14 Apple Inc. User control of task priority
US7206866B2 (en) 2003-08-20 2007-04-17 Microsoft Corporation Continuous media priority aware storage scheduler
US20050047425A1 (en) 2003-09-03 2005-03-03 Yonghe Liu Hierarchical scheduling for communications systems
US7698361B2 (en) 2003-12-31 2010-04-13 Microsoft Corporation Lightweight input/output protocol
US7474989B1 (en) 2005-03-17 2009-01-06 Rockwell Collins, Inc. Method and apparatus for failure prediction of an electronic assembly using life consumption and environmental monitoring
US20070002750A1 (en) 2005-07-01 2007-01-04 Nec Laboratories America, Inc. Generic Real Time Scheduler for Wireless Packet Data Systems
US8694668B2 (en) 2005-09-30 2014-04-08 Cleversafe, Inc. Streaming media software interface to a dispersed data storage network
US9015308B2 (en) 2006-01-31 2015-04-21 Hewlett-Packard Development Company, L.P. Multilayer distributed processing system
US7962563B2 (en) 2006-03-24 2011-06-14 International Business Machines Corporation System and method for managing storage system performance as a resource
US20070268516A1 (en) 2006-05-19 2007-11-22 Jamsheed Bugwadia Automated policy-based network device configuration and network deployment
US20070282660A1 (en) 2006-06-01 2007-12-06 Peter Forth Task management systems and methods
US8345561B2 (en) 2006-08-22 2013-01-01 Rueters America Inc. Time monitor
US7640412B2 (en) 2007-01-04 2009-12-29 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for improving the reliability of file systems
US20080320482A1 (en) 2007-06-20 2008-12-25 Dawson Christopher J Management of grid computing resources based on service level requirements
US8117621B2 (en) 2007-10-24 2012-02-14 International Business Machines Corporation Simulating a multi-queue scheduler using a single queue on a processor
US7971093B1 (en) 2008-01-16 2011-06-28 Network Appliance, Inc. Apparatus and method to proactively address hard disk drive inefficiency and failure
US8595302B2 (en) 2008-02-22 2013-11-26 Qualcomm Incorporated Method and apparatus for monitoring message status in an asynchronous mediated communication system
WO2009109349A1 (en) * 2008-03-03 2009-09-11 Panasonic Corporation Information exchange between gateways for route optimization with network-based mobility management
EP2110990B1 (en) 2008-04-16 2014-06-04 Nokia Solutions and Networks Oy Managing a network element
JP5223457B2 (ja) 2008-05-22 2013-06-26 富士通株式会社 分散トランザクションの2相コミットプロトコルにおけるインダウト状態の解決方法
US8037024B1 (en) 2008-06-04 2011-10-11 Google Inc. Data propagation in a multi-shard database system
US8850446B2 (en) 2008-06-19 2014-09-30 Freescale Semiconductor, Inc. System and method for using a task starvation indication to prevent starvations of tasks in a multiple processing entity system
US8966490B2 (en) 2008-06-19 2015-02-24 Freescale Semiconductor, Inc. System, method and computer program product for scheduling a processing entity task by a scheduler in response to a peripheral task completion indicator
US8407440B2 (en) 2008-07-08 2013-03-26 HGST Netherlands B.V. Techniques for scheduling requests for accessing storage devices using sliding windows
US8458451B2 (en) 2009-01-20 2013-06-04 New York University Database outsourcing with access privacy
US8145838B1 (en) 2009-03-10 2012-03-27 Netapp, Inc. Processing and distributing write logs of nodes of a cluster storage system
BRPI1009877A2 (pt) 2009-03-18 2019-04-16 Rockstar Bidco Lp métodos e sistemas para fornecer uma camada de rede lógica para entrega de dados de entrada/saída
US8254172B1 (en) 2009-09-30 2012-08-28 Western Digital Technologies, Inc. Wear leveling non-volatile semiconductor memory based on erase times and program times
KR101080845B1 (ko) 2009-10-30 2011-11-07 (주)지노게임즈 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템
JP2011123817A (ja) 2009-12-14 2011-06-23 Fujitsu Ltd ジョブ振分装置、ジョブ振分プログラム及びジョブ振分方法
US8396831B2 (en) 2009-12-18 2013-03-12 Microsoft Corporation Optimistic serializable snapshot isolation
KR101644800B1 (ko) 2010-01-07 2016-08-02 삼성전자주식회사 컴퓨팅 시스템 및 방법
CN102123040A (zh) 2010-01-08 2011-07-13 华为技术有限公司 数据配置的方法和装置
US8862617B2 (en) 2010-02-09 2014-10-14 Google Inc. System and method for replicating objects in a distributed storage system
US9547528B1 (en) 2010-03-29 2017-01-17 EMC IP Holding Company LLC Pizza scheduler
US8576713B2 (en) 2010-04-23 2013-11-05 Ixia Traffic generator with priority flow control
US20110314070A1 (en) 2010-06-18 2011-12-22 Microsoft Corporation Optimization of storage and transmission of data
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8930954B2 (en) 2010-08-10 2015-01-06 International Business Machines Corporation Scheduling parallel data tasks
US20120046807A1 (en) * 2010-08-18 2012-02-23 Snap-On Incorporated System and Method for Preventing Theft of Vehicle Diagnostic Equipment
US8862806B2 (en) 2010-08-20 2014-10-14 Samsung Electronics Co., Ltd Semiconductor storage device and method of throttling performance of the same
US8589625B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
US8732426B2 (en) 2010-09-15 2014-05-20 Pure Storage, Inc. Scheduling of reactive I/O operations in a storage environment
US20120102367A1 (en) 2010-10-26 2012-04-26 International Business Machines Corporation Scalable Prediction Failure Analysis For Memory Used In Modern Computers
US8806106B2 (en) 2010-11-12 2014-08-12 Seagate Technology Llc Estimating wear of non-volatile, solid state memory
US10997211B2 (en) 2010-12-23 2021-05-04 Mongodb, Inc. Systems and methods for database zone sharding and API integration
WO2012144985A1 (en) 2011-04-19 2012-10-26 Hewlett-Packard Development Company, L.P. Scheduling map and reduce tasks of jobs for execution according to performance goals
US9047331B2 (en) 2011-04-21 2015-06-02 International Business Machines Corporation Scalable row-store with consensus-based replication
US9172750B2 (en) 2011-04-26 2015-10-27 Brian J. Bulkowski Cluster-node load balancing in a distributed database system
US8924967B2 (en) 2011-04-28 2014-12-30 Vmware, Inc. Maintaining high availability of a group of virtual machines using heartbeat messages
US9251195B2 (en) 2011-07-05 2016-02-02 Murakumo Corporation Method of managing database
US8909996B2 (en) 2011-08-12 2014-12-09 Oracle International Corporation Utilizing multiple storage devices to reduce write latency for database logging
US9203900B2 (en) 2011-09-23 2015-12-01 Netapp, Inc. Storage area network attached clustered storage system
US8838539B1 (en) 2011-10-05 2014-09-16 Google Inc. Database replication
FR2981474B1 (fr) 2011-10-17 2013-12-27 Alstom Technology Ltd Procede de detection preventive d'une panne d'un appareil, programme d'ordinateur, installation et module de detection preventive d'une panne d'un appareil
US9395920B2 (en) 2011-11-17 2016-07-19 Mirosoft Technology Licensing, LLC Throttle disk I/O using disk drive simulation model
RU2494453C2 (ru) 2011-11-24 2013-09-27 Закрытое акционерное общество "Лаборатория Касперского" Способ распределенного выполнения задач компьютерной безопасности
CN104011667B (zh) 2011-12-22 2016-11-09 英特尔公司 用于滑动窗口数据访问的设备和方法
US8893140B2 (en) 2012-01-24 2014-11-18 Life Coded, Llc System and method for dynamically coordinating tasks, schedule planning, and workload management
US8930601B2 (en) 2012-02-27 2015-01-06 Arm Limited Transaction routing device and method for routing transactions in an integrated circuit
US9037826B1 (en) 2012-02-29 2015-05-19 Amazon Technologies, Inc. System for optimization of input/output from a storage array
US8996768B2 (en) 2012-05-31 2015-03-31 Sandisk Technologies Inc. Method and storage device for assessing execution of trim commands
CN103514037B (zh) 2012-06-21 2018-06-01 中兴通讯股份有限公司 任务调度处理方法及装置
CA2826964A1 (en) * 2012-09-10 2014-03-10 Jefferson Or Targeted messaging
GB2513532A (en) 2012-12-05 2014-11-05 Ibm Distributed transaction routing
US9400682B2 (en) 2012-12-06 2016-07-26 Hewlett Packard Enterprise Development Lp Ranking and scheduling of monitoring tasks
US9354813B1 (en) 2012-12-28 2016-05-31 Emc Corporation Data storage system modeling
US9086925B2 (en) 2013-01-18 2015-07-21 Nec Laboratories America, Inc. Methods of processing core selection for applications on manycore processors
KR101430077B1 (ko) 2013-03-04 2014-08-18 한국과학기술원 멀티프로세서 장치에서의 스케줄링 방법 및 멀티프로세서 장치에서 가상 마감시간을 이용하여 태스크에 대한 우선순위를 결정하는 방법
US20140282572A1 (en) 2013-03-14 2014-09-18 Samsung Electronics Co., Ltd. Task scheduling with precedence relationships in multicore systems
US9489443B1 (en) 2013-05-24 2016-11-08 Amazon Technologies, Inc. Scheduling of splits and moves of database partitions
US9282125B2 (en) * 2013-07-30 2016-03-08 Unify Gmbh & Co. Kg Apparatus and method for communications involving a legacy device
US9699017B1 (en) 2013-09-25 2017-07-04 Amazon Technologies, Inc. Dynamic utilization of bandwidth for a quorum-based distributed storage system
US10061791B2 (en) 2013-10-30 2018-08-28 Microsoft Technology Licensing, Llc Data management for connected devices
US20150128149A1 (en) 2013-11-01 2015-05-07 Theplatform, Llc Managing Fairness In Task Bundling Of A Queue
US9921557B2 (en) 2014-01-15 2018-03-20 SILVAIR Sp. z o.o. Automation system comprising a monitoring device and methods therefor
US9813516B2 (en) 2014-02-18 2017-11-07 Salesforce.Com, Inc. Transparent sharding of traffic across messaging brokers
WO2015149830A1 (en) 2014-03-31 2015-10-08 Huawei Technologies Co., Ltd. Event processing system
KR101896048B1 (ko) 2014-05-13 2018-09-06 다토미아 리서치 랩스 오위 분산된 보안 데이터 저장 및 스트리밍 매체 콘텐트의 전송
US9207979B1 (en) 2014-05-28 2015-12-08 Freescale Semiconductor, Inc. Explicit barrier scheduling mechanism for pipelining of stream processing algorithms
US9477521B2 (en) 2014-05-29 2016-10-25 Netapp, Inc. Method and system for scheduling repetitive tasks in O(1)
US9659079B2 (en) 2014-05-30 2017-05-23 Wal-Mart Stores, Inc. Shard determination logic for scalable order and inventory management architecture with a sharded transactional database
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
WO2016003412A1 (en) 2014-06-30 2016-01-07 Hewlett-Packard Development Company, L.P. Concurrent dead actor collection
US9639396B2 (en) 2014-09-16 2017-05-02 Nxp Usa, Inc. Starvation control in a data processing system
WO2016064312A1 (en) 2014-10-22 2016-04-28 Telefonaktiebolaget L M Ericsson (Publ) Coordinated scheduling between real-time processes
EP3231138A4 (en) 2014-12-14 2018-08-22 ZTE Corporation Techniques for operating a distributed communication network
US20160188376A1 (en) 2014-12-26 2016-06-30 Universidad De Santiago De Chile Push/Pull Parallelization for Elasticity and Load Balance in Distributed Stream Processing Engines
WO2016134380A1 (en) 2015-02-20 2016-08-25 Pristine Machine, LLC Method to split data operational function among system layers
US9965323B2 (en) 2015-03-11 2018-05-08 Western Digital Technologies, Inc. Task queues
US10191879B2 (en) 2015-03-31 2019-01-29 Veritas Technologies Llc System and method for creating snapshots in openflame environment
RU2714726C2 (ru) * 2015-06-30 2020-02-20 Закрытое акционерное общество "Лаборатория Касперского" Архитектура безопасности автоматизированных систем
US9569339B1 (en) 2015-07-23 2017-02-14 Amazon Technologies, Inc. Debugging in an actor-based system
GB2540809B (en) 2015-07-29 2017-12-13 Advanced Risc Mach Ltd Task scheduling
US20170109203A1 (en) 2015-10-15 2017-04-20 International Business Machines Corporation Task scheduling
US9811391B1 (en) 2016-03-04 2017-11-07 Color Genomics, Inc. Load balancing and conflict processing in workflow with task dependencies
US10572510B2 (en) 2015-12-21 2020-02-25 Sap Se Distributed database transaction protocol
CN106980532A (zh) 2016-01-18 2017-07-25 西安中兴新软件有限责任公司 一种作业调度方法和装置
CN105653365A (zh) 2016-02-22 2016-06-08 青岛海尔智能家电科技有限公司 任务处理方法及装置
RU2649788C1 (ru) 2016-06-16 2018-04-04 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для обработки запроса на транзакцию в распределенных системах обработки данных
KR102542375B1 (ko) 2016-08-19 2023-06-14 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그의 동작 방법
US10621157B2 (en) 2016-10-10 2020-04-14 AlphaPoint Immediate order book failover
US10664942B2 (en) 2016-10-21 2020-05-26 Advanced Micro Devices, Inc. Reconfigurable virtual graphics and compute processor pipeline
US10146599B2 (en) 2016-12-06 2018-12-04 Synchronoss Technologies, Inc. System and method for a generic actor system container application
US10503427B2 (en) 2017-03-10 2019-12-10 Pure Storage, Inc. Synchronously replicating datasets and other managed objects to cloud-based storage systems
US10387239B2 (en) 2017-04-10 2019-08-20 Western Digital Technologies, Inc. Detecting memory failures in the runtime environment
US10552215B1 (en) 2017-08-05 2020-02-04 Jia Xu System and method of handling real-time process overruns on a multiprocessor
US10572323B1 (en) 2017-10-24 2020-02-25 EMC IP Holding Company LLC Predicting physical storage unit health
US10963330B2 (en) 2017-11-24 2021-03-30 Microsoft Technology Licensing, Llc Correlating failures with performance in application telemetry data
US10810268B2 (en) 2017-12-06 2020-10-20 Futurewei Technologies, Inc. High-throughput distributed transaction management for globally consistent sharded OLTP system and method of implementing
US11018850B2 (en) 2017-12-26 2021-05-25 Akamai Technologies, Inc. Concurrent transaction processing in a high performance distributed system of record
US11120006B2 (en) 2018-06-21 2021-09-14 Amazon Technologies, Inc. Ordering transaction requests in a distributed database according to an independently assigned sequence
US11093908B2 (en) 2018-08-30 2021-08-17 Mastercard International Incorporated Routing transactions to a priority processing network based on routing rules
RU2746042C1 (ru) * 2019-02-06 2021-04-06 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для передачи сообщения

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2273105C2 (ru) * 2001-04-30 2006-03-27 Нокиа Корпорейшн Система передачи сообщений
US20120204265A1 (en) * 2002-03-08 2012-08-09 Mcafee, Inc. Systems and Methods For Message Threat Management
US20090300449A1 (en) * 2006-03-30 2009-12-03 Alibaba Group Holding Limited Method and System for Message Retransmission and Intersystem Message Delivery
US20140304601A1 (en) * 2007-12-12 2014-10-09 Mogreet, Inc. Methods and systems for video messaging
US20100035581A1 (en) * 2008-08-11 2010-02-11 Sung Jun Park Data transmission method and user equipment for the same

Also Published As

Publication number Publication date
US20200252761A1 (en) 2020-08-06
US11184745B2 (en) 2021-11-23

Similar Documents

Publication Publication Date Title
RU2746042C1 (ru) Способ и система для передачи сообщения
US10983880B2 (en) Role designation in a high availability node
EP2659375B1 (en) Non-disruptive failover of rdma connection
US8151062B2 (en) Consistency models in a distributed store
EP2215773B1 (en) Method and system for handling a failover in a distributed environment that uses session affinity
US8108623B2 (en) Poll based cache event notifications in a distributed cache
US8930527B2 (en) High availability enabler
US20150180813A1 (en) Message delivery in messaging networks
US10819641B2 (en) Highly available servers
JP2010509677A (ja) 分散型サーバーシステムにおいてバックアップマネージャを転送するメッセージ
US20230289076A1 (en) Performing various operations at the granularity of a consistency group within a cross-site storage solution
RU2721235C2 (ru) Способ и система для маршрутизации и выполнения транзакций
US20160011929A1 (en) Methods for facilitating high availability storage services in virtualized cloud environments and devices thereof
US9432445B1 (en) System and method of maintaining an enqueue rate of data messages into a set of queues
RU2714373C1 (ru) Способ и система для планирования выполнения операций ввода/вывода
RU2720951C1 (ru) Способ и распределенная компьютерная система для обработки данных
US9330709B2 (en) Tape library string request management
RU2749649C2 (ru) Способ и система для планирования обработки операций ввода/вывода
RU2718215C2 (ru) Система обработки данных и способ обнаружения затора в системе обработки данных
US20080276255A1 (en) Alternate Communication Path Between ESSNI Server and CEC
RU2714602C1 (ru) Способ и система для обработки данных
RU2714219C1 (ru) Способ и система для планирования передачи операций ввода/вывода
US11947431B1 (en) Replication data facility failure detection and failover automation
CN114928654A (zh) 节点状态监测方法、装置、设备、存储介质和程序产品
JP2019522436A (ja) 通信装置、システム、ロールバック方法及びプログラム