Способ и система передачи данных между нодами без лидера

Иллюстрации

Показать все

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

Реферат

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

[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 передачи данных. В контексте настоящего описания «нода» может подразумевать под собой компьютерную программу, работающую на соответствующем оборудовании, которая способна получать и передавать запросы (например, от кл