СПОСОБ И СИСТЕМА ПЕРЕДАЧИ ДАННЫХ МЕЖДУ НОДАМИ БЕЗ ЛИДЕРА
METHOD AND SYSTEM FOR DATA TRANSMISSION BETWEEN NODES WITHOUT LEADERS

Область техники
[01] Настоящее техническое решение относится к системам и способам передачи данных в распределенных системах. В частности, к системам и способам, задачей которых является решение проблем выполнения задач в распределенных системах без выбора лидера.
Уровень техники
[02] Распределенные системы, так же известные как распределенная обработка данных, относятся к набору автономных вычислительных элементов или узлов в программном обеспечении, включающем в себя сеть, для обеспечения вычислений с помощью передачи данных и координации действий посредством обмена сообщениями. Распределенные системы дают возможность более эффективного выполнения задач благодаря своему размеру и мощности, которые превосходят комбинацию независимых систем. Распределенные системы применяются в множестве различных областей, например, среди прочего, в телекоммуникационных сетях, управлении технологическим процессом в реальном времени и параллельных вычислениях. Распределенные системы могут иметь различные архитектуры, например, архитектуру клиент-сервер, трехуровневую архитектуру, n-уровневую архитектуру, архитектуру равноправных узлов, неполносвязную и полносвязную архитектуру.
[03] Консенсус в контексте распределенных систем является задачей организации согласия всех процессов в сети с конкретным значением в процессе голосования. Значение обычно предлагается по меньшей мере одного из узлов в сети, а остальные узлы должны подать свой голос за согласие на то, чтобы делать что-то или не делать. Достижение консенсуса важно при выборе координатора, причем этот выбор также называется избранием лидера. Лидер в контексте распределенных систем - это единственный процесс или узел, обычно специализированный как организатор среди узлов распределенной системы. Узел-лидер может, например, обрабатывать клиентские запросы и разрешать конфликты между узлами в распределенной системе.
[04] Одной из задач распределенных систем является работа с ошибками, возникающими из-за сложности и возможного большого числа компонентов при взаимодействиях. В итоге надежность является одной из самых востребованных характеристик распределенных систем. Ошибки в распределенных системах делятся на категории: ошибки аппаратного обеспечения и ошибки программного обеспечения. Существует несколько типов ошибок: ошибки сбоев, аварийная остановки, ошибки пропускания, ошибки сети, ошибки нарушения связности сети, ошибки синхронизации, «византийские» ошибки. Другие желательные характеристики распределенных систем включают в себя распределение ресурсов, открытость, параллельность, масштабируемость, устойчивость к ошибкам, прозрачность.
[05] Для работы с такими ошибками были разработаны различные способы и алгоритмы. Известные алгоритмы, например, Paxos и Raft, используются для решения проблем согласованности в сети с ненадежными процессорами. В этих способах происходит выбор лидера из множества узлов. Узел-лидер является ответственным за обработку клиентских запросов и разрешение конфликтов между узлами. Такие системы обычно работают синхронно и требуют лидера или виртуального лидера.
Раскрытие
[06] Настоящее техническое решение может устранить, по меньшей мере частично, недостатки, присутствующие в уровне техники, связанные с выполнением процедуры подтверждения действия в распределенной системе без избрания лидера.
[07] Одним объектом настоящего технического решения является способ осуществления процедуры подтверждения действия в распределенной компьютерной системе, причем распределенная компьютерная система обладает множеством узлов; процедура подтверждения действия является независимо выполняемой на каждом узле из множества узлов; каждый узел из множества узлов осведомлен о присутствии других узлов в пределах распределенной системы, и каждый узел из множества узлов выполнен с возможностью получения клиентского сообщения от клиентского устройства, которое функционально подключено к распределенной компьютерной системе по сети передачи данных; конкретный узел из множества узлов получает первое клиентское сообщение от клиентского устройства, причем первое клиентское сообщение включает в себя запрос на выполнение распределенной компьютерной системой первого действия, и конкретный узел из множества узлов передает первое статусное сообщение, включая указание первого действия, остальным узлам из множества узлов, причем передача первого статусного сообщения является первой частью процедуры подтверждения действия; способ включает в себя: получение данным узлом из множества узлов от первой подгруппы множества узлов первого множества ответных сообщений, включающего в себя соответствующий ответ на первое статусное сообщение от каждого узла из первой подгруппы множества узлов; в ответ на то, что число узлов в первой подгруппе множества узлов по меньшей мере равно предварительно определенному порогу, выполнение данным узлом второй части процедуры подтверждения действия, причем вторая часть процедуры подтверждения действия следует за первой частью, выполнение включает в себя отправку данным узлом по меньшей мере первой подгруппе множества узлов второго статусного сообщения, причем отправка второго статусного сообщения является частью второй части процедуры подтверждения действия.
[08] В некоторых вариантах осуществления первая часть процедуры подтверждения действия дополнительно включает в себя: получение данным узлом из множества узлов от конкретного узла первого статусного сообщения, включающего в себя указание первого действия; и отправку данным узлом другой подгруппе множества узлов ответа на первое статусное сообщение.
[09] В некоторых вариантах осуществления процедура подтверждения действия дополнительно включает в себя третью часть процедуры подтверждения действия, причем третья часть процедуры подтверждения действия следует за второй частью, способ дополнительно включает в себя: получение данным узлом от множества узлов из второй подгруппы множества узлов второго множества сообщений, включающего в себя соответствующее второе статусное сообщение от каждого узла из второй подгруппы множества узлов; в ответ на то, что число узлов во второй подгруппе множества узлов по меньшей мере равно предварительно определенному порогу, выполнение данным узлом третьей части процедуры подтверждения действия, причем выполнение включает в себя отправку данным узлом по меньшей мере второй подгруппе множества узлов третьего статусного сообщения, причем отправка третьего статусного сообщения является частью третьей части процедуры подтверждения действия.
[10] В некоторых вариантах осуществления способ дополнительно включает в себя: получение данным узлом из множества узлов от третьей подгруппы множества узлов третьего множества сообщений, включающего в себя соответствующее третье статусное сообщение от каждого узла из третьей подгруппы множества узлов; и в ответ на то, что число узлов в пределах третьей подгруппы множества узлов по меньшей мере равно предварительно определенному порогу, выполнение данным узлом по меньшей мере части первого действия в соответствии с предварительно определенной процедурой.
[11] В некоторых вариантах осуществления способ дополнительно включает в себя возвращение данным узлом результата первого действия конкретному узлу, причем результат первого действия агрегируется конкретным узлом с соответствующими результатами первого действия третьей подгруппы множества узлов и передается обратно на клиентское устройство.
[12] В некоторых вариантах осуществления настоящего технического решения другая подгруппа, первая подгруппа, вторая подгруппа и третья подгруппа включают в себя те же самые узлы из множества узлов.
[13] В некоторых вариантах осуществления настоящего технического решения способ дополнительно включает в себя отслеживание параметра ожидания данным узлом, причем параметр ожидания связан с первой частью процедуры подтверждения действия, и в ответ на превышение параметром ожидания первого предварительно определенного порога указанное выполнение данным узлом второй части процедуры подтверждения действия выполняется без ожидания дополнительных ответных сообщений.
[14] В некоторых вариантах осуществления настоящего технического решения способ дополнительно включает в себя отслеживание параметра ожидания данным узлом, причем параметр ожидания дополнительно связан со второй частью процедуры подтверждения действия и в ответ на превышение параметром ожидания второго предварительно определенного порога указанное выполнение данным узлом третьей части процедуры подтверждения действия выполняется без ожидания дополнительных ответных сообщений.
[15] В некоторых вариантах осуществления настоящего технического решения способ дополнительно включает в себя отслеживание параметра ожидания данным узлом, причем параметр ожидания дополнительно связан с третьей частью процедуры подтверждения действия и в ответ на превышение параметром ожидания третьего предварительно определенного порога указанное выполнение данным узлом первого действия выполняется без ожидания дополнительных ответных сообщений.
[16] В некоторых вариантах осуществления предварительно определенный порог является по меньшей мере минимумом из (n/2) узлов, где n - число узлов в пределах множества узлов.
[17] В некоторых вариантах осуществления каждый узел из множества узлов связан с соответствующим уникальным ID, идентификатором (от англ. сокр. ID, identificator; смотри, например, словарь http://multitran.ru), и каждый узел из множества узлов хранит указание соответствующего уникального ID каждого другого узла из множества узлов, что таким образом позволяет каждому узлу из множества узлов быть осведомленной о присутствии каждого другого узла в пределах распределенной компьютерной системы.
[18] В некоторых вариантах осуществления данный узел из множества узлов включает в себя память, и способ дополнительно включает в себя выполнение данным узлом из множества узлов перед соответствующим выполнением первой части процедуры подтверждения действия, второй части процедуры подтверждения действия и третьей части процедуры подтверждения действия: сохранения первого статусного сообщения в памяти; сохранения первого множества сообщений в памяти; сохранения второго множества сообщений в памяти; сохранения третьего множества сообщений в памяти.
[19] В некоторых вариантах осуществления настоящего технического решения способ дополнительно включает в себя для другого узла из множества узлов: получение другим узлом из множества узлов от конкретного узла первого статусного сообщения, включающего в себя указание первого действия; и отправку другим узлом четвертой подгруппе множества узлов ответа на первое статусное сообщение, причем ответ на первое статусное сообщение является частью первой части процедуры подтверждения действия; получение другим узлом из множества узлов от четвертой подгруппы множества узлов четвертого множества сообщений, включающего в себя соответствующий ответ на первое статусное сообщение от каждым узлом из третьей подгруппы множества узлов; в ответ на то, что число узлов в пределах четвертой подгруппы множества узлов по меньшей мере равно предварительно определенному порогу, выполнение другим узлом второй части процедуры подтверждения действия, причем вторая часть процедуры подтверждения действия следует за первой частью, а выполнение включает в себя отправку другим узлом по меньшей мере четвертой подгруппе множества узлов второго статусного сообщения, причем отправка второго статусного сообщения является частью второй части процедуры подтверждения действия; получение другим узлом из множества узлов от четвертой подгруппы множества узлов пятого множества сообщений, включающего в себя соответствующие вторые статусные сообщения от каждым узлом из пятой подгруппы множества узлов; в ответ на то, что число узлов в пределах пятой подгруппы множества узлов по меньшей мере равно предварительно определенному порогу, выполнение другим узлом третьей части процедуры подтверждения действия, причем выполнение включает в себя отправку другим узлом по меньшей мере пятой подгруппе множества узлов третьего статусного сообщения, причем отправка третьего статусного сообщения является частью третьей части процедуры подтверждения действия; получение другим узлом из множества узлов от шестой подгруппы множества узлов шестого множества сообщений, включающего в себя соответствующие третьи статусные сообщения от каждого узла из шестой подгруппы множества узлов; и выполнение другим узлом по меньшей мере части первого действия в соответствии с предварительно определенной процедурой.
[20] Другим объектом настоящего технического решения является распределенная компьютерная система для осуществления процедуры подтверждения действия по меньшей мере для клиентского устройства, функционально подключенного к распределенной компьютерной системе, причем распределенная компьютерная система включает в себя: множество узлов; причем каждый узел из множества узлов включает в себя: сетевой интерфейс, причем сетевой интерфейс взаимно связывает каждый узел из множества узлов с каждым другим узлом из множества узлов по сети передачи данных; носитель информации и процессор, соединенный с носителем информации, причем процессор выполнен с возможностью получать доступ к машиночитаемым командам, которые, при их исполнении, инициирует осуществление процессором, после того, как конкретный узел из множества узлов получает первое клиентское сообщение от клиентского устройства, причем первое клиентское сообщение включает в себя запрос на выполнение распределенной компьютерной системой первого действия, и конкретный узел из множества узлов передает первое статусное сообщение, включая указание первого действия, остальным узлам из множества узлов, причем передача первого статусного сообщения является первой частью процедуры подтверждения действия: получение по сети передачи данных данным узлом из множества узлов от первой подгруппы множества узлов первого множества ответных сообщений, включающего в себя соответствующий ответ на первое статусное сообщение от каждым узлом из первой подгруппы множества узлов; в ответ на то, что число узлов в первой подгруппе множества узлов по меньшей мере равно предварительно определенному порогу, выполнение данным узлом второй части процедуры подтверждения действия, причем вторая часть процедуры подтверждения действия следует за первой частью, выполнение включает в себя отправку по сети передачи данных данным узлом по меньшей мере первой подгруппе множества узлов второго статусного сообщения, причем отправка второго статусного сообщения является частью второй части процедуры подтверждения действия.
[21] В контексте настоящего описания, если четко не указано иное, «электронное устройство», «пользовательское устройство», «сервер», «удаленный сервер» и «компьютерная система» подразумевают под собой аппаратное и/или системное обеспечение, подходящее к решению соответствующей задачи. Таким образом, некоторые неограничивающие примеры аппаратного и/или программного обеспечения включают в себя компьютеры (серверы, настольные компьютеры, ноутбуки, нетбуки и так далее), смартфоны, планшеты, сетевое оборудование (маршрутизаторы, коммутаторы, шлюзы и так далее) и/или их комбинацию.
[22] В контексте настоящего описания, если четко не указано иное, «машиночитаемый носитель» и «память» подразумевает под собой носитель абсолютно любого типа и характера, и примеры, не ограничивающие настоящее техническое решение, включают в себя ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB-ключи, флеш-карты, твердотельные накопители и накопители на магнитной ленте.
[23] В контексте настоящего описания, если четко не указано иное, «указание» информационного элемента может представлять собой сам информационный элемент или указатель, отсылку, ссылку или другой косвенный способ, позволяющий получателю указания найти сеть, память, базу данных или другой машиночитаемый носитель, из которого может быть извлечен информационный элемент. Например, указание файла может включать в себя сам файл (т.е. его содержимое), или же оно может являться уникальным дескриптором файла, идентифицирующим файл по отношению к конкретной файловой системе, или какими-то другими средствами передавать получателю указание на сетевую папку, адрес памяти, таблицу в базе данных или другое место, в котором можно получить доступ к файлу. Как будет понятно специалистам в данной области техники, степень точности, необходимая для такого указания, зависит от степени первичного понимания того, как должна быть интерпретирована информация, которой обмениваются получатель и отправитель указания. Например, если до передачи данных между отправителем и получателем понятно, что указание информационного элемента принимает вид ключа базы данных для записи в конкретной таблице заранее установленной базы данных, включающей в себя информационный элемент, то передача ключа базы данных - это все, что необходимо для эффективной передачи информационного элемента получателю, несмотря на то, что сам по себе информационный элемент не передавался между отправителем и получателем указания.
[24] В контексте настоящего описания, если конкретно не указано иное, слова «первый», «второй», «третий» и т.д. используются в виде прилагательных исключительно для того, чтобы отличать существительные, к которым они относятся, друг от друга, а не для целей описания какой-либо конкретной взаимосвязи между этими существительными. Так, например, следует иметь в виду, что использование терминов «первый узел» и «третий узел» не подразумевает какого-либо порядка, отнесения к определенному типу, хронологии, иерархии или ранжирования (например) узлов/между узлами, равно как и их использование (само по себе) не предполагает, что некая «второй узел» обязательно должна существовать в той или иной ситуации. В дальнейшем, как указано здесь в других контекстах, упоминание «первого» элемента и «второго» элемента не исключает возможности того, что это один и тот же фактический реальный элемент. Так, например, в некоторых случаях, «первый» узед и «вторый» узел могут являться одним и тем же программным и/или аппаратным обеспечением, а в других случаях они могут являться разным программным и/или аппаратным обеспечением.
[25] Каждый вариант осуществления настоящего технического решения преследует по меньшей мере одну из вышеупомянутых целей и/или объектов. Следует иметь в виду, что некоторые объекты данного технического решения, полученные в результате попыток достичь вышеупомянутой цели, могут удовлетворять и другим целям, отдельно не указанным здесь.
[26] Дополнительные и/или альтернативные характеристики, аспекты и преимущества вариантов осуществления настоящего технического решения станут очевидными из последующего описания, прилагаемых чертежей и прилагаемой формулы изобретения.
Краткое описание чертежей
[27] Для лучшего понимания настоящего технического решения, а также других его аспектов и характерных черт, сделана ссылка на следующее описание, которое должно использоваться в сочетании с прилагаемыми чертежами, где:
[28] на ФИГ. 1 представлена схема компьютерной системы, которая подходит для реализации настоящего технического решения, и/или которая используется в сочетании с вариантами осуществления настоящего технического решения;
[29] на ФИГ. 2 представлена схема компьютерного способа общей процедуры подтверждения действия в распределенной системе с тремя узлами, как предусматривается некоторыми вариантами осуществления настоящего технического решения;
[30] на ФИГ. 3 представлена схема компьютерного способа процедуры подтверждения действия в распределенной системе с тремя узлами, и условием ошибки узла, как предусматривается некоторыми вариантами осуществления настоящего технического решения;
[31] на ФИГ. 4 представлена схема компьютерного способа процедуры подтверждения действия в распределенной системе с тремя узлами, и условием ошибки линии передачи данных, как предусматривается некоторыми вариантами осуществления настоящего технического решения.
Осуществление
[32] Все примеры и используемые здесь условные конструкции предназначены, главным образом, для того, чтобы помочь читателю понять принципы настоящего технического решения, а не для установления границ его объема.
[33] Кроме того, для ясности в понимании, следующее описание касается достаточно упрощенных вариантов осуществления настоящего технического решения. Как будет понятно специалисту в данной области техники, многие варианты осуществления настоящего технического решения будут обладать гораздо большей сложностью.
[34] Некоторые полезные примеры модификаций настоящего технического решения также могут быть охвачены нижеследующим описанием. Целью этого является также исключительно помощь в понимании, а не определение объема и границ настоящего технического решения. Эти модификации не представляют собой исчерпывающего списка настоящего технического решения. Кроме того, те случаи, в которых не были представлены примеры модификаций, не должны интерпретироваться как то, что никакие модификации невозможны, и/или что то, что было описано, является единственным вариантом осуществления этого элемента настоящего технического решения.
[35] Более того, все заявленные здесь принципы, аспекты и варианты осуществления настоящего технического решения, равно как и конкретные их примеры, предназначены для обозначения их структурных и функциональных основ. Таким образом, например, специалистами в данной области техники будет очевидно, что представленные здесь блок-схемы представляют собой концептуальные иллюстративные схемы, отражающие принципы настоящего технического решения. Аналогично, любые блок-схемы, диаграммы, псевдокоды и т.п.представляют собой различные процессы, которые могут быть представлены на машиночитаемом носителе и, таким образом, использоваться компьютером или процессором, вне зависимости от того, показан явно подобный компьютер или процессор или нет.
[36] Функции различных элементов, показанных на фигурах, включая функциональный блок, обозначенный как «процессор» или «графический процессор», могут быть обеспечены с помощью специализированного аппаратного обеспечения или же аппаратного обеспечения, способного использовать подходящее программное обеспечение. Когда речь идет о процессоре, функции могут обеспечиваться одним специализированным процессором, одним общим процессором или множеством индивидуальных процессоров, причем некоторые из них могут являться общими. В некоторых вариантах осуществления настоящего технического решения процессор может являться универсальным процессором, например, центральным процессором (CPU) или специализированным для конкретной цели процессором, например, графическим процессором (GPU). Более того, использование термина «процессор» или «контроллер» не должно подразумевать исключительно аппаратное обеспечение, способное поддерживать работу программного обеспечения, и может включать в себя, без установления ограничений, цифровой сигнальный процессор (DSP), сетевой процессор, интегральную схему специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA), постоянное запоминающее устройство (ПЗУ) для хранения программного обеспечения, оперативное запоминающее устройство (ОЗУ) и энергонезависимое запоминающее устройство. Также в это может быть включено другое аппаратное обеспечение, обычное и/или специальное.
[37] Программные модули или простые модули, представляющие собой программное обеспечение, могут быть использованы здесь в комбинации с элементами блок-схемы или другими элементами, которые указывают на выполнение этапов процесса и/или текстовое описание. Подобные модели могут быть выполнены на аппаратном обеспечении, показанном напрямую или косвенно.
[38] В соответствии с настоящим техническим решением «множество узлов» может подразумевать по меньшей мере минимум три узла в распределенной системе. Конкретный узел может подразумевать под собой узел в распределенной системе, соединенную с клиентом и получающую клиентское сообщение. Данный узел может подразумевать под собой любой узел из множества узлов в распределенной системе, включая конкретный узел. Другой узел может подразумевать под собой каждый узел в распределенной системе, не получившую клиентский запрос. Кроме того, множество узлов может быть разделено (по меньшей мере) на три группы, в общем случае называющиеся в настоящем описании «подгруппами». Первая подгруппа множества узлов, вторая подгруппа множества узлов и третья подгруппа множества узлов могут быть использованы для определения узлов, не перешедших от одного шага к последующему. Первая подгруппа множества узлов может быть истинной или неистинной подгруппой множества узлов. Вторая подгруппа множества узлов может быть истинной или неистинной подгруппой первой подгруппы множества узлов. Третья подгруппа множества узлов может быть истинной или неистинной подгруппой второй подгруппы множества узлов. Первое множество сообщений может относиться к сообщениям, отправленным первой подгруппой множества узлов. Второе множество сообщений может относиться к сообщениям, отправленным второй подгруппой множества узлов. Третье множество сообщений может относиться к сообщениям, отправленным третьей подгруппой множества нод. В сценарии, в котором первая подгруппа множества узлов, вторая подгруппа множества узлов и/или третья подгруппа множества узлов включает в себя одну единственную узлов, первое множество сообщений, второе множество сообщений и/или третье множество сообщений может быть соответственно единственным сообщением. Предварительно определенное число узлов, от которых данный узел должен получить сообщения для продолжения процедуры подтверждения действия, может быть по меньшей мере равно минимуму в (n/2) узлов, где n - число множества узлов. В некоторых вариантах осуществления настоящего технического решения предварительно определенное число узлов может быть иным.
[39] С учетом этих примечаний далее будут рассмотрены некоторые варианты осуществления аспектов настоящего технического решения, не ограничивающие его объем.
[40] На Фиг. 1 представлена схема среды 100, подходящей для использования совместно с некоторыми вариантами осуществления настоящего технического решения. Система 100 может включать в себя, среди прочего, клиентское устройство 102, соединенное с распределенной системой 104 линией 103 передачи данных по сети 106 передачи данных, причем распределенная система 104 включает в себя первый узел 108, второй узел 110 и третий узел 112, связанные друг с другом линиями 107 передачи данных.
[41] В настоящем контексте первый узел 108, второй узел 110 и третий узел 112 являются примерами множества узлов (не изображено), потенциально представляя систему 100. И первый узел 108, и второй узел 110, и третий узел 112 являются примером данного узла в пределах системы 100. Первый узел 108 - это пример конкретного узла (не изображен). Второй узел 110 и третий узел 112 - это примеры другого узла (не изображена). Первый узел 108 и третий узел 112 - это примеры первой подгруппы множества нод (не изображено). Первый узел 108 и третий узел 112 будут использованы как примеры второй подгруппы множества узлов. Первый узел 108 и третий узел 112 будут использованы как примеры третьей подгруппы множества узлов. В текущем примере и первая подгруппа множества узлов, и вторая подгруппа множества узлов, и третья подгруппа множества узлов может иметь предварительно определенный порог минимума (3/2)≈1 узел.
[42] И клиентское устройство 102, и первый узел 108, и второй узел 110, и третий узел 112 системы 100 могут находиться географически в одном месте, например, в компьютерном кластере или сетке, или могут быть географически распределены по различным устройствам и связаны по сети 106 передачи данных и другим сетям передачи данных (не изображены), например, интернетом. В некоторых вариантах осуществления настоящего технического решения система 100 может быть выполнена как облачный сервер. В других вариантах осуществления настоящего технического решения система 100 может быть выполнена как сеть с равноправными узлами. В других вариантах осуществления настоящего технического решения сеть 106 передачи данных может быть реализована иначе - в виде глобальной сети связи, локальной сети связи, частной сети связи и т.п.Возможны различные реализации системы 100, как будет понятно специалисту в данной области техники.
[43] Варианты осуществления клиентского устройства 102 никак конкретно не ограничены, но, в качестве примера, клиентское устройство 102 может взаимодействовать с распределенной системой 104, передавая/получая данные к/от распределенной системы 104 по сети 106 передачи данных с помощью линии 103 передачи данных. Клиентское устройство 102 может включать в себя среди прочего внутренние аппаратные компоненты, такие как один или несколько одно- или многоядерных процессоров, которые все вместе упоминаются здесь как процессор (не изображен), ОЗУ (не изображено), и сетевой интерфейс (не изображен) для обмена данными с распределенной системой 104. В некоторых вариантах осуществления настоящего технического решения клиентское устройство 102 может быть запрограммировано на предоставление команд и запросов распределенной системе 104. В контексте настоящего описания «клиент» или «клиентское устройство» подразумевает под собой элемент, который принимает сервис от распределенной системы 104, и представляет собой любое аппаратное устройство, способное работать с программным обеспечением, подходящим к решению соответствующей задачи. Таким образом, примерами клиентских устройств 102 (среди прочего) могут служить персональные компьютеры (настольные компьютеры, ноутбуки, нетбуки и т.п.) смартфоны, планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы. Следует иметь в виду, что устройство, ведущее себя как клиентское устройство 102 в настоящем контексте, может вести себя как узел или сервер по отношению к другим клиентским устройствам (не изображены). В некоторых вариантах осуществления настоящего технического решения клиентское устройство 102 может быть другой распределенной системой (не изображено). В других вариантах осуществления настоящего технического решения клиентское устройство 102 может быть на том же самом устройстве, что и распределенная система 104 или любая из первого узла 108, второго узла 110, третьего узла 112. Клиентское устройство 102 не должно быть детально осведомлено о том, как сервис предоставляется распределенной системой 104 или о том, как сохраняются или определяются данные, которые оно получает. Использование выражения «клиентское устройство» не исключает возможности использования множества клиентских устройств для получения/отправки, выполнения или инициирования выполнения любой задачи или запроса, или же последствий любой задачи или запроса, или же этапов любого вышеописанного способа.
[44] В варианте осуществления настоящего технического решения, представленном здесь, клиентское устройство соединено с распределенной системой 104 с помощью линии 103 передачи данных по сети 106 передачи данных. Реализация линии 106 передачи данных никак конкретно не ограничена и будет зависеть от того, какое клиентское устройство 102 и/или распределенная система 104 используется. В некоторых вариантах осуществления настоящего технического решения клиентское устройство 102 может быть напрямую связано по меньшей мере либо с первым узлом 108, либо со вторым узлом 110, либо с третьим узлом 112. Исключительно как пример и без введения каких-либо ограничений в тех вариантах осуществления настоящего технического решения, где клиентское устройство 102 представляет собой портативный компьютер или ПК, линия 103 передачи данных может быть как беспроводной (беспроводной интернет Wireless Fidelity или WiFi, Bluetooth и т.п) так и проводной (соединение на основе сети Ethernet). В других вариантах осуществления настоящего технического решения клиентское устройство может представлять собой беспроводное устройство связи (например, смартфон), и линия 103 передачи данных может представлять собой беспроводную сеть передачи данных (например, среди прочего, линию передачи данных 3G, линию передачи данных 4G, беспроводной интернет Wireless Fidelity или коротко WiFi, Bluetooth и т.п.).
[45] Важно иметь в виду, что варианты реализации клиентского устройства 102, линии 103 передачи данных, сети 106 передачи данных и распределенной системы 104 приведены исключительно для наглядности. Таким образом, специалисты в данной области техники смогут понять подробности других конкретных вариантов осуществления клиентского устройства 102, линии 103 передачи данных, сети 106 передачи данных и распределенной системы 104. То есть представленные здесь примеры не ограничивают объем настоящего технического решения.
[46] В контексте настоящего технического решения термины «распределенная сеть», «распределенная система» и «распределенные вычисления» подразумевают под собой компоненты, которые обмениваются данными и координируют свои действия с помощью передачи сообщений для достижения общей цели. Распределенная система 104 может быть расположена географически в одном месте, например, в компьютерном кластере или сетке, или может быть географически распределена по различным устройствам и связана линиями 107 передачи данных по сети передачи данных (не изображена), например, по интернету. В изображенных вариантах осуществления настоящего технического решения, не ограничивающих его объем, распределенная система 104 включает в себя первый узел 108, второй узел 110 и третий узел 112. Распределенная система 104 может быть выполнена с возможностью выполнять задачи последовательно, одновременно параллельно или с помощью любой парадигмы расчетов, которая даст распределенной системе 104 возможность выполнять задачи, запрошенные клиентским устройством 102, как будет понятно специалистам в данной области техники. В общем случае и первый узел 108, и второй узел 110, и третий узел 112 распределенной системы 104 могут быть осведомлены о присутствии каждой из них в пределах системы 100. В некоторых вариантах осуществления настоящего технического решения и первый узел 108, и второй узел 110, и третий узел 112 могут быть связаны с соответствующим уникальным ID и могут хранить соответствующий уникальный ID каждой другой ноды из первого узла 108, второго узла 110, и третьего узла 112 распределенной системы 104, таким образом давая возможность и первому узлу 108, и второму узлу 110 и третьему узлу 112 быть осведомленными о присутствии друг друга в пределах распределенной системы 104. В некоторых вариантах осуществления настоящего технического решения и первый узел 108, и второй узел 110, и третий узел 112 могут иметь IP-адреса друг друга. В некоторых вариантах осуществления настоящего технического решения первый узел 108, второй узел 110, и третий узел 112 распределенной системы 104 могут использовать общую память (не изображена), общую базу данных (не изображена) или делить друг с другом любой другой источник (не изображен).
[47] Варианты осуществления первого узла 108, второго узла 110, и третьего узла 112 широко известны среди специалистов в данной области техники. Тем не менее, вкратце, и первый узел 108, и второй узел 110, и третий узел 112 могут содержать соответствующий интерфейс связи (не показан), который настроен и выполнен с возможностью устанавливать соединение друг с другом и с различными элементами (например, клиентским устройством 102 и другими устройствами, потенциально присоединенными к распределенной системе 104) через линии 107 передачи данных. В контексте настоящего описания «нода» может подразумевать под собой компьютерную программу, работающую на соответствующем оборудовании, которая способна получать и передавать запросы (например, от клиентских устройств или других нод) по сети 106 передачи данных и выполнять эти запросы или инициировать выполнение этих запросов. И первый узел 108, и второй узел 110, и третий узел 112 могут иметь способность сохранять данные в энергозависимом запоминающем устройстве и в устойчивом режиме, и могут реализовать модуль синхронизации или часы для мониторинга сообщений. В некоторых вариантах осуществления настоящего технического решения и первый узел 108, и второй узел 110, и третий узел 112 могут иметь соответствующие базы данных (не изображены). В контексте настоящего описания «база данных» подразумевает под собой любой структурированный набор данных, не зависящий от конкретной структуры, программного обеспечения по управлению базой данных, аппаратного обеспечения компьютера, на котором данные хранятся, используются или иным образом оказываются доступны для использования. База данных может находиться на том же оборудовании, выполняющем процесс, на котором хранится или используется информация, хранящаяся в базе данных, или же база данных может находиться на отдельном оборудовании, например, выделенном сервере или множестве серверов. Оборудование может представлять собой один физический компьютер или одну физическую компьютерную систему, но ни то, ни другое не является обязательным для данного технического решения.
[48] В контексте настоящего технического решения использование выражения «сервер» не означает, что каждая задача (например, полученные команды или запросы) или какая-либо конкретная задача будет получена, выполнена или инициирована к выполнению одним и тем же сервером (то есть одним и тем же программным обеспечением и/или аппаратным обеспечением); это означает, что любое количество элементов программного обеспечения или аппаратных устройств может быть вовлечено в прием/передачу, выполнение или инициирование выполнения любого запроса или последствия любого запроса, связанного с клиентским устройством, и все это программное и аппаратное обеспечение может быть одним сервером или несколькими серверами; оба варианта включены в выражение «по меньшей мере один сервер». И первый узел 108, и второй узел 110, и третий узел 112 могут быть реализованы как обычный компьютерный сервер. В примере варианта осуществления настоящего технического решения и первый узел 108, и второй узел 110, и третий узел 112 могут представлять собой серверы Dell™ PowerEdge™, на которых используется операционная система Microsoft™ Windows Server™. Излишне говорить, что первый узел 108, второй узел 110, и третий узел 112 могут представлять собой любое другое подходящее аппаратное и/или прикладное программное, и/или системное программное обеспечение или их комбинацию. И первый узел 108, и второй узел 110, и третий узел 112 не обязательно должны обладать одинаковым аппаратным обеспечением. Первый узел 108, второй узел 110, и третий узел 112 не обязательно должны работать под одной и той же операционной системой (ОС), или не обязательно должны быть запрограммированы на одном и том же языке программирования. Первый узел 108, второй узел 110, и третий узел 112 могут быть полносвязными или неполносвязными. В изображенном примере варианта осуществления настоящего технического решения настоящего технического решения, не ограничивающем его объем, и первый узел 108, и второй узел 110, и третий узел 112 могут быть физически независимыми серверами, например, как серверы в сервером шкафу. В других вариантах осуществления настоящего технического решения и первый узел 108, и второй узел 110, и третий узел 112 могут работать на одном и том же сервере. В других вариантах осуществления настоящего технического решения, не ограничивающих его объем, функциональность и первого узла 108, и второго узла 110, и третьего узла 112 может быть разделена, и может выполняться с помощью нескольких серверов.
[49] Распределенная система 104 может быть выполнена на различных уровнях передачи данных, например, на уровне применения, уровне передачи, уровне интернета, уровне линии и физическом уровне, и в соответствии с различными протоколами передачи данных или правилами кодирования и декодирования сообщений, которые могут зависеть от того, как реализованы первый узел 108, второй узел 110, и третий узел 112. В некоторых вариантах осуществления настоящего технического решения распределенная система 104 может использовать набор интернет-протоколов (IP), также известный как протокол управления передачей данных (TCP), обычно упоминаемый как TCP/IP. TCP позволяет клиентам и нодам надежно и организованно обмениваться данными в виде пакетов. В других вариантах осуществления настоящего технического решения распределенная система 104 может использовать пользовательский протокол дейтаграмм (UDP). И первый узел 108, и второй узел 110, и третий узел 112 могут соответственно быть взаимосвязаны с помощью линии 107 передачи данных, причем линия 107 передачи данных может быть как беспроводной (беспроводной интернет Wireless Fidelity или коротко WiFi, Bluetooth и т.п) так и проводной (соединение на основе сети Ethernet), или комбинацией беспроводной и проводной.
[50] Варианты осуществления распределенной системы 104 предоставляются тут исключительно с иллюстративной целью и не должны рассматриваться как ограничение объекта настоящего технического решения.
[51] И первый узел 108, и второй узел 110, и третий узел 112 в распределенной системе 104 могут обмениваться данными с помощью передачи сообщений. В общем случае, но без введения ограничений, сообщение может включать в себя указание трех частей: отправителя, получателя и содержимого. Отправитель указывается для того, чтобы получатель знал, какой из первого узла 108, второго узла 110 и третьего узла 112 отправил сообщение, и получатель указывается для того, чтобы знать, какому из первого узла 108, второго узла 110 и третьего узла 112 должны быть отправлены ответы. В некоторых вариантах осуществления настоящего технического решения для передачи сообщений может использоваться защищенный канал, где сообщения могут быть зашифрованы перед отправлением и расшифрованы перед прочтением, на основе совместно используемого ключа или других криптографических методов. В некоторых вариантах осуществления настоящего технического решения механизм передачи сообщений может быть чистым HTTP, соединением с использованием технологий, подобных удаленному вызову процедур (RPC), и очередью сообщений. Сообщение может может включать в себя уникальный ID сообщений для идентификации сообщения, содержания предыдущего действия любой нодой в распределенной системе 104 (т.е. первым узлом 108, вторым узлом 110 и третьим узлом 112), номер приоритета, отметку времени, список действий, которые надо выполнить, инструкции на отправку других сообщений, исполнимые коды, статистику своего отправителя, например, среднее время ответа и другую релевантную информацию о распределенной системе 104. Возможны различные реализации содержимого сообщения, как будет понятно специалисту в данной области техники.
[52] В настоящем контексте передача подразумевает под собой способ передачи сообщения с помощью отправки сообщения всем другим узлам (т.е. и первому узлу 108, и второму узлу 110, и третьему узлу 112) распределенной системы 104. Сообщения могут быть отправлены одновременно или не одновременно. Передача может быть выполнена как «режим рассылки» в котором каждый узел-отправитель осуществляет свою рассылку, в которой сообщения могут отличаться для каждого получателя, или как «режим пересылки», в котором сообщения одинаковы для всех получателей. В некоторых вариантах осуществления настоящего технического решения передача может быть заменена на одноадресную передачу, многоадресную передачу или геокастинг.
[53] В контексте настоящего технического решения процедура подтверждения действия может подразумевать последовательность программных инструкций для подготовки осуществления конкретной задачи или действия. Процедура подтверждения действия может быть выполнена независимо и первым узлом 108, и вторым узлом 110, и третьим узлом 112 распределенной системы 104, что означает, что и первый узел 108, и второй узел 110, и третий узел 112 могут быть выполнены с возможностью, после получения начального запроса, осуществлять серию шагов процедуры подтверждения действия, вне зависимости от того, что делают другие узлы. Первая часть процедуры подтверждения действия может быть упомянута как фаза голосования. Вторая часть процедуры подтверждения действия может быть упомянута как фаза принятия. Третья часть процедуры подтверждения действия может быть упомянута как фаза подтверждения. В некоторых вариантах осуществления настоящего технического решения первый узел 108, второй узел 110, и третий узел 112 распределенной системы 104 могут иметь варианты отката на случай ошибок, и этап может быть повторен после ошибки первого узла 108, второго узла 110, и третьего узла 112. В некоторых вариантах осуществления настоящего технического решения процедура подтверждения действия может быть использована совместно с другими известными способами в распределенных системах, например, избрание лидера, Paxos, Raft, и многими другими, как будет понятно специалистам в данной области техники.
[54] В общем случае клиентское устройство 102 может соединяться с распределенной системой 104 с помощью линии 103 передачи данных по сети 106 передачи данных, чтобы сделать запрос распределенной системы 104 на выполнение первого действия. Клиентское устройство 102 может соединяться с первым узлом 108 распределенной системы 104. В некоторых вариантах осуществления настоящего технического решения клиентское устройство 102 может соединяться напрямую с первым узлом 108 из-за его близости к клиентскому устройству 102. В других вариантах осуществления настоящего технического решения клиентское устройство 102 может соединяться с первым узлом 108 из-за его доступности. В некоторых вариантах осуществления настоящего технического решения первый узел 108 является примером любого узла и может быть выбран клиентским устройством 102 случайно. Клиентское устройство 102 может затем отправить запрос на выполнение действия первому узлу 108. В некоторых вариантах осуществления настоящего технического решения запрос клиентского устройства 102 может быть удаленным вызовом процедуры (RPC), причем процедура с аргументами передается первому узлу 108 и клиентское устройство 102 ждет в течение времени ожидания или пока будет получен ответ. В других вариантах осуществления настоящего технического решения запрос может быть удаленным обращением к методам (RMI). В некоторых вариантах осуществления настоящего технического решения запрос от клиентского устройства 102 может включать в себя единственную команду или последовательность команд для выполнения. Первый узел 108 может получать запрос для распределенной системы 104 на выполнение первого действия. Как будет понятно специалистам в данной области техники протокол для удаленного вызова процедуры/удаленного обращения к методам, программа серверной стороны и программа клиентской стороны должны быть предварительно реализованы программистом. Первый узел 108 может временно сохранять первое клиентское сообщение на свою память или в базу данных (не изображена), в которой сохраненное первое клиентское сообщение может быть связано с временем, в которое оно получено, с его происхождением (в данном случае это клиентское устройство 102), действием, которое нужно выполнить, приоритетом и уникальным ID сообщения и другой соответствующей информацией. В ответ на получение первого клиентского сообщения первый узел 108 может передавать остальным узлам распределенной системы 104, второму узлу 110 и третьему узлу 112, первого статусного сообщения, причем первое статусное сообщение включает в себя указание первого действия, которые необходимо выполнить, и передача первого статусного сообщения является частью первой части процедуры подтверждения первого действия для первого узла 108. Первая часть процедуры подтверждения первого действия может быть запросом второму узлу 110 и третьему узлу 112 на голосование для подтверждения первого действия. Первый узел 108, как исполняющий модуль синхронизации (не изображен), может начать отслеживать параметр ожидания, связанный с предварительно определенным порогом ожидания.
[55] На ФИГ. 2 представлена блок-схема неограничивающего примера способа 200 для выполнения процедуры подтверждения действия в распределенной системе 104. В общем случае способ 200, проиллюстрированный здесь, может быть выполнен независимо и первым узлом 108, и вторым узлом 110, и третьим узлом 112 распределенной системы 104, что означает, что и первый узел 108, и второй узел 110, и третий узел 112 могут работать со своей собственной скоростью, и выполнять конкретные этапы тогда, когда удовлетворены условия. Способ 200 может быть выполнен с помощью системы 100, представленной на Фиг. 1. Способ 200 может быть тем же самым и для первого узла 108, и для второго узла 110, и для третьего узла 112. Способ 200, изображенный здесь, выполняется вторым узлом 110, но может быть выполнен любым узлом, например, первым узлом 108 и третьим узлом 112. Первый узел 108 может получить первое клиентское сообщение от клиентского устройства 102 и передать первое статусное сообщение, включая указание первого действия, которое необходимо выполнить, второму узлу 110 и третьему узлу 112. Затем второй узел 110 и третий узел 112 распределенной системы 104 могут получить от первого узла 108 соответствующее первое статусное сообщение, включая указание первого действия, и каждая из них может отправить соответствующий ответ на первое статусное сообщение, причем ответ на первое статусное сообщение включает в себя голос за подтверждение, и является частью первой части процедуры подтверждения действия с точки зрения второго узла 110 и третьего узла 112. Второй узел 110 и третий узел 112 могут начать отслеживать параметр ожидания, связанный с первым предварительно определенным порогом ожидания. Затем на этапе 203 может начинаться способ.
[56] ЭТАП 203: получение первого множества сообщений, включающего в себя соответствующие ответы на первое статусное сообщение
[57] На этапе 203 второй узел 110 может получать первое множество сообщений, включающее в себя соответствующий ответ на первое статусное сообщение от каждой из первого узла 108 и второго узла 110. Каждое сообщение из первого множества сообщений может быть получено в различное время, или некоторые сообщения могут быть получены в то же самое время. Каждый соответствующий ответ на первое статусное сообщение в первом множестве сообщений от первого узла 108 и третьего узла 112 может включать в себя голос за совершение первого действия. Второй узел 110 может затем сохранить каждое сообщение из первого множества сообщений после получения в свою память или в базу данных (не изображена). Второй узел 110, отслеживая параметр ожидания, может определить, что параметр ожидания превысил первый предварительно определенный порог ожидания. Второй узел 110 может затем проверить, что она получила первое множество сообщений от числа узлов, по меньшей мере равного предварительно определенному порогу, равному одному узлу, и способ может перейти к этапу 204. В других вариантах осуществления настоящего технического решения, когда второй узел 110 получает первое множество ответных сообщений от первого узла 108 и третьего узла 112 и перед тем, как параметр ожидания превысит первый предварительно определенный параметр ожидания, способ 200 может перейти напрямую к этапу 204, причем второй узел 110 осведомлен, что все другие узлы (первый узел 108 и третий узел 112) распределенной системы 104 ответили на первое статусное сообщение. В варианте осуществления настоящего технического решения, в котором число узлов находится ниже предварительно определенного порога, равного одному узлу, второй узел 110 может передать сообщение первому узлу 108 и третьему узлу 112, включающее в себя указание, что процесс подтверждения действия прерван, и первый узел 108, получив первое клиентское сообщение, может вернуть сообщение о том, что процесс подтверждения действия был прерван, на клиентское устройство 102.
[58] ЭТАП 204: передача второго статусного сообщения, причем передача второго статусного сообщения является частью второй части процедуры подтверждения действия
[59] На этапе 204 в ответ на получение первого множества сообщений от числа узлов, которое по меньшей мере равно предварительно определенному порогу, и на то, что параметр ожидания превышает предварительно определенный порог ожидания, второй узел 110 может начать выполнение второй части процедуры подтверждения действия. Этап 204 может быть выполнен вторым узлом 110 вне зависимости от того, что делают первый узел 108 и третий узел 112. Второй узел 110 может передавать первому узлу 108 и третьему узлу 112 второе статусное сообщение, причем передача второго статусного сообщения является частью второй части процедуры подтверждения действия. Второе статусное сообщение может включать в себя согласие на совершение первого действия. В некоторых вариантах осуществления настоящего технического решения второе статусное сообщение может также дополнительно включать в себя информацию о второму узлу 110, например, время, в которое было получено сообщение и содержимое каждого сообщения, переданного первым узлом 108 и третьим узлом 112. Второй узел 110, как исполняющий модуль синхронизации (не изображен), может затем начать отслеживать параметр ожидания, причем параметр ожидания связан со вторым предварительно определенным порогом ожидания. В некоторых вариантах осуществления настоящего технического решения второй узел 110 может назначить другой порог ожидания и первому узлу 108, и третьему узлу 112 в зависимости от времени их ответа. Способ 200 далее может перейти к выполнению этапа 205.
[60] ЭТАП 205: получение второго множества сообщений, включающего в себя соответствующее второе статусное сообщение
[61] На этапе 205 после определенного промежутка времени второй узел 110 может получать второе множество сообщений, включающее в себя соответствующее второе статусное сообщение от каждой из первого узла 108 и третьего узла 112. Каждое сообщение из второго множества сообщений может быть получено в различное время, или некоторые сообщения могут быть получены в то же самое время. Второе множество сообщений, включающее в себя соответствующее второе статусное сообщение от каждой из первого узла 108 и третьего узла 112, может быть отправлено как ответ на получение соответствующего первого множества сообщений. Каждое соответствующее второе статусное сообщение во втором множестве сообщений из первого узла 108 и третьего узла 112 может включать в себя указание согласия на совершение первого действия. Второй узел 110 может затем сохранить каждое сообщение из второго множества сообщений, поскольку она сохраняет их в свою память или в базу данных (не изображена). Второй узел 110, отслеживая параметр ожидания, может определить, что параметр ожидания превысил второй предварительно определенный порог ожидания. Второй узел 110 может затем проверить, что число узлов в пределах второй подгруппы множества узлов по меньшей мере равно предварительно определенному порогу, равному одному узлу, и способ 200 может перейти к этапу 206. В некоторых вариантах осуществления настоящего технического решения, в которых предварительно определенное число узлов находится ниже предварительно определенного порога, равного одной ноде, второй узел 110 может передать сообщение первому узлу 108 и третьему узлу 112 о том, что процесс подтверждения действия прерван, и первый узел 108, получив первое клиентское сообщение, может вернуть сообщение о том, что процесс подтверждения действия был прерван, на клиентское устройство 102.
[62] ЭТАП 206: передача третьего статусного сообщения, причем передача третьего статусного сообщения является частью третьей части процедуры подтверждения действия
[63] На этапе 206 в ответ на получение второго множества сообщений от числа узлов, которое по меньшей мере равно предварительно определенному порогу, и на то, что параметр ожидания превышает второй предварительно определенный порог ожидания, второй узел 110 может передавать первому узлу 108 и третьему узлу 112 третье статусное сообщение, причем передача третьего статусного сообщения является частью третьей части процедуры подтверждения действия. Третье статусное сообщение может включать в себя указание на то, что второй узел 110 подтверждает первое действие. Третье статусное сообщение может также дополнительно включать в себя информацию о втором узле 110, например, время, в которое он получил сообщение от первого узла 108 и третьего узла 112. В некоторых вариантах осуществления настоящего технического решения третье статусное сообщение может дополнительно включать в себя указание части первого действия, которое будет исполнено вторым узлом 110, причем часть первого действия выбрана в соответствии с предварительно определенным критерием, например, доступная вычислительная мощность, доступная память, конфигурация и т.д. Второй узел 110, как исполняющий модуль синхронизации (не изображен), может затем продолжить отслеживать параметр ожидания, причем параметр ожидания связан с третьим предварительно определенным порогом ожидания. Способ 200 далее может перейти к выполнению этапа 207.
[64] ЭТАП 207: получение третьего множества сообщений, включающего в себя соответствующее третье статусное сообщение
[65] На этапе 207 после определенного промежутка времени второй узел 110 может получать третье множество сообщений, включающее в себя соответствующее третье статусное сообщение от каждого из первого узла 108 и третьего узла 112. Каждое сообщение из третьего множества сообщений может быть получено в различное время, или некоторые сообщения могут быть получены в то же самое время. Третье множество сообщений, включающее в себя соответствующее третье статусное сообщение от каждого из первого узла 108 и третьего узла 112, может быть отправлено как ответ на получение соответствующего второго множества сообщений. Каждое соответствующее третье статусное сообщение в третьем множестве сообщений от первого узла 108 и третьего узла 112 может включать в себя указание подтверждения первого действия. Второй узел 110 может затем сохранить каждое сообщение из третьего множества сообщений после из получения в свою память или в базу данных (не изображена). Второй узел 110, отслеживая параметр ожидания, может определить, что параметр ожидания превысил третий предварительно определенный порог ожидания. Второй узел 110 может затем проверить, что число узлов по меньшей мере равно предварительно определенному порогу, равному одному узлу, и способ может перейти к этапу 208.
[66] ЭТАП 208: выполнение первого действия
[67] На этапе 208 в ответ на получение третьего множества сообщений от числа узлов, которое по меньшей мере равно предварительно определенному порогу, и на то, что параметр ожидания превышает первый предварительно определенный порог ожидания, второй узел 110 может начать выполнение первого действия. В некоторых вариантах осуществления настоящего технического решения часть первого действия может быть выполнена и первым узлом 108, и вторым узлом 110, и третьим узлом 112. В других вариантах осуществления настоящего технического решения, в зависимости от приоритета и числа действий, которые необходимо выполнить, только две из первого узла 108, второго узла 110 и третьего узла 112 могут выполнить первое действие. В некоторых вариантах осуществления настоящего технического решения и первый узел 108, и второй узел 110, и третий узел 112 могут выполнять первое действие. После завершения выполнение первого действия способ 200 может переходить на этап 209.
[68] ЭТАП 209: передача сообщения, включающего в себя результаты первого действия
[69] На этапе 209, в ответ на окончание выполнения первого действия, второй узел 110 может передавать сообщение, включающее в себя результаты первого действия. В некоторых вариантах осуществления настоящего технического решения второй узел 110 может передавать сообщение, включающее в себя результаты первого действия, первому узлу 108, причем первый узел 108 соединен с клиентским устройством 102. Способ 200 завершается.
[70] В течение выполнения первого действия, или после него, первый узел 108 может получать четвертое множество сообщений, причем четвертое множество сообщений включает в себя соответствующий результат первого действия, от второго узла 110 и третьего узла 112. В ответ на получение четвертого множества сообщений, причем четвертое множество сообщений включает в себя соответствующий результат первого действия, от второго узла 110 и третьего узла 112, первый узел 108 может агрегировать каждый соответствующий результат, и отправить сообщение на клиентское устройство 102, причем сообщение включает в себя результаты первого действия, осуществленного и первым узлом 108, и вторым узлом 110, и третьим узлом 112.
[71] На Фиг. 3 изображен в виде блок-схемы альтернативный сценарий процедуры подтверждения действия по способу 200 для распределенной системы 103, причем ошибка любой из первого узла 108, второго узла 110 и третьего узла 112 может произойти в любое время в течение процедуры подтверждения действия. Как будет понятно специалистам в данной области техники, возможны различные сценарии ошибки узла в распределенной системе 104 на различных этапах или частях процедуры подтверждения действия, и способ 300 представляет тут исключительно иллюстративный вариант. В представленном примере, не ограничивающем объем настоящего технического решения, способ 300 может быть альтернативным вариантом для этапов 205-209 способа 200, причем третий узел 112 перестает отвечать между первой и второй частями процедуры подтверждения действия. Способ 300 может начаться на этапе 305, который может идти за этапом 203 способа 200.
[72] ЭТАП 305: получение второго статусного сообщения
[73] В последующий промежуток времени или в то же самое время на этапе 305 второй узел 110 может получить второе статусное сообщение от первого узла 108. Второе статусное сообщение может включать в себя указание на то, что вторая узал 108 подтверждает совершение первого действия. Второй узел 110 может затем сохранить второе статусное сообщение от первого узла 108 в свою память или в базу данных (не изображена). После определенного промежутка времени второй узел 110, отслеживая параметр ожидания, может определить, что параметр ожидания превысил второй предварительно определенный порог ожидания. Второй узел 110 может затем проверить, что он получил сообщение по меньшей мере от предварительно определенного порога узлов, составляющего один узел, в данном случае - от первого узла 108. Второй узел 110, не получив второе статусное сообщение от третьего узла 112 или указание второго статусного сообщения от третьего узла 112, входящее в состав второго статусного сообщения от первого узла 108, может определить, что третий узел 112 не отвечает, и может продолжить процедуру подтверждения действия без третьего узла 112. Как может быть понятно, третий узел 112 может не отвечать по разным причинам: она может отключиться, прекратить работу из-за ошибок аппаратного и/или программного обеспечения, или может отсоединиться от сети 106 передачи данных. В некоторых вариантах осуществления настоящего технического решения, когда третий узел 112 отключился или перезагрузился до окончания процедуры подтверждения действия, второй узел 110 может продолжать процедуру подтверждения действия после получения статусного сообщения от первого узла 108 или третьего узла 112. Второй узел 110 может записать в своей базе данных или памяти (не изображена), что третий узел 112 недоступна, и способ 300 может затем перейти на этап 306.
[74] ЭТАП 306: передача третьего статусного сообщения, причем передача третьего статусного сообщения является частью третьей части процедуры подтверждения действия
[75] На этапе 306 в ответ на получение второго статусного сообщения от первого узла 108 (это число узлов по меньшей мере равно предварительно определенному порогу), и на то, что параметр ожидания превышает предварительно определенный порог ожидания, второй узел 110 может передавать первому узлу 108 и третьему узлу 112 третье статусное сообщение, причем третье статусное сообщение является частью третьей части процедуры подтверждения действия. Третье статусное сообщение может включать в себя сообщение подтверждения, причем сообщение подтверждения указывает на то, что второй узел 110 подтверждает выполнение первого действия. В некоторых вариантах осуществления настоящего технического решения третье статусное сообщение от второго узла 110 может включать в себя указание того, что третий узел 112 превысила порог ожидания и не отвечает, однако, поскольку первый узел 108 отвечает, и предварительно определенный пород составляет один узел, процедура подтверждения действия может продолжаться как обычно. В некоторых вариантах осуществления настоящего технического решения третье статусное сообщение может дополнительно включать в себя указание части первого действия, которое будет исполнено вторым узлом 110, причем часть первого действия выбрана в соответствии с предварительно определенным критерием, например, доступная вычислительная мощность, доступная память, конфигурация и т.д. Второй узел 110, определив ранее, что третий узел 112 не отвечал, может, тем не менее, отправить третье статусное сообщение третьему узлу 112, на случай, если третий узел 112 снова станет отвечать. В некоторых вариантах осуществления настоящего технического решения второй узел 110, определив, что третий узел 112 не отвечает, может передать третье статусное сообщение только первому узлу 108. Второй узел 110 может продолжать отслеживать параметр ожидания, связанный с третьим предварительно определенным порогом ожидания. Способ 300 далее может перейти к выполнению этапа 307.
[76] ЭТАП 307: получение третьего статусного сообщения от первой ноды
[77] В последующий промежуток времени, на этапе 307, второй узел 110 может получить третье статусное сообщение от первого узла 108, причем третье статусное сообщение включает в себя сообщение подтверждения, причем сообщение подтверждения указывает, что первый узел 108 подтверждает первое действие. Второй узел 110 может затем сохранить третье статусное сообщение от первого узла 108 в свою память или в базу данных (не изображена). После определенного промежутка времени второй узел 110, отслеживая параметр ожидания, может определить, что параметр ожидания превысил третий предварительно определенный порог ожидания. Второй узел 110 может затем проверить, что он получил третье сообщение по меньшей мере от предварительно определенного порога узлов, составляющего один узел. В некоторых вариантах осуществления настоящего технического решения второй узел 110 может записать в свою базу данных или память, что третий узел 112 не отвечает, и перейти на этап 308. В других вариантах осуществления настоящего технического решения второй узел 110 обладая знаниями из этапа 305 о том, что третий узел 112 не отвечает, может перейти напрямую на этап 308.
[78] ЭТАП 308: выполнение первого действия
[79] На этапе 308 в ответ на получение третьего статусного сообщения от первого узла 108 (это число узлов по меньшей мере равно предварительно определенному порогу), и на то, что параметр ожидания превышает первый предварительно определенный порог ожидания, второй узел 110 может начать выполнение первого действия. Первое действие может быть выполнено в соответствии с различными протоколами. В некоторых вариантах осуществления настоящего технического решения другая часть первого действия может быть выполнена первым узлом 108, и вторым узлом 110. В других вариантах осуществления настоящего технического решения, в зависимости от приоритета и текущих действий, которые выполняются и первым узлом 108, и вторым узлом 110, только один из узлов 108, 110 может выполнить первое действие. В других вариантах осуществления настоящего технического решения первое действие может быть выполнено параллельно и первым узлом 108, и вторым узлом 110.
[80] ЭТАП 309: передача результатов первого действия
[81] На этапе 309, в ответ на окончание выполнения первого действия, второй узел 110 может передавать результаты выполнения первого действия. В некоторых вариантах осуществления настоящего технического решения второй узел 110 может передавать только результаты первого действия первому узлу 108. Затем способ 300 может завершаться.
[82] На Фиг. 4 изображен в виде блок-схемы другой сценарий, по способу 400 процедуры подтверждения действия. Этот вариант осуществления настоящего технического решения показывает ситуацию, в которой линия передачи данных (не изображена) между двумя узлами распределенной системы 104 становится ненадежной, низкоскоростной или не работающей. В примере, изображенном здесь, способ 400 может быть выполнен альтернативно этапам 205-209 способа 200, когда линия 107 передачи данных между вторым узлом 110 и третьим узлом 112 может перестать работать.
[83] ЭТАП 405: получение второго статусного сообщения
[84] На этапе 405 второй узел 110 может получить второе статусное сообщение от первого узла 108. Второе статусное сообщение может включать в себя указание на то, что второй узел 110 подтверждает совершение первого действия. Второй узел 110 может затем сохранить второе статусное сообщение от первого узла 108 в свою память или в базу данных (не изображена). После определенного промежутка времени второй узел 110, отслеживая параметр ожидания, может определить, что параметр ожидания превысил второй предварительно определенный порог ожидания. Второй узел 110 может затем проверить, что он получил сообщение по меньшей мере от предварительно определенного порога узлов, составляющего один узел, в данном случае - от первого узла 108. Однако второе статусное сообщение от первого узла 108 может включать в себя указание того, что первый узел 108 получил статусное сообщение от третьего узла 112, и второй узел 110 может определить, что третий узел 112 доступен, но может существовать проблема или ошибка передачи данных между вторым узлом 110 и третьим узлом 112. Вторая узел 110 может также быть выполнен с возможностью продолжать процедуру подтверждения действия, принимая во внимание ошибку в обмене данными с третьим узлом 112. Способ 400 далее может перейти к выполнению этапа 406.
[85] ЭТАП 406: передача третьего статусного сообщения, причем передача третьего статусного сообщения является частью третьей части процедуры подтверждения действия
[86] На этапе 406 в ответ на получение второго статусного сообщения от числа узлов, которое по меньшей мере равно предварительно определенному порогу, и определив, что линия 107 передачи данных между вторым узлом 110 и третьим узлом 112 не работает, второй узел 110 может передавать первому узлу 108 и третьему узлу 112 третье статусное сообщение, причем третье статусное сообщение является частью третьей части процедуры подтверждения действия. Второй узел 110, обладая знаниями о том, что линия 107 обмена данными с третьим узлом 112 недоступна, может, тем не менее, отправить третье статусное сообщение третьему узлу 112 на случай, если линия передачи данных станет доступной. Третье статусное сообщение может включать в себя сообщение подтверждения, причем сообщение подтверждения указывает на то, что второй узел 110 подтверждает выполнение первого действия. В некоторых вариантах осуществления настоящего технического решения второй узел 110, обладая знаниями о том, что линия 107 обмена данными с третьим узлом 112 недоступна, может передать третье статусное сообщение только первому узлу 108. В некоторых вариантах осуществления настоящего технического решения третье статусное сообщение первому узлу 108 может включать в себя уведомление о доступности третьего узла 112 и указание ошибки в обмене данными между вторым узлом 110 и третьим узлом 112, и дополнительное указание того, что второй узел 110 увеличит порог ожидания, чтобы дождаться ответа от третьего узла 112 через первый узел 108. Первый узел 108 может также увеличить порог ожидания, чтобы дождаться ответа от третьего узла 112. Второй узел 110 может продолжать отслеживать параметр ожидания, связанный с третьим предварительно определенным порогом ожидания. Способ 400 далее может перейти к выполнению этапа 407.
[87] ЭТАП 407: получение третьего статусного сообщения
[88] В последующий промежуток времени, на этапе 407, второй узел 110 может получить третье статусное сообщение от первого узла 108, причем третье статусное сообщение включает в себя сообщение подтверждения, причем сообщение подтверждения указывает, что первый узел 108 подтверждает первое действие, и дополнительное указание, что третий узел 112 подтверждает действие, причем первый узел 108 получила третье статусное сообщение от третьего узла 112. Второй узел 110 может затем сохранить третье статусное сообщение от первого узла 108 в свою память или в базу данных (не изображена) и перейти на этап 408. В некоторых вариантах осуществления настоящего технического решения второй узел 110, отслеживая параметр ожидания, может определить, что параметр ожидания превысил третий предварительно определенный порог ожидания, проверить, что она получила третье статусное сообщение с указанием по меньшей мере от первого узла 108, и затем перейти на этап 408. В некоторых вариантах осуществления настоящего технического решения второй узел 110 после проверки того, что она получила сообщение от числа узлов, по меньшей мере равного предварительно определенному порогу, который составляет один узел, может перейти на этап 408 и не учитывать третий узел 112 в процедуре подтверждения действия.
[89] ЭТАП 408: выполнение действия
[90] На этапе 408 в ответ на получение третьего статусного сообщения от первого узла 108, что равно по меньшей мере предварительно определенному порогу, и на то, что параметр ожидания превышает первый предварительно определенный порог ожидания, второй узел 110 может начать выполнение первого действия. Первое действие может быть выполнено в соответствии с различными протоколами. В некоторых вариантах осуществления настоящего технического решения другая часть первого действия может быть выполнена первым узлом 108, вторым узлом 110 и третьим узлом 112. В других вариантах осуществления настоящего технического решения, в зависимости от приоритета и текущих действий, которые выполняются и первым узлом 108, и вторым узлом 110, и третьим узлом 112, только два узла могут выполнить первое действие. В некоторых вариантах осуществления настоящего технического решения и первый узел 108, и второй узел 110, и третий узел 112 могут выполнять первое действие. В других вариантах осуществления настоящего технического решения первое действие может быть выполнено параллельно первым узлом 108, вторым узлом 110 и третьим узлом 112.
[91] ЭТАП 409: передача сообщения, включающего в себя результаты первого действия
[92] На этапе 409, в ответ на окончание выполнения первого действия второй узел 110 может передавать сообщение, включающее в себя результаты первого действия, первому узлу 108, причем первый узел 108 соединен с клиентским устройством 102. Способ 400 для второго узла 110 затем заканчивается.
[93] Как будет понятно специалистам в данной области техники, распределенная система 104 может получить множество клиентских запросов от клиентского устройства 102 или других клиентских устройств (не изображены). Это множество запросов может прийти в любое время перед процедурой подтверждения действия, в течение или после этой процедуры, и распределенная система 104 может обработать множество запросов, как она обработала первое действие в рамках способов 200-400. Кроме того, когда выполняется множество процедур подтверждения действия в одно и то же время первым узлом 108, вторым узлом 110 и третьим узлом 112, клиентским устройством 102 или другими клиентскими устройствами (не изображены) может быть назначено значение приоритета каждому запросу, и первый узел 108, второй узел 110 и третий узел 112 могут решить, какой запрос выполнить перед другим запросом на основе значения его приоритета. В некоторых вариантах осуществления настоящего технического решения, в зависимости от типа запроса, распределенная система 104 может быть выполнена с возможностью выполнять множество запросов параллельно. В других вариантах осуществления настоящего технического решения множество запросов в распределенной системе 104 может быть обработано в порядке очереди (способом first in first out (FIFO)). Для выполнения множества запросов могут быть использованы другие способы, в зависимости от того, как выполнена распределенная система 104.
[94] Некоторые варианты осуществления настоящего технического решения могут привести к техническому эффекту, благодаря которому ресурсы сервера могут быть оптимизированы и/или сбережены. Дополнительно или альтернативно варианты осуществления настоящего технического решения могут осуществить процесс выполнения клиентского запроса быстрее по сравнению с подходами известного уровня техники.
[95] Некоторые из этих этапов, а также передача-получение сигнала хорошо известны в данной области техники и поэтому для упрощения были опущены в конкретных частях данного описания. Сигналы могут быть переданы-получены с помощью оптических средств (например, опто-волоконного соединения), электронных средств (например, проводного или беспроводного соединения) и механических средств (например, на основе давления, температуры или другого подходящего параметра).
[96] С учетом вышеописанных вариантов осуществления настоящего технического решения, которые были описаны и показаны со ссылкой на конкретные этапы, выполненные в определенном порядке, следует иметь в виду, что эти этапы могут быть совмещены, разделены, обладать другим порядком выполнения - все это не выходит за границы настоящего технического решения. Соответственно, порядок и группировка этапов не является ограничением для настоящего технического решения.
[97] Специалисты в данной области техники поймут, что в настоящем описании выражение «получение данных» от пользователя подразумевает получение электронным устройством или другим электронным устройством данных от пользователя в виде электронного (или другого) сигнала. Кроме того, специалисты в данной области техники поймут, что отображение данных пользователю через графический интерфейс пользователя (например, экран компьютерного устройства и тому подобное) может включать в себя передачу сигнала графическому интерфейсу пользователя, этот сигнал включает в себя данные, которые могут быть обработаны, и по меньшей мере часть этих данных может отображаться пользователю через графический интерфейс пользователя.
[98] Важно иметь в виду, что варианты осуществления настоящего технического решения могут быть реализованы с проявлением и других технических результатов.
[99] Модификации и улучшения вышеописанных вариантов осуществления настоящего технического решения будут ясны специалистам в данной области техники. Предшествующее описание представлено только в качестве примера и не несет никаких ограничений. Таким образом, объем настоящего технического решения ограничен только объемом прилагаемой формулы изобретения.
[100] Варианты осуществления настоящего технического решения могут быть кратко изложены в пронумерованных пунктах.
[101] ПУНКТ 1. Способ (200) осуществления процедуры подтверждения действия в распределенной компьютерной системе (104), причем распределенная компьютерная система (104) обладает множеством узлов (108, 110, 112); процедура подтверждения действия является независимо выполняемой на каждом узле из множества узлов (108, 110, 112); каждый узел из множества узлов (108, 110, 112) осведомлена о присутствии других узлов (108, 110, 112) в пределах распределенной системы (104), и каждая узел из множества (108, 110, 112) узлов выполнен с возможностью получения клиентского сообщения от клиентского устройства (102), которое функционально подключено (103) к распределенной вычислительной системе (104) по сети (106) передачи данных; конкретный узел (108) из множества узлов получает первое клиентское сообщение от клиентского устройства (102), причем первое клиентское сообщение включает в себя запрос на выполнение распределенной компьютерной системой (104) первого действия, и конкретный узел (108) из множества (108, 110, 112) узлов передает первое статусное сообщение, включая указание первого действия, остальным узлам (110, 112) из множества узлов, причем передача первого статусного сообщения является первой частью процедуры подтверждения действия; способ (200) включает в себя:
[102] получение (203) данным узлом (110) из множества узлов (108, 110, 112) от первой подгруппы множества узлов (108, 112) первого множества ответных сообщений, включающего в себя соответствующий ответ на первое статусное сообщение от каждого узла из первой подгруппы множества узлов (108, 112);
[103] в ответ на то, что число узлов в первой подгруппе множества узлов (108, 112) по меньшей мере равно предварительно определенному порогу, выполнение (204) данным узлом (110) второй части процедуры подтверждения действия, причем вторая часть процедуры подтверждения действия следует за первой частью, выполнение включает в себя отправку данным узлом по меньшей мере первой подгруппе множества узлов (108, 112), второго статусного сообщения, причем отправка второго статусного сообщения является частью второй части процедуры подтверждения действия.
[104] ПУНКТ 2. Способ (200) по п. 1, в котором первая часть процедуры подтверждения действия дополнительно включает в себя:
- получение данным узлом (108) из множества узлов от конкретного узла (110) первого статусного сообщения, включающего в себя указание первого действия; и
- отправку данным узлом (110) другой подгруппе множества узлов (108, 112) ответа на первое статусное сообщение.
[105] ПУНКТ 3. Способ (200) по п. 2, в котором процедура подтверждения действия дополнительно включает в себя третью часть процедуры подтверждения действия, причем третья часть процедуры подтверждения действия следует за второй частью, способ дополнительно включает в себя:
- получение (205) данным узлом (110) из множества узлов (108, 110, 112) от второй подгруппы множества узлов (108, 112) второго множества ответных сообщений, включающего в себя соответствующий ответ на второе статусное сообщение от каждого узла из второй подгруппы множества узлов (108, 112);
- в ответ на то, что число нод во второй подгруппе множества узлов (108, 112) по меньшей мере равно предварительно определенному порогу, выполнение данным узлом третьей части процедуры подтверждения действия, причем выполнение включает в себя отправку (206) данным узлом (110) по меньшей мере второй подгруппе множества узлов (108, 112) третьего статусного сообщения, причем отправка третьего статусного сообщения является частью третьей части процедуры подтверждения действия.
[106] ПУНКТ 4. Способ (200) по п. 3, дополнительно включающий в себя:
- получение (207) данным узлом (110) из множества узлов (108, 110, 112) от третьей подгруппы множества нод (108, 112) третьего множества ответных сообщений, включающего в себя соответствующий ответ на третье статусное сообщение от каждого узла из третьей подгруппы множества узлов; и
- выполнение (208) данным узлом (110) по меньшей мере части первого действия в соответствии с предварительно определенной процедурой.
[107] ПУНКТ 5. Способ (200) по п. 4, дополнительно включающий в себя возвращение данным узлом (110) результата первого действия конкретному узлу (108), причем результат первого действия агрегируется конкретным узлом (108) с соответствующими результатами первого действия третьей подгруппы множества узлов (108, 112) и передается обратно на клиентское устройство (102).
[108] ПУНКТ 6. Способ (200) по п. 5, в котором другая подгруппа (108, 112), первая подгруппа (108, 112), вторая подгруппа (108, 112) и третья подгруппа (108, 112) включают в себя те же самые узлы из множества узлов.
[109] ПУНКТ 7. Способ (200) по п. 6, способ (200) дополнительно включает в себя:
- отслеживание (203) параметра ожидания данным узлом (110), причем параметр ожидания связан с первой частью процедуры подтверждения действия, и в ответ на превышение параметром ожидания первого предварительно определенного порога указанное выполнение (204) данным узлом второй части процедуры подтверждения действия выполняется без ожидания дополнительных ответных сообщений.
[110] ПУНКТ 8. Способ (200) по п. 7, способ (200) дополнительно включает в себя:
- отслеживание параметра ожидания данным узлом (110), причем параметр ожидания дополнительно связан со второй частью процедуры подтверждения действия, и в ответ на превышение параметром ожидания второго предварительно определенного порога указанное выполнение (206) данным узлом третьей части процедуры подтверждения действия выполняется без ожидания дополнительных ответных сообщений.
[111] ПУНКТ 9. Способ (200) по п. 8, способ (200) дополнительно включает в себя:
- отслеживание параметра ожидания данным узлом (110), причем параметр ожидания дополнительно связан с третьей частью процедуры подтверждения действия, и в ответ на превышение параметром ожидания третьего предварительно определенного порога указанное выполнение данным узлом первого действия выполняется без ожидания дополнительных ответных сообщений.
[112] ПУНКТ 10. Способ (200) по п. 1, в котором предварительно определенный порог является по меньшей мере минимумом из (n/2) узлов, где n - число узлов в пределах множества узлов (108, 110, 112).
[113] ПУНКТ 11. Способ (200) по п. 1, в котором каждый узел из множества узлов (108, 110, 112) связана с соответствующим уникальным ID, и каждый узел из множества узлов (108, 110, 112) хранит указание соответствующего уникального ID каждого другого узла из множества узлов (108, 110, 112), что таким образом позволяет каждому узлу из множества узлов (108, 110, 112) быть осведомленным о присутствии каждого другого узла в пределах распределенной компьютерной системы (104).
[114] ПУНКТ 12. Способ (200) по п. 2, в котором данный узел (110) из множества узлов (108, 110, 112) включает в себя память, и способ дополнительно включает в себя выполнение данным узлом (110) из множества узлов (108, 110, 112) перед соответствующим выполнением первой части процедуры подтверждения действия, второй части процедуры подтверждения действия, третьей части процедуры подтверждения действия:
- сохранения (200) первого статусного сообщения в памяти;
- сохранения (203) первого множества сообщений в памяти;
- сохранения (205) второго множества сообщений в памяти;
- сохранения (207) третьего множества сообщений в памяти.
[115] ПУНКТ 13. Способ (200) по п. 1, способ (200) дополнительно включает в себя, для другого узла (112) из множества узлов:
- получение другим узлом (112) из множества узлов (108, 110, 112) от конкретного узла (108) первого статусного сообщения, включающего в себя указание первого действия;
- отправку другим узлом (112) четвертой подгруппе множества узлов (108, 110) ответа на первое статусное сообщение, причем ответ на первое статусное сообщение является частью первой части процедуры подтверждения действия;
- получение (203) другим узлом (112) из множества узлов от четвертой подгруппы множества узлов (108, 110) четвертого множества сообщений, включающего в себя соответствующий ответ на первое статусное сообщение от каждого узла из третьей подгруппы множества узлов (108, 110);
- в ответ на то, что число узлов в пределах четвертой подгруппы множества узлов (108, 110) по меньшей мере равно предварительно определенному порогу, выполнение другим узлом (112) второй части процедуры подтверждения действия, причем вторая часть процедуры подтверждения действия следует за первой частью, а выполнение включает в себя отправку (204) другим узлом (112) по меньшей мере четвертой подгруппе множества узлов (108, 110) второго статусного сообщения, причем отправка второго статусного сообщения является частью второй части процедуры подтверждения действия;
- получение (205) другим узлом (112) из множества узлов от четвертой подгруппы множества узлов (108, 110) пятого множества сообщений, включающего в себя соответствующие вторые статусные сообщения от каждого узла из пятой подгруппы множества узлов;
- в ответ на то, что число узлов в пределах пятой подгруппы множества узлов (108, 110) по меньшей мере равно предварительно определенному порогу, выполнение другим узлом (112) третьей части процедуры подтверждения действия, причем выполнение включает в себя отправку (206) другим узлом (112) по меньшей мере пятой подгруппе множества узлов (108, 110) третьего статусного сообщения, причем отправка третьего статусного сообщения является частью третьей части процедуры подтверждения действия;
- получение (207) другим узлом (112) из множества узлов от шестой подгруппы множества узлов (108, 110) шестого множества сообщений, включающего в себя соответствующие третьи статусные сообщения от каждого узла из шестой подгруппы множества узлов (108, 110); и
- выполнение (208) другим узлом (112) по меньшей мере части первого действия в соответствии с предварительно определенной процедурой.
[116] ПУНКТ 14. Распределенная компьютерная система (104) для осуществления процедуры подтверждения действия по меньшей мере для клиентского устройства (102), функционально подключенного к распределенной компьютерной системе (104), причем распределенная компьютерная система (104) включает в себя:
- множество узлов (108, 110, 112); причем каждый узел из множества узлов включает в себя:
- сетевой интерфейс, причем сетевой интерфейс взаимно связывает каждую ноду из множества узлов с каждым другим узлом из множества узлов по сети передачи данных;
- носитель информации и процессор, соединенный с носителем информации, причем процессор выполнен с возможностью получать доступ к машиночитаемым командам, которые, при их исполнении, инициируют осуществление процессором, после того, как конкретный узел (108) из множества узлов (108, 110, 112) получает первое клиентское сообщение от клиентского устройства (102), причем первое клиентское сообщение включает в себя указание действия, и конкретный узел из множества узлов передает первое статусное сообщение, включая указание первого действия, остальным узлам из множества узлов (108, 110, 112), причем передача первого статусного сообщения является первой частью процедуры подтверждения действия:
- получение (203) по сети передачи данных данным узлом (110) из множества узлов (108, 110, 112) от первой подгруппы множества узлов (108, 112) первого множества ответных сообщений, включающего в себя соответствующий ответ на первое статусное сообщение от каждым узлом из первой подгруппы множества узлов (108, 112);
- в ответ на то, что число узлов в первой подгруппе множества узлов (108, 112) по меньшей мере равно предварительно определенному порогу, выполнение данным узлом (110) второй части процедуры подтверждения действия, причем вторая часть процедуры подтверждения действия следует за первой частью, выполнение включает в себя отправку (204) по сети передачи данных данным узлом (110) по меньшей мере первой подгруппе множества узлов (108, 112), второго статусного сообщения, причем отправка второго статусного сообщения является частью второй части процедуры подтверждения действия.