СПОСОБ И СИСТЕМА ДЛЯ ОБРАБОТКИ ЗАПРОСА НА ТРАНЗАКЦИЮ В РАСПРЕДЕЛЕННЫХ СИСТЕМАХ ОБРАБОТКИ ДАННЫХ
METHOD AND SYSTEM FOR TRANSACTION REQUEST PROCESSING IN DISTRIBUTED DATA PROCESSING SYSTEMS

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[01] Настоящая технология относится к системам и способам коммуникации в распределенных системах. Конкретнее к системам и способам обработки запроса на транзакцию в распределенных системах обработки данных.
УРОВЕНЬ ТЕХНИКИ
[02] Распределенные системы, также известные как распределенное вычисление, в общем случае включают в себя коллекцию автономных вычислительных элементов или нод в сети, включая программное обеспечение для создания интегрированного вычислительного средства путем коммуникации и координации действий по обмену сообщениями. Распределенные системы позволяют более эффективно выполнять задачи за счет своих размеров и мощностей, которые превосходят комбинации отдельных систем. Распределенные системы могут применяться в большом количестве областей, таких как, например, телекоммуникационные сети, контроль процессов в реальном времени и параллельные вычисления. Распределенные системы могут обладать различными архитектурными воплощениями: например клиент-серверная архитектура, трехуровневая архитектура, n-уровневая архитектура, одноранговая архитектура, архитектура со слабым или сильным связыванием.
[03] Распределенные системы применяются для обработки различных компьютерных операций, включая информационные транзакции, которые разделяются на отдельные, неделимые субоперации, обычно обозначаемые как «операции». Каждая транзакция проходит либо успешно, либо безуспешно, функционируя как цельный элемент. Другими словами, подобная компьютерная транзакция не может быть «частично завершена» - если по меньшей мере одна составляющая операция дает сбой, вся компьютерная транзакция будет безуспешной.
[04] Поскольку составляющие субоперации (или транзакции) могут выполняться различными нодами распределенной системы, основной задачей обработки транзакций является поддержка целостности системы (например, согласованности данных в базе данных) путем проверки того, что все независимые операции в распределенной системе либо вместе завершаются успешно, либо все отменяются.
[05] Например, одной из областей применения распределенных систем является обработка транзакций в системе интернет-банкинга, в которой удаленные клиентские компьютеры (например, ноутбуки, настольные компьютеры, смартфоны и так далее) используются для доступа к серверу интернет-банкинга с целью выполнения удаленной транзакции на данных, которые содержатся на сервере интернет-банкинга (например, данные о счетах и так далее). Для целей иллюстрации предположим, что удаленная транзакция представляет собой перевод 500$ со сберегательного клиентского счета на расчетный клиентский счет. Эта транзакция включает в себя по меньшей мере две отдельные операции в терминах компьютера: списание средств, связанных со сберегательным счетом, в размере 500$, и пополнение средств, связанных с расчетным счетом, в размере 500$. Если одна операция проходит успешно, а другая нет, в банковских книгах не будет баланса. Таким образом, обработка транзакции занимается проверкой того, чтобы либо обе операции прошли успешно, либо обе были отменены, чтобы избежать несогласованности в банковской базе данных.
[06] Обработка транзакции связывает множество индивидуальных операций в единую транзакцию и проверяет тот факт, что все операции в единой транзакции либо завершаются без ошибок, либо отменяются. Если некоторые операции завершаются, но в других возникает ошибка, система обработки транзакции «откатывает назад» все операции транзакции (включая успешные), стирая тем самым все следы транзакции и возвращая систему в известное согласованное состояние, в котором она находилась до начала обработки транзакции.
[07] Если все операции транзакции выполняются успешно, транзакция «фиксируется» системой. Другими словами, все перемены, произведенные в базе данных в результате выполнения составляющих операций, становятся перманентными - таким образом, транзакцию нельзя «откатить назад» после того  как она была зафиксирована.
[08] Обработка транзакции предохраняет аппаратное обеспечение и программное обеспечение от ошибок, которые могут привести к частичному завершению транзакции. Если компьютерная система дает сбой в середине транзакции, система обработки транзакции обеспечивает отмену всех операций в неподтвержденных транзакциях. В некоторых обстоятельствах несколько запросов на транзакции могут быть переданы одновременно (или почти одновременно, когда запрос на следующую транзакцию передается до того, как был полностью выполнен предыдущий запрос).
[09] Если два последующих запроса на транзакции пересекаются (т.е. есть необходимость в обработке данных, хранящихся в той же части базе данных), обработка двух перекрывающихся запросов на транзакции может потенциально приводить к конфликтам. Например, если клиент, упомянутый в предыдущем примере, имеет 550$ на своем сберегательном счету и пытается перевести 100$ другому лицу и в то же время хочет перевести 500$ на свой расчетный счет, только одна из этих транзакций может быть завершена успешно.
[10] Вместо последовательной обработки транзакций (что является в общем случае неэффективным) обработка транзакции в распределенной системе основывается на предположении о том, что одновременная обработка транзакций выполняется таким образом, что конечный результат не приводит к конфликтам в конечном результате, как если бы тот же результат был достигнут путем выполнения транзакций последовательно в любом порядке. В контексте настоящего примера это означает, что вне зависимости от того, какой запрос был передан первым, либо на перевод средств другому лицу, либо на перевод на расчетный счет, другой запрос будет не будет успешным.
[11] Патентная заявка US 2014/0297652 раскрывает компьютерную систему, которая идентифицирует информацию с высокой ценностью в потоках данных. Компьютерная система получает множество потоков данных. Каждый из потоков данных включает в себя множество постов. Каждый из постов включает в себя часть содержимого и одну или несколько характеристик источника. В режиме реального времени для каждого поста в конкретном потоке данных система назначает идентификатор поста; создает пакет содержимого и один или несколько пакетов источника; запрашивает у памяти доступ к профилю источника с помощью соответствующего идентификатора источника, включенного в пакет содержимого; соотносит пакет содержимого с информацией из профиля источника для создания пакета соотнесенного содержимого; и передает пакет соотнесенного содержимого множеству граф-фильтров.
[12] Патентная заявка US 7,813,276 описывает сетевой кластер, обладающий множеством членов кластера. Для того чтобы контролировать прием клиентских запросов, переданных кластеру, один член кластера выбирается как «координатор бронирования». Координатор бронирования выполняет алгоритм бронирования для управления распределением емкости трафика между членами кластера. Например, каждый член кластера может бронировать какую-то долю емкости трафика у координатора, что позволяет пропускать клиентские запросы. Чтобы гарантировать, что каждому члену предоставлена достаточная емкость трафика, каждый член кластера выполняет алгоритм оценки для определения необходимости бронирования дополнительной емкости трафика у координатора бронирования или необходимости возвращения емкости трафика в кластер для перераспределения. Алгоритм оценки выполняется в реальном времени и позволяет алгоритму контроля за приемом адаптироваться к переменам в распределении емкости трафика.
[13] Патентная заявка US 8,028,152 описывает иерархический микропроцессор. Вариант осуществления иерархического микропроцессора включает в себя множество элементов канала первого уровня инструкции; множество исполнительных кластеров, функционально соединенных с каждым из элементов канала первого уровня инструкции. Каждый исполнительный кластер включает в себя множество элементов канала второго уровня инструкции, и каждый из элементов канала второго уровня инструкции соответствует соответствующему элементу канала первого уровня инструкции, и один или несколько блоков выполнения инструкции функционально соединены с каждым из элементов канала второго уровня инструкции, причем микропроцессор выполнен с возможностью выполнять несколько исполнительных потоков с помощью множества элементов канала первого уровня инструкции и множества исполнительных кластеров.
РАСКРЫТИЕ
[14] Задачей настоящей технологии является уменьшение по меньшей мере некоторых недостатков, присущих текущему уровню техники в отношении выполнения действия по фиксированию процедур в распределенной системе без выбора лидера.
[15] Разработчики настоящей технологии разработали варианты ее осуществления на основе предпосылки к созданию распределенной иерархической структуры данных транзакции (РИСДТ). РИСДТ включает в себя множество нод, множество нод включает в себя контрольную ноду и набор исполнительных нод. Контрольная нода выполнена с возможностью получать запросы на транзакции (запрос на транзакцию связан с компьютерной транзакцией, которая выполняется в виде «полностью успешно или полностью безуспешно») от удаленных клиентов на модификацию данных внутри РИСДТ. Каждая из набора исполнительных нод в РИСДТ связана с заранее определенным типом компьютерной транзакции и напрямую доступна контрольной ноде.
[16] Набор исполнительных нод в РИСДТ организован в иерархические деревья, причем по меньшей мере одна нода, являющаяся верхней нодой, содержит подчиненную ноду. Набор исполнительных нод организован в иерархию в соответствии с заранее определенным типом компьютерной транзакции, выполняемой данной из набора исполнительных нод, таким образом: данная нода из набора исполнительных нод является дочерней нодой по отношению к другой ноде из набора исполнительных нод на основе заранее определенного типа компьютерной транзакции, выполняемой дочерней нодой, причем транзакция является вложенной компьютерной транзакцией по отношению к заранее определенному типу компьютерной транзакции, исполняемой другой нодой из набора исполнительных нод, другая нода из набора исполнительных нод является родительской нодой.
[17] Контрольная нода выполнена с возможностью поддерживать список уникальных адресов для каждой из набора исполнительных нод и соответствие каждой конкретной ноды из набора исполнительных нод и связанного заранее определенного типа компьютерной транзакции, выполняемой конкретной нодой из набора исполнительных нод.
[18] Первым объектом настоящей технологии является способ обработки запроса на транзакцию, связанного с компьютерной транзакцией, которая должна выполняться в виде «полностью успешно или полностью безуспешно», способ выполняется в распределенной системе обработки, обладающей множеством нод, множество нод включает в себя контрольную ноду и набор исполнительных нод, и каждая из набора исполнительных нод связана с заранее определенным типом компьютерной транзакции; напрямую доступна контрольной ноде; набор исполнительных нод организован в иерархию в соответствии с заранее определенным типом компьютерной транзакции, исполняемой данной нодой из набора исполнительных нод, таким образом, что данная нода из набора исполнительных нод является дочерней нодой по отношению к другой ноде из набора исполнительных нод на основе заранее определенного типа компьютерной транзакции, исполняемой дочерней нодой, транзакция является вложенной компьютерной транзакцией по отношению к заранее определенному типу компьютерной транзакции, исполняемой другой нодой из набора исполнительных нод, другая нода из набора исполнительных нод является родительской нодой; контрольная нода поддерживает список уникальных адресов для каждой из набора исполнительных нод; и соответствие каждой конкретной ноды из набора исполнительных нод и связанного заранее определенного типа компьютерной транзакции, выполняемой конкретной нодой из набора исполнительных нод; контрольная нода распределенной системы обработки доступна клиентскому устройству через сеть передачи данных; распределенная система обработки далее включает в себя устройство хранения данных для сохранения данных, с которыми совершается компьютерная транзакция распределенной системой обработки; способ включает в себя получение контрольной нодой от клиентского устройства запроса на транзакцию для модификации по меньшей мере части данных, расположенных на устройстве хранения данных; запрос на транзакцию включает в себя указания на заранее определенный тип компьютерной транзакции, который будет выполнен; определение контрольной нодой на основе заранее определенного типа компьютерной транзакции и разметки конкретной ноды из набора исполнительных нод, которая отвечает за заранее определенный тип компьютерной транзакции; с помощью списка уникальных адресов передачу запроса на транзакцию для его выполнения напрямую идентифицированной конкретной ноде из набора исполнительных нод; передача запроса на транзакцию идентифицированной конкретной ноде из набора исполнительных нод инициирует идентифицированную конкретную ноду из набора исполнительных нод выполнить блокировку идентифицированной конкретной нодой из набора исполнительных нод получения дополнительных запросов на транзакции, пока запрос на транзакцию не будет выполнен.
[19] В некоторых вариантах осуществления способа блокировка включает в себя выполнение идентифицированной конкретной нодой из набора исполнительных нод функции эксклюзивной блокировки.
[20] В некоторых вариантах осуществления способа выполнение функции эксклюзивной блокировки включает в себя выполнение одного из следующего: алгоритма Деккера, алгоритма Петерсона; алгоритма пекарни Лэмпорта; или алгоритма Шиманского.
[21] В некоторых вариантах осуществления способа блокировка дополнительно включает в себя организацию очереди из одного или нескольких дополнительных запросов на транзакции, полученных идентифицированной конкретной нодой из набора исполнительных нод при выполнении запроса на транзакцию.
[22] В некоторых вариантах осуществления способа способ дополнительно включает в себя последовательное выполнение следующего из одного или нескольких дополнительных запросов на транзакцию после завершения выполнения запроса на транзакцию.
[23] В некоторых вариантах осуществления способа блокировка включает в себя передачу указания на то, что запрос на транзакцию обрабатывается идентифицированной конкретной нодой из набора исполнительных нод, ее родительской ноде в ответ на передачу, получение инструкции блокировки от родительской ноды.
[24] В некоторых вариантах осуществления способа инструкция блокировки включает в себя инструкцию типа эксклюзивной блокировки.
[25] В некоторых вариантах осуществления способа инструкция типа эксклюзивной блокировки основана по меньшей мере на одном из алгоритме Деккера, алгоритме Петерсона; алгоритме пекарни Лэмпорта; или алгоритме Шиманского.
[26] В некоторых вариантах осуществления способа блокировка дополнительно включает в себя передачу одного или нескольких дополнительных запросов на транзакции, полученных идентифицированной конкретной нодой из набора исполнительных нод при выполнении запроса на транзакцию, ее родительской ноде.
[27] В некоторых вариантах осуществления способа передача одного или нескольких дополнительных запросов на транзакции, полученных идентифицированной конкретной нодой из набора исполнительных нод при выполнении запроса на транзакцию, ее родительской ноде инициирует родительскую ноду выполнять по меньшей мере одно из: организацию очереди родительской нод ой, из одного или нескольких дополнительных запросов на транзакцию; переназначение одного или нескольких дополнительных запросов на транзакции другой дочерней ноде, выполненной с возможностью выполнять заранее определенный тип компьютерной транзакции.
[28] В некоторых вариантах осуществления способа, блокировка дополнительно включает в себя: отказ одному или нескольким дополнительным запросам на транзакции, полученным идентифицированной конкретной нодой из набора исполнительных нод при выполнении запроса на транзакцию, и возврат одного или нескольких дополнительных запросов на транзакцию контрольной ноде.
[29] В некоторых вариантах осуществления способа, возврат одного или нескольких дополнительных запросов на транзакцию контрольной ноде инициирует контрольную ноду выполнять по меньшей мере одно из: организацию очереди контрольной нодой из одного или нескольких дополнительных запросов на транзакцию; периодическую повторную передачу контрольной нодой одного или нескольких дополнительных запросов на транзакцию идентифицированной конкретной ноде из набора исполнительных нод, когда идентифицированная конкретная нода из набора исполнительных нод выполняет один или нескольких дополнительных запросов на транзакцию; переназначение одного или нескольких дополнительных запросов на транзакцию другой исполнительной ноде, выполненной с возможностью исполнять заранее определенный тип компьютерной транзакции.
[30] В некоторых вариантах осуществления способа, блокировка дополнительно включает в себя: анализ запроса на транзакцию для определения по меньшей мере части данных, которые будут модифицированы запросом транзакции; определение в устройстве хранения данных части памяти, которая хранит по меньшей мере часть данных, которые будут модифицированы запросом на транзакцию; бронирование исключительного права на чтение и запись в части памяти идентифицированной конкретной нодой из набора исполнительных нод.
[31] В некоторых вариантах осуществления способа, способ дополнительно включает в себя, после того как идентифицированная конкретная нода из набора исполнительных нод завершает выполнение запроса на транзакцию; освобождение эксклюзивного права на чтение и запись в части памяти, идентифицированной конкретной нодой из набора исполнительных нод.
[32] В некоторых вариантах осуществления способа, бронирование эксклюзивного права на чтение и запись в части памяти идентифицированной конкретной нодой из набора исполнительных нод включает в себя выполнение функции типа эксклюзивной блокировки.
[33] В некоторых вариантах осуществления способа, выполнение функции типа эксклюзивной блокировки включает в себя выполнение по меньшей мере одного из следующего: алгоритма Деккера, алгоритма Петерсона; алгоритма пекарни Лэмпорта; или алгоритма Шиманского.
[34] В некоторых вариантах осуществления способа способ далее включает в себя в ответ на то, что идентифицированная конкретная нода из набора исполнительных нод завершает выполнение запроса на транзакцию: передачу исполнительного сообщения запроса на транзакцию контрольной ноде.
[35] В некоторых вариантах осуществления способа, исполнительное сообщение запроса на транзакцию включает в себя одно из в ответ на то, что вся совокупность действий, связанных с запросом на транзакцию, была успешно завершена, подтверждение успешности запроса на транзакции и вывод из исполнения запроса на транзакцию; и в ответ на то, что по меньшей мере одно действие из совокупности действий, связанных с запросом на транзакцию, не было успешно завершено, сообщение об ошибке запроса на транзакцию.
[36] В некоторых вариантах осуществления способа определение контрольной нодой на основе заранее определенного типа компьютерной транзакции и разметки конкретной ноды из набора исполнительных нод, ответственной за заранее определенный тип компьютерной транзакции, включает в себя определение одной конкретной ноды из набора исполнительных нод, ответственной за заранее определенный тип компьютерной транзакции.
[37] В некоторых вариантах осуществления способа определение контрольной нодой на основе заранее определенного типа компьютерной транзакции и разметки, конкретной ноды из набора исполнительных нод, ответственной за заранее определенный тип компьютерной транзакции, включает в себя определение главной заранее определенной конкретной ноды из набора исполнительных нод, ответственной за заранее определенный тип компьютерной транзакции.
[38] Другим объектом настоящей технологии является распределенная система обработки, включающая в себя: множество нод, множество нод включает в себя контрольную ноду из набора исполнительных нод, каждая из набора исполнительных нод: связана с заранее определенным типом компьютерного транзакции, которая относится к типу, который должен быть выполнен в виде «полностью успешно или полностью безуспешно»; напрямую доступна контрольной ноде; набор исполнительных нод организован в иерархию в соответствии с заранее определенным типом компьютерной транзакции, исполняемой данной нодой из набора исполнительных нод, таким образом, что данная нода из набора исполнительных нод является дочерней нодой по отношению к другой ноде из набора исполнительных нод на основе заранее определенного типа компьютерной транзакции, исполняемой дочерней нодой, транзакция является вложенной компьютерной транзакцией по отношению к заранее определенному типу компьютерной транзакции, исполняемой другой нодой из набора исполнительных нод, другая нода из набора исполнительных нод является родительской нодой; контрольная нода поддерживает список уникальных адресов для каждой из набора исполнительных нод; и соответствие каждой конкретной ноды из набора исполнительных нод и связанного заранее определенного типа компьютерной транзакции, выполняемой конкретной нодой из набора исполнительных нод; интерфейс связи, который позволяет контрольной ноде распределенной системы обработки быть доступной клиентскому устройству через сеть передачи данных; устройство хранения данных для сохранения данных, с которыми совершается компьютерная транзакция распределенной системой обработки; контрольная нода выполнена с возможностью осуществлять получение от клиентского устройства запроса на транзакцию для модификации по меньшей мере части данных, расположенных на устройстве хранения данных; запрос на транзакцию включает в себя указания на заранее определенный тип компьютерной транзакции, который будет выполнен; определение на основе заранее определенного типа компьютерной транзакции и разметки конкретной ноды из набора исполнительных нод, которая отвечает за заранее определенный тип компьютерной транзакции; с помощью списка уникальных адресов передачу запроса на транзакцию для его выполнения напрямую идентифицированной конкретной ноде из набора исполнительных нод; передачу запроса на транзакцию идентифицированной конкретной ноде из набора исполнительных нод инициирует идентифицированную конкретную ноду из набора исполнительных нод выполнить блокировку идентифицированной конкретной нодой из набора исполнительных нод получения дополнительных запросов на транзакции, пока запрос на транзакцию не будет выполнен.
[39] В контексте настоящего описания, если четко не указано иное, "электронное устройство", "пользовательское устройство", "сервер", "удаленный сервер" и "компьютерная система" подразумевают под собой аппаратное и/или системное обеспечение, подходящее к решению соответствующей задачи. Таким образом, некоторые неограничивающие примеры аппаратного и/или программного обеспечения включают в себя компьютеры (серверы, настольные компьютеры, ноутбуки, нетбуки и так далее), смартфоны, планшеты, сетевое оборудование (маршрутизаторы, коммутаторы, шлюзы и так далее) и/или их комбинацию.
[40] В контексте настоящего описания, если четко не указано иное, "машиночитаемый носитель" и "память" подразумевает под собой носитель абсолютно любого типа и характера, не ограничивающие примеры включают в себя ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB-ключи, флеш-карты, твердотельные накопители и накопители на магнитной ленте.
[41] В контексте настоящего описания, если четко не указано иное, «указание» информационного элемента может представлять собой сам информационный элемент или указатель, отсылку, ссылку или другой косвенный способ, позволяющий получателю указания найти сеть, память, базу данных или другой машиночитаемый носитель, из которого может быть извлечен информационный элемент. Например, указание на файл может включать в себя сам файл (т.е. его содержимое), или же оно может являться уникальным дескриптором файла, идентифицирующим файл по отношению к конкретной файловой системе, или каким-то другими средствами передавать получателю указание на сетевую папку, адрес памяти, таблицу в базе данных или другое место, в котором можно получить доступ к файлу. Как будет понятно специалистам в данной области техники, степень точности, необходимая для такого указания, зависит от степени первичного понимания того, как должна быть интерпретирована информация, которой обмениваются получатель и отправитель указателя. Например, если до установления связи между отправителем и получателем понятно, что признак информационного элемента принимает вид ключа базы данных для записи в конкретной таблице заранее установленной базы данных, содержащей информационный элемент, то передача ключа базы данных - это все, что необходимо для эффективной передачи информационного элемента получателю, несмотря на то, что сам по себе информационный элемент не передавался между отправителем и получателем указания.
[42] В контексте настоящего описания, если конкретно не указано иное, слова «первый», «второй», «третий» и и т.д. используются в виде прилагательных исключительно для того, чтобы отличать существительные, к которым они относятся, друг от друга, а не для целей описания какой-либо конкретной взаимосвязи между этими существительными. Так, например, следует иметь в виду, что использование терминов «первая нода» и «третья нода» не подразумевает какого-либо порядка, отнесения к определенному типу, хронологии, иерархии или ранжирования (например) нод/между нодами, равно как и их использование (само по себе) не предполагает, что некая "вторая нода" обязательно должна существовать в той или иной ситуации. В дальнейшем, как указано здесь в других контекстах, упоминание «первого» элемента и «второго» элемента не исключает возможности того, что это один и тот же фактический реальный элемент. Так, например, в некоторых случаях, «первая» нода и «вторая» нода могут являться одним и тем же программным и/или аппаратным обеспечением, а в других случаях они могут являться разным программным и/или аппаратным обеспечением.
[43] Каждый вариант осуществления настоящей технологии преследует по меньшей мере одну из вышеупомянутых целей и/или объектов, но наличие всех не является обязательным. Следует иметь в виду, что некоторые объекты данной технологии, полученные в результате попыток достичь вышеупомянутой цели, могут не удовлетворять этой цели и/или могут удовлетворять другим целям, отдельно не указанным здесь.
[44] Дополнительные и/или альтернативные характеристики, аспекты и преимущества вариантов осуществления настоящей технологии станут очевидными из последующего описания, прилагаемых чертежей и прилагаемой формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[45] Для лучшего понимания настоящей технологии, а также других ее аспектов и характерных черт сделана ссылка на следующее описание, которое должно использоваться в сочетании с прилагаемыми чертежами, где:
[46] На Фиг. 1 представлена система, которая подходит для реализации неограничивающих вариантов осуществления настоящей технологии и/или которая используется в сочетании с вариантами осуществления настоящей технологии.
[47] На Фиг. 2 представлена иерархическая разметка, которая поддерживается контрольной нодой системы, изображенной на Фиг. 1, иерархическая разметка представлена в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.
[48] На Фиг. 3 представлена разметка уникальных адресов, которая поддерживается контрольной нодой системы, изображенной на Фиг. 1, разметка уникальных адресов представлена в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.
[49] На Фиг. 4 представлена блок-схема способа, выполняемого контрольной нодой, изображенной на Фиг. 1, и выполненного в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.
ОСУЩЕСТВЛЕНИЕ
[50] Все примеры и используемые здесь условные конструкции предназначены, главным образом, для того, чтобы помочь читателю понять принципы настоящей технологии, а не для установления границ ее объема. Следует также отметить, что специалисты в данной области техники могут разработать различные схемы, отдельно не описанные и не показанные здесь, но которые, тем не менее, воплощают собой принципы настоящей технологии и находятся в границах ее объема.
[51] Кроме того, для ясности в понимании следующее описание касается достаточно упрощенных вариантов осуществления настоящей технологии. Как будет понятно специалисту в данной области техники, многие варианты осуществления настоящей технологии будут обладать гораздо большей сложностью.
[52] Некоторые полезные примеры модификаций настоящей технологии также могут быть охвачены нижеследующим описанием. Целью этого является также исключительно помощь в понимании, а не определение объема и границ настоящей технологии. Эти модификации не представляют собой исчерпывающего списка, и специалисты в данной области техники могут создавать другие модификации, остающиеся в границах объема настоящей технологии. Кроме того, те случаи, где не были представлены примеры модификаций, не должны интерпретироваться как то, что никакие модификации невозможны, и/или что то, что было описано, является единственным вариантом осуществления этого элемента настоящей технологии.
[53] Более того, все заявленные здесь принципы, аспекты и варианты осуществления настоящей технологии, равно как и конкретные их примеры, предназначены для обозначения их структурных и функциональных основ, вне зависимости от того, известны ли они на данный момент или будут разработаны в будущем. Таким образом, например, специалистами в данной области техники будет очевидно, что представленные здесь блок-схемы представляют собой концептуальные иллюстративные схемы, отражающие принципы работы настоящей технологии. Аналогично любые блок-схемы, диаграммы, псевдокоды и т.п. представляют собой различные процессы, которые могут быть представлены на машиночитаемом носителе и, таким образом, использоваться компьютером или процессором вне зависимости от того, показан явно подобный компьютер или процессор, или нет.
[54] Функции различных элементов, показанных на фигурах, включая функциональный блок, обозначенный как «процессор» или «графический процессор», могут быть обеспечены с помощью специализированного аппаратного обеспечения или же аппаратного обеспечения, способного использовать подходящее программное обеспечение. Когда речь идет о процессоре, функции могут обеспечиваться одним специализированным процессором, одним общим процессором или множеством индивидуальных процессоров, причем некоторые из них могут являться общими. В некоторых вариантах осуществления настоящей технологии процессор может являться универсальным процессором, например центральным процессором (CPU) или специализированным для конкретной цели процессором, например графическим процессором (GPU). Более того, использование термина "процессор" или "контроллер" не должно подразумевать исключительно аппаратное обеспечение, способное поддерживать работу программного обеспечения, и может включать в себя, без установления ограничений, цифровой сигнальный процессор (DSP), сетевой процессор, интегральную схему специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA), постоянное запоминающее устройство (ПЗУ) для хранения программного обеспечения, оперативное запоминающее устройство (ОЗУ) и энергонезависимое запоминающее устройство. Также может быть включено другое аппаратное обеспечение, обычное и/или специальное.
[55] Программные модули или простые модули, представляющие собой программное обеспечение, которое может быть использовано здесь в комбинации с элементами блок-схемы или другими элементами, которые указывают на выполнение этапов процесса и/или текстовое описание. Подобные модели могут быть выполнены на аппаратном обеспечении, показанном напрямую или косвенно.
[56] С учетом этих примечаний далее будут рассмотрены некоторые неограничивающие варианты осуществления аспектов настоящей технологии.
[57] На Фиг. 1 представлена система 100, подходящая для использования с некоторыми вариантами осуществления настоящей технологии. Система 100 может содержать, среди прочего, клиентское устройство 102, соединенное с распределенной системой 104 обработки через сеть 106 передачи данных и линию 103 передачи данных.
[58] Распределенная система 104 обработки включает в себя множество нод: первую ноду 108, вторую ноду 110 и третью ноду 112, которые взаимосвязаны с помощью линий 107 передачи данных. В настоящем контексте первая нода 108, вторая нода 110 и третья нода 112 являются примерами множества нод (не показано), которые потенциально присутствуют в распределенной системе 104 обработки. Важно иметь в виду, что распределенная система 104 обработки может включать в себя любое количество нод из множества нод, и точное число нод из множества нод зависит от требований к обработке распределенной системы 104 обработки.
[59] Каждое из клиентского устройства 102, первой ноды 108, второй ноды 110 и третьей ноды 112 системы 100 может быть расположено в одном и том же географическом месте, например компьютерном кластере или компьютерной сети. Альтернативно некоторые из все из клиентского устройства 102, первой ноды 108, второй ноды 110 и третьей ноды 112 могут быть географически распределены по различным устройствам и связаны через сеть 106 передачи данных и/или другие сеть передачи данных (не показаны), например Интернет.
[60] В некоторых вариантах осуществления технологии, система 100 может быть реализована как облачный сервер. В других вариантах осуществления технологии, система 100 может быть реализована как одноранговая система. Следовательно, в некоторых вариантах осуществления настоящей технологии, не ограничивающих ее объем, сеть 106 передачи данных может представлять собой Интернет. В других вариантах осуществления настоящей технологии сеть связи 106 может быть реализована иначе - в виде глобальной сети связи, локальной сети связи, частной сети связи и т.п.
[61] В контексте настоящей технологии распределенная система 104 обработки может считаться «распределенной сетью» (также известна как «распределенная система» и «распределенное вычисление»). Термин «распределенная сеть» обозначает тип системы, которая включает в себя компоненты, которые связываются и координируют свои действия путем передачи сообщений для достижения общей целей (например, для выполнения общей задачи). Распределенная система 104 обработки может быть расположена в одном географическом месте, например компьютерном кластере или компьютерной сети, или же может быть распределена географически по различным устройствам и соединена с помощью линий 107 передачи данных сетью передачи данных (не показана), например Интернет. В представленном неограничивающем варианте осуществления технологии распределенная система 104 обработки включает в себя первую ноду 108, вторую ноду 110 и третью ноду 112. Распределенная система 104 обработки может быть выполнена с возможностью выполнять задачи последовательно, одновременно, параллельно или любым другим вычислительным образом, который позволяет распределенной системе 104 обработки выполнять задачи, запрошенные клиентским устройством 102.
[62] Варианты осуществления первой ноды 108, второй ноды 110 и третьей ноды 112 широко известны среди специалистов в данной области техники. Тем не менее, вкратце, каждая из первой ноды 108, второй ноды 110 и третьей ноды 112 может включать в себя соответствующий интерфейс связи (не показан), который настроен и выполнен с возможностью устанавливать соединение друг с другом и с различными элементами (например, клиентским устройством 102 и другими устройствами, потенциально присоединенными к распределенной системе 104 обработки) через линии 107 передачи данных.
[63] В контексте настоящего описания «нода» подразумевает под собой компьютерную программу, работающую на соответствующем аппаратном обеспечении, которая способна получать и передавать запросы (например, от клиентских устройств или других нод) по сети 106 передачи данных и выполнять эти запросы или инициировать выполнение этих запросов. В контексте настоящей технологии использование выражения «нода» не означает, что каждая задача (например, полученные команды или запросы) или какая-либо конкретная задача будет получена, выполнена или инициирована к выполнению одной и той же нодой (то есть одним и тем же программным обеспечением и/или аппаратным обеспечением); это означает, что любое количество элементов программного обеспечения или аппаратных устройств может быть вовлечено в прием/передачу, выполнение или инициирование выполнения любого запроса или последствия любого запроса, связанного с клиентским устройством, и все это программное и аппаратное обеспечение может быть одним сервером или несколькими серверами.
[64] Каждая из первой ноды 108, второй ноды 110 и третьей ноды 112 может быть реализована как обычный компьютерный сервер. В примере варианта осуществления настоящей технологии первая нода 108, вторая нода 110 и третья нода 112 могут представлять собой серверы Dell™ PowerEdge™, на которых используется операционная система Microsoft™ Windows Server™. Излишне говорить, что первая нода 108, вторая нода 110 и третья нода 112 может представлять собой любое другое подходящее аппаратное и/или прикладное программное, и/или системное программное обеспечение или их комбинацию.
[65] Первая нода 108, вторая нода 110 и третья нода 112 не должны быть реализованы на одном и том же аппаратном обеспечении. Первая нода 108, вторая нода 110 и третья нода 112 не должны работать на той же самой операционной системе (ОС) или могут быть написаны на разных языках программирования. Первая нода 108, вторая нода 110 и третья нода 112 может обладать слабым или сильным связыванием. В представленном неограничивающем варианте осуществления технологии первая нода 108, вторая нода 110 и третья нода 112 могут представлять собой физически независимые серверы, например серверы в серверной стойке. В других вариантах осуществления настоящей технологии первая нода 108, вторая нода 110 и третья нода 112 могут выполняться на одном и том же сервере. В других вариантах осуществления настоящей технологии, не ограничивающих ее объем, функциональность каждого из первой ноды 108, второй ноды 110 и третьей ноды 112 может быть разделена, и может выполняться с помощью нескольких серверов.
[66] Распределенная система 104 обработки может быть реализована на различных уровнях связи, например прикладном уровне, транспортном уровне, уровне интернета, уровне ссылки и физическом уровне, и в соответствии с различными протоколами связи или правилами кодировки и декодировния сообщений, которые могут зависеть от того, как реализованы первая нода 108, вторая нода 110 и третья нода 112 распределенной системы 104 обработки. В некоторых вариантах осуществления настоящей технологии, распределенная система 104 обработки может использовать пакет интернет протоколов (IP), также известный как протокол управления передачей (TCP), часто сокращаемый до ТСР/IР. Протокол TCP позволяет клиентам и нодам обмениваться данными в пакетах надежно и организованно. В других вариантах осуществления настоящей технологии распределенная система 104 обработки может использовать протокол пользовательских датаграмм (UPD). Первая нода 108, вторая нода 110 и третья нода 112 могут соответственно быть взаимосоединены с помощью линий 107 передачи данных, которые могут быть либо беспроводными (например, беспроводной интернет Wireless Fidelity или коротко WiFi, Bluetooth и так далее), либо проводными (например, соединение на основе сети Ethernet), либо комбинацией проводных и беспроводных.
[67] Первая нода 108, вторая нода 110 и третья нода 112 распределенной системы 104 обработки могут связываться с помощью передачи сообщений. В некоторых неограничивающих вариантах осуществления настоящей технологии подобное сообщение может включать в себя указание на отправителя, получателя и содержимое сообщение. Отправитель указывается для того, чтобы получатель знал, какая из первой ноды 108, второй ноды 110 и третьей ноды 112 передает сообщение, и получатель сообщения указывается для того чтобы было известно, кому из первой ноды 108, второй ноды 110 и третьей ноды 112 необходимо отправлять ответ. В некоторых вариантах осуществления настоящей технологии защищенный канал может использоваться для передачи сообщений, причем сообщения могут быть зашифрованы до передачи и дешифрованы после прочтения на основе общего секретного пароля или других известных способов криптографии.
[68] В некоторых вариантах осуществления настоящей технологии, механизм передачи сообщений может представлять собой чистый HTTP, соединения типа удаленного вызова процедур (RPC) и очередь сообщений. Сообщение также может включать в себя уникальный ID сообщения для идентификации сообщения, содержимое предыдущего действия любой нодой распределенной системы 104 обработки (т.е. первой нодой 108, второй нодой 110 и третьей нодой 112), номер приоритета, временную отметку, список выполняемых действий, инструкции для отправки других сообщений, исполняемый код, статистику об отправителе, такую как среднее время ответа, и другую релевантную информацию о распределенной системе 104 обработки.
[69] В настоящем контексте распространение относится к способу передачи сообщений путем отправки сообщения на все другие ноды (т.е. каждую из первой ноды 108, второй ноды 110 и третьей ноды 112) распределенной системы 104 обработки. Сообщения могут передаваться одновременно или не одновременно. Распространение может выполняться в виде «полное распределение», где каждая нода отправителя выполняет свое распределение, в котором сообщения могут отличаться для каждого получателя, или в виде «полное распространение», где все сообщения одинаковы для каждого получателя. В некоторых вариантах осуществления настоящей технологии распространение может быть заменено одноадресной передачей, многоадресной передачей или геоадресной передачей.
[70] Варианты осуществления клиентского устройства 102 никак конкретно не ограничены. Например, клиентское устройство 102 может быть выполнено с возможностью взаимодействовать с распределенной системой 104 обработки путем передачи/получения данных от/к распределенной системе 104 обработки через сеть 106 передачи данных и линию 103 передачи данных. Для этого клиентское устройство 102 может включать в себя, среди прочего, внутренние аппаратные компоненты, включая один или несколько одно- или мультиядерных процессоров, которые коллективно представлены здесь как процессор (не показан), ОЗУ (не показано), сетевой интерфейс (не показано) для связи с распределенной системой 104 обработки.
[71] В некоторых вариантах осуществления настоящей технологии клиентское устройство 102 может быть запрограммировано для предоставления команд и запросов в распределенную систему 104 обработки. Следовательно, в контексте настоящего описания «клиент» или «клиентское устройство» относится к блоку, который потребляет услугу, предоставляемую распределенной системой 104 обработки, и может представлять собой любое компьютерное аппаратное обеспечение, которое способно обеспечивать работу подходящего программного обеспечения, соответствующего имеющейся задаче. Таким образом, примерами клиентских устройств 102 (среди прочего) могут служить персональные компьютеры (настольные компьютеры, ноутбуки, нетбуки и т.п.), смартфоны, планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы.
[72] Следует отметить, что реализация линии 103 передачи данных не ограничена и будет зависеть от того, как именно реализованы клиентское устройство 102 и/или распределенная система 104 обработки. Исключительно в качестве примера, а не ограничения в тех вариантах осуществления настоящей технологии, где клиентское клиентское устройство 102 представляет собой портативный компьютер, линия 103 передачи данных может быть как беспроводной (беспроводной интернет Wireless Fidelity или WiFi, Bluetooth и т.п), так и проводной (соединение на основе сети Ethernet). В других вариантах осуществления технологии, где клиентское устройство может быть реализовано как беспроводное устройство связи (например, смартфон), линия 103 передачи данных может представлять собой беспроводную линию передачи данных (например, среди прочего, линию передачи данных 3G, линию передачи данных 4G, беспроводной интернет Wireless Fidelity или WiFi, Bluetooth и т.п.).
[73] Следует также отметить, что устройство, ведущее себя как клиентское устройство 102 в настоящем контексте, может вести себя как нода или сервер по отношению к другим клиентским устройствам (не показаны). В некоторых вариантах осуществления настоящей технологии, клиентское устройство 102 может представлять собой другую распределенную систему (не показано). В других вариантах осуществления настоящей технологии клиентское устройство 102 может работать на той же машине, что и распределенная система 104 обработки, или любая из первой ноды 108, второй ноды 110 и третьей ноды 112.
[74] Важно иметь в виду, что варианты реализации клиентского устройства 102, линии 103 передачи данных, сети 106 передачи данных и распределенной системы 104 обработки представлены исключительно для наглядности. Таким образом, специалисты в данной области техники смогут понять подробности других вариантов осуществления клиентского устройства 102, линии 103 передачи данных, сети 106 передачи данных и распределенной системы 104 обработки. Таким образом, представленные здесь примеры не ограничивают объем настоящей технологии.
[75] В общем случае, клиентское устройство 102 может инициировать распределенную систему 104 обработки выполнять компьютерную транзакцию путем передачи ей запроса 130 на транзакцию. Запрос 130 на транзакцию идентифицирует выполнение одной или нескольких операций, а также то, какие данные будут использованы одной или несколькими операциями (данные хранятся в распределенной системе 104 обработки).
[76] Распределенная система 104 обработки далее включает в себя устройство 120 хранения данных, которое доступно первой ноде 108, второй ноде 110 и третьей ноде 112 через линии 107 передачи данных. Устройство 120 хранения данных выполнено с возможностью хранения данных, с которыми выполняется компьютерная транзакция распределенной системой 104 обработки. Другими словами, в ответ на получение запроса 130 на транзакцию одна или несколько нод (т.е. первая нода 108, вторая нода 110 и третья нода 112) выполнены с возможностью модифицировать по меньшей мере часть данных, содержащихся в устройстве 120 хранения данных (по запросу 130 на транзакцию).
[77] С этой целью запрос 130 на транзакцию идентифицирует то, какие именно данные необходимо модифицировать, и одну или несколько операций, которые будут выполнены над данными, как часть этапа модификации данных. На основе указания на одну или несколько операций распределенная система 104 обработки может идентифицировать один или несколько заранее определенных типов компьютерных транзакций, которые будут использованы для влияния на запрос 130 на транзакцию.
[78] В соответствии с вариантами осуществления настоящей технологии одна из множества нод (т.е. первая нода 108, вторая нода 110 и третья нода 112) назначается как контрольная нода, а остальные из множества нод (т.е. первая нода 108, вторая нода 110 и третья нода 112) назначаются как набор исполнительных нод. То, как выполняется выбор контрольной ноды, никак конкретно не ограничивается, и любая известная техника может быть использована (например, метод консенсуса и так далее). Следует иметь в виду, что выбор конкретной одной из множества нод (т.е. первой ноды 108, второй ноды 110 и третьей ноды 112) в качестве контрольной ноды может быть статичным (т.е. выбор контрольной ноды является перманентным) или динамическим (т.е. выбор контрольной ноды может со временем меняться в ответ на условия обработки, выполняемые задачи, политику выбора контрольной ноды и так далее).
[79] Для целей дальнейшего описания предполагается, что первая нода 108 является контрольной нодой, а вторая нода 110 и третья нода 112 формируют набор исполнительных нод.
[80] Каждая из набора исполнительных нод (т.е. вторая нода 110 и третья нода 112) связана с заранее определенным типом компьютерной транзакции и выполнена с возможностью ее выполнять. В конкретном варианте осуществления настоящей технологии набор исполнительных нод (т.е. вторая нода 110 и третья нода 112), а также вся распределенная система 104 обработки выполнены с возможность выполнять одну или несколько компьютерных транзакций, которые должны выполняться в виде «полностью успешно или полностью безуспешно». Другими словами, распределенная система 104 обработки выполнена с возможностью обрабатывать операции по обработке информации, которые разделены на индивидуальные, неделимые компьютерные операции, которые, как правило, упоминаются как «транзакции». Каждая транзакция проходит либо успешно, либо безуспешно, функционируя как цельный блок. Другими словами, подобная компьютерная операция не может быть «частично завершена» - если по меньшей мере одна составляющая транзакция дает сбой, вся компьютерная операция будет безуспешной.
[81] Следует отметить, что варианты осуществления настоящей технологии не ограничены каким-либо конкретным типом обработки транзакции. Другими словами, природа обработанных данных в распределенной системе 104 обработки никак не ограничена.
[82] Контрольная нода (т.е. первая нода 108) выполнена для организации набора исполнительных нод (т.е. второй ноды 110 и третьей ноды 112) в иерархию в соответствии с заранее определенным типом компьютерной транзакции, выполняемой данной одной из набора исполнительных нод (т.е. второй ноды 110 и третьей ноды 112). В общем случае, контрольная нода (т.е. первая нода 108) выполнена с возможностью определять иерархию таким образом, что данная нода из набора исполнительных нод (т.е. второй ноды 110 и третьей ноды 112) является дочерней по отношению к другой ноде из набора исполнительных нод (т.е. второй ноды 110 и третьей ноды 112) на основе заранее определенного типа компьютерной транзакции, выполняемой дочерней нодой, причем транзакция является вложенной компьютерной транзакцией по отношению к заранее определенному типу компьютерной транзакции, исполняемой другой нодой из набора исполнительных нод, другая нода из набора исполнительных нод является родительской нодой.
[83] В рамках вариантов осуществления настоящей технологии термин «вложенный» означает зависимость от родительской транзакции и/или наличие подмножества родительских транзакций, и/или последовательное выполнение после родительской транзакции. Например, в неограничивающем варианте осуществления технологии, где распределенная система 104 обработки исполняет систему онлайн банкинга, контрольная нода (т.е. первая нода 108) может определять иерархию следующим образом. Данная родительская нода (т.е. одна из второй ноды 110 и третьей ноды 112) может быть ответственна за доступ к данным, связанным с расчетным счетом. Одна из дочерних нод данной родительской ноды может отвечать за доступ к данным, связанным с долларом США как валютой, другая дочерняя нода данной родительской ноды может быть отвечать за данные, связанные с евро как валютой. Данная одна из дочерних нод может отвечать за функцию обработки кредита, а другая дочерняя нода может отвечать за функцию обработку дебета.
[84] С этой целью контрольная нода (т.е. первая нода 108) выполнена с возможностью поддержать первую разметку одного или нескольких конкретных заранее определенных типов компьютерной транзакции, выполняемой данной одной из набора исполнительных нод (т.е. второй ноды 110 и третьей ноды 112).
[85] На Фиг. 1 и Фиг. 2 представлена иерархическая разметка 122, которую поддерживает контрольная нода (т.е. первая нода 108). Конкретнее иерархическая разметка 122 содержит соответствие 202 идентификатора 204 данной ноды и набора ее соответствующих нод 206. С этой целью иерархическая разметка 122 включает в себя первую запись 208 (связанную, например, со второй нодой 110), вторую запись 210 (связанную, например, с третьей нодой 112) и множество дополнительных записей 212 (связанных с дополнительными исполнительными нодами из набора исполнительных нод). Например, первая запись 208 связывает идентификатор 204 данной ноды 204, который уникально идентифицирует вторую ноду 110 в распределенной системе 104 обработки с ее соответствующим набором дочерних узлов 206, который в данном случае содержит уникальные идентификаторы трех дочерних узлов.
[86] Если сравнивать первую запись 208 и вторую запись 210 (связанную с третьим узлом 112), становится ясно, что число дочерних нод для данной родительской ноды не обязано совпадать с числом дочерних нод для другой родительской ноды. В представленном примере вторая нода 110 обладает тремя дочерними узлами, а третья нода 112 обладает одним дочерним узлом. Исходя из предыдущего описания, число дочерних узлов в наборе дочерних узлов 206 для данной родительской ноды будет зависеть от типа транзакций родительской ноды (и, следовательно, типа вложенных транзакций дочерних нод).
[87] Дополнительно каждая из набора исполнительных нод (т.е. вторая нода 110 и третья нода 112) напрямую доступна контрольной ноде (т.е. первой нодой 108). В рамках неограничивающих вариантов осуществления настоящей технологии, термин «напрямую доступна» означает, что контрольная нода (т.е. первая нода 108) выполнена с возможностью передавать сообщение конкретной одной из исполнительных нод (т.е. второй ноде 110 и третьей ноде 112) без необходимости передавать сообщение конкретной одной родительской ноде (хотя передача подобных сообщений включена в схему прямого доступа).
[88] С этой целью контрольная нода (т.е. первая нода 108) выполнена с возможностью поддержать список уникальных адресов для каждой из исполнительных нод (т.е. второй ноды 110 и третьей ноды 112).
[89] На Фиг. 3 представлена разметка 124 уникальных адресов. Конкретнее разметка 124 уникальных адресов содержит соответствие 300 адресов идентификатора 302 данной ноды и идентификатора операции 303 и адреса 304. С этой целью, разметка 300 адресов включает в себя первую запись 306 (связанную, например, со второй нодой 110), вторую запись 308 (связанную, например, с третьей нодой 112), а также третью запись 310, четвертую запись 312, пятую запись 314 и множество дополнительных записей 316, соответственно связанных с дополнительными исполнительными нодами из набора исполнительных нод.
[90] Например, первая запись 306 связывает идентификатор 302 данной ноды (он может совпадать с идентификатором 204 данной ноды или отличаться), который уникально идентифицирует вторую ноду 110 в распределенной системе 104 обработки с одной или несколькими операциями, которые вторая нода 110 способна выполнять, и соответствующий уникальный адрес, который может быть использован для прямого доступа ко второй ноде 110. Следует отметить, что конкретный вариант осуществления идентификатора 302 ноды никак конкретно не ограничен. В некоторых вариантах осуществления настоящей технологии идентификатор 302 ноды может представлять собой IP адрес. В других вариантах осуществления настоящей технологии идентификатор 302 ноды может представлять собой MAC адрес. В некоторых других вариантах осуществления настоящей технологии идентификатор 302 ноды может быть реализован с помощью других известных способов.
[91] С учетом описанной выше архитектуры возможно выполнять способ обработки запроса на транзакцию. На Фиг. 4 представлена блок-схема неограничивающего варианта осуществления способа 400. Способ 400 может быть осуществлен контрольной нодой (т.е. первой нодой 108).
[92] Способ 402 - получение контрольной нодой от клиентского устройства запроса на транзакцию для модификации по меньшей мере части данных, расположенных на устройстве хранения данных, запрос на транзакцию включает в себя указание на заранее определенный тип компьютерной транзакции, который будет выполнен
[93] Способ 400 начинается на этапе 402, на котором контрольная нода (т.е. первая нода 108) получает от клиентского устройства 102 запрос на транзакцию 130 для модификации по меньшей мере части данных, расположенных на устройстве 120 хранения данных, запрос 130 на транзакцию включает в себя указание на заранее определенный тип компьютерной транзакции, который будет выполнен.
[94] Компьютерная транзакция может относиться к типу, который будет выполняться в виде «полностью успешно или полностью безуспешно». Другими словами, распределенная система 104 обработки выполнена с возможностью обрабатывать операции по обработке информации, которые разделены на индивидуальные, неделимые компьютерные операции, которые, как правило, упоминаются как «транзакции». Каждая транзакция проходит либо успешно, либо безуспешно, функционируя как цельный блок. Другими словами, подобная компьютерная операция не может быть «частично завершена» - если по меньшей мере одна составляющая транзакция дает сбой, вся компьютерная операция будет безуспешной.
[95] 404 - определение контрольной нодой на основе заранее определенного типа компьютерной транзакции и разметки конкретной ноды из набора исполнительных нод, которая отвечает за заранее определенный тип компьютерной транзакции
[96] На этапе 404 контрольная нода (т.е. первая нода 108) определяет на основе заранее определенного типа компьютерной транзакции и разметки 124 уникальных адресов конкретную ноду из набора исполнительных нод, которая отвечает за заранее определенный тип компьютерной транзакции.
[97] Конкретнее контрольная нода (т.е. первая нода 108) определяет на основе операции 303, какая из исполнительных нод (т.е. второй ноды 110 и третьей ноды 112) отвечает за транзакцию, содержащуюся в запросе 130 на транзакцию. Контрольная нода (т.е. первая нода 108) далее извлекает уникальный адрес идентифицированной нода из адресов 304.
[98] В некоторых вариантах осуществления способа 400 этап определения контрольной нодой (т.е. первой нодой 108) на основе заранее определенного типа компьютерной транзакции и разметки 124 уникальных адресов, конкретной ноды (т.е. второй ноды 110 и третьей ноды 112) из набора исполнительных нод, ответственной за заранее определенный тип компьютерной транзакции, включает в себя определение одной конкретной ноды (т.е. второй ноды 110 и третьей ноды 112) из набора исполнительных нод, ответственной за заранее определенный тип компьютерной транзакции.
[99] В других вариантах осуществления способа 400 этап определения контрольной нодой (т.е. первой нодой 108) на основе заранее определенного типа компьютерной транзакции и разметки 124 уникальных адресов, конкретной ноды из набора исполнительных нод (т.е. второй ноды 110 и третьей ноды 110), ответственной за заранее определенный тип компьютерной транзакции, включает в себя определение главной заранее определенной ноды (т.е. второй ноды 110 и третьей ноды 112) из набора исполнительных нод, ответственной за заранее определенный тип компьютерной транзакции.
[100] 406 - с помощью списка уникальных адресов передача запроса на транзакцию для его выполнения напрямую идентифицированной конкретной ноде из набора исполнительных нод; передача запроса на транзакцию идентифицированной конкретной ноде из набора исполнительных нод инициирует идентифицированную конкретную ноду из набора исполнительных нод выполнить блокировку идентифицированной конкретной нодой из набора исполнительных нод получения дополнительных запросов на транзакции, пока запрос на транзакцию не будет выполнен.
[101] На этапе 406 контрольная нода (т.е. первая нода 108), с помощью таким образом определенных адресов 304 (из разметки 124 уникальных адресов) передает запрос 130 на транзакцию напрямую идентифицированной конкретной ноде (т.е. второй ноде 110 и третьей ноде 112) из набора исполнительных нод для их выполнения; передача запроса на транзакцию идентифицированной конкретной ноде (т.е. второй ноде 110 и третьей ноде 112) из набора исполнительных нод инициирует идентифицированную конкретную ноду из набора исполнительных нод выполнять блокировку идентифицированной конкретной нодой (т.е. второй нодой 110 и третьей нодой 112) из набора исполнительных нод, получения дополнительных запросов на транзакцию пока запрос на транзакцию не будет выполнен.
[102] Блокировка выполняется идентифицированной конкретной нодой (т.е. второй нодой 110 и третьей нодой 112)
[103] В некоторых вариантах осуществления способа 400 этап блокировки включает в себя выполнение идентифицированной конкретной нодой (т.е. второй нодой 110 и третьей нодой 112) из набора исполнительных нод функции эксклюзивной блокировки. Этап выполнения функции эксклюзивной блокировки включает в себя выполнение одного из следующего: алгоритма Деккера, алгоритма Петерсона; алгоритма пекарни Лэмпорта; или алгоритма Шиманского.
[104] В других вариантах осуществления способа 400 этап блокировки далее включает в себя организацию очереди из одного или нескольких дополнительных запросов на транзакции, полученных идентифицированной конкретной нодой (т.е. второй нодой 110 и третьей нодой 112) из набора исполнительных нод при выполнении запроса на транзакцию. В некоторых вариантах осуществления способа 400 способ 400 дополнительно включает в себя последовательное выполнение следующего из одного или нескольких дополнительных запросов на транзакцию после завершения выполнения запроса на транзакцию.
[105] Блокировка выполняется родительской нодой идентифицированной конкретной ноды (т.е. второй ноды 110 и третьей ноды 112)
[106] В некоторых вариантах осуществления способа 400 этап блокировки включает в себя: передачу указания на то, что запрос на транзакцию обрабатывается идентифицированной конкретной нодой (т.е. второй нодой 110 и третьей нодой 112) из набора исполнительных нод, ее родительской ноде в ответ на передачу, получение инструкции блокировки от родительской ноды. В некоторых вариантах осуществления способа 400 этап инструкции блокировки включает в себя инструкцию типа эксклюзивной блокировки. Инструкция типа эксклюзивной блокировки может быть основана по меньшей мере на одном из: алгоритме Деккера, алгоритме Петерсона; алгоритме пекарни Лэмпорта; или алгоритме Шиманского.
[107] В некоторых вариантах осуществления способа 400 этап блокировки далее включает в себя передачу одного или нескольких дополнительных запросов на транзакции, полученных идентифицированной конкретной нодой (т.е. второй нодой 110 и третьей нодой 112) из набора исполнительных нод при выполнении запроса на транзакцию ее родительской ноде.
[108] В некоторых вариантах осуществления способа 400 этап передачи одного или нескольких дополнительных запросов на транзакции, полученных идентифицированной конкретной нодой (т.е. второй нодой 110 и третьей нодой 112) из набора исполнительных нод при выполнении запроса на транзакцию, ее родительской ноде инициирует родительскую ноду выполнять по меньшей мере одно из: организацию очереди родительской нодой из одного или нескольких дополнительных запросов на транзакцию; переназначение одного или нескольких дополнительных запросов на транзакции другой дочерней ноде, выполненной с возможностью выполнять заранее определенный тип компьютерной транзакции.
[109] Блокировка осуществляется контрольной нодой (т.е. первой нодой 108).
[110] В некоторых вариантах осуществления способа 400 этап блокировки далее включает в себя отказ одному или нескольким дополнительным запросам на транзакции, полученным идентифицированной конкретной нодой (т.е. второй нодой 110 и третьей нодой 112) из набора исполнительных нод при выполнении запроса на транзакцию и возврат одного или несколько дополнительных запросов на транзакцию контрольной ноде (т.е. первой ноде 108).
[111] В некоторых вариантах осуществления способа 400 этап возврата одного или нескольких дополнительных запросов на транзакцию контрольной ноде (т.е. первой ноде 108) инициирует контрольную ноду (т.е. первую ноду 108) выполнять по меньшей мере одно из: организацию очереди контрольной нодой (т.е. первой нодой 108) из одного или нескольких дополнительных запросов на транзакцию; периодическую повторную передачу контрольной нодой (т.е. контрольной нодой 108) одного или нескольких дополнительных запросов на транзакцию идентифицированной конкретной ноде (т.е. второй ноде 110 и третьей ноде 112) из набора исполнительных нод, когда идентифицированная конкретная нода из набора исполнительных нод выполняет один или нескольких дополнительных запросов на транзакцию; переназначение одного или нескольких дополнительных запросов на транзакцию другой исполнительной ноде, выполненной с возможностью исполнять заранее определенный тип компьютерной транзакции.
[112] В некоторых вариантах осуществления настоящей технологии для переназначения одного или нескольких дополнительных запросов на транзакцию на другую исполнительную ноду, выполненную с возможностью выполнять заранее определенный тип компьютерной транзакции, контрольная нода (т.е. первая нода 108) может получать доступ к иерархической разметке 122 для определения, например, родительской ноды идентифицированной конкретной ноды (т.е. второй ноды 110 и третьей ноды 112) из набора исполнительных нод и передавать ей запрос. Альтернативно, контрольная нода (т.е. первая нода 108) может получать доступ к разметке 124 уникальных адресов для определения другой исполнительной ноды, которая может выполнять тот же тип транзакции.
[113] Обработка данных.
[114] В некоторых вариантах осуществления способа 400 этап блокировки дополнительно включает в себя: анализ запроса 130 на транзакцию для определения по меньшей мере части данных, которые будут модифицированы запросом 130 транзакции; определение в устройстве 120 хранения данных части памяти, которая хранит по меньшей мере часть данных, которые будут модифицированы запросом на транзакцию; бронирование исключительного права на чтение и запись в части памяти идентифицированной конкретной нодой (т.е. второй нодовой 110 и третьей нодой 112) из набора исполнительных нод.
[115] В некоторых вариантах осуществления способа 400 способ 400 дополнительно включает в себя после того как идентифицированная конкретная нода (т.е. вторая нода 110 и третья нода 112) из набора исполнительных нод завершает выполнение запроса на транзакцию освобождение эксклюзивного права на чтение и запись в части памяти.
[116] В некоторых вариантах осуществления способа 400 этап бронирования эксклюзивного права на чтение и запись в части памяти, идентифицированной конкретной нодой (т.е. второй нодой 110 и третьей нодой 112) из набора исполнительных нод, включает в себя выполнение функции типа эксклюзивной блокировки. В некоторых вариантах осуществления способа 400 этап выполнения функции типа эксклюзивной блокировки включает в себя выполнение по меньшей мере одного из следующего: алгоритма Деккера, алгоритма Петерсона; алгоритма пекарни Лэмпорта; или алгоритма Шиманского.
[117] В некоторых вариантах осуществления способа 400 способ 400 дополнительно включает в себя в ответ на то, что идентифицированная конкретная нода (т.е. вторая нода и третья нода 112) из набора исполнительных нод завершает выполнение запроса на транзакцию, передачу исполнительного сообщения 132 (Фиг. 1) запроса на транзакцию контрольной ноде (т.е. первой ноде 108).
[118] В некоторых вариантах осуществления способа 400 исполнительное сообщение 132 запроса на транзакцию включает в себя одно из в ответ на то, что вся совокупность действий, связанных с запросом 130 на транзакцию, была успешно завершена, подтверждение успешности запроса 130 на транзакции и вывод из исполнения запроса на транзакцию; и в ответ на то, что по меньшей мере одно действие из совокупности действий, связанных с запросом на транзакцию, не было успешно завершено, сообщение об ошибке запроса на транзакцию.
[119] Технический эффект от исполнения некоторых вариантов осуществления настоящей технологии может заключаться в оптимизации и/или сохранении ресурсов сервера. Дополнительно или альтернативно варианты осуществления настоящей технологии могут ускорять процесс выполнения клиентских запросов по сравнению с известным уровнем техники.
[120] Некоторые из этих этапов, а также процессы передачи-получения сигнала являются хорошо известными в данной области техники и поэтому для упрощения были опущены в некоторых частях данного описания. Сигналы могут быть переданы-получены с помощью оптических средств (например, оптоволоконного соединения), электронных средств (например, проводного или беспроводного соединения) и механических средств (например, на основе давления, температуры или другого подходящего параметра).
[121] С учетом вышеописанных вариантов осуществления настоящей технологии, которые были описаны и показаны со ссылкой на конкретные этапы, выполненные в определенном порядке, следует иметь в виду, что эти этапы могут быть совмещены, разделены, обладать другим порядком выполнения - все это не выходит за границы настоящей технологии. Соответственно порядок и группировка этапов не является ограничением для настоящей технологии.
[122] Специалисты в данной области техники поймут, что в настоящем описании выражение "получение данных" от пользователя подразумевает получение электронным устройством или другим электронным устройством данных от пользователя в виде электронного (или другого) сигнала. Кроме того, специалисты в данной области техники поймут, что отображение данных пользователю через графический интерфейс пользователя (например, экран компьютерного устройства и тому подобное) может включать в себя передачу сигнала графическому интерфейсу пользователя, этот сигнал содержит данные, которые могут быть обработаны, и по меньшей мере часть этих данных может отображаться пользователю через графический интерфейс пользователя.
[123] Важно иметь в виду, что не все упомянутые здесь технические результаты могут проявляться в каждом варианте осуществления настоящей технологии. Например, варианты осуществления настоящей технологии могут быть выполнены без проявления некоторых технических результатов, другие могут быть выполнены с проявлением других технических результатов или вовсе без них.
[124] Модификации и улучшения вышеописанных вариантов осуществления настоящей технологии будут ясны специалистам в данной области техники. Предшествующее описание представлено только в качестве примера и не устанавливает никаких ограничений. Таким образом, объем настоящей технологии ограничен только объемом прилагаемой формулы изобретения.
[125] Варианты осуществления настоящей технологии можно изложить следующим образом, в виде пронумерованных пунктов:
[126] ПУНКТ 1 Способ (400) обработки запроса (130) на транзакцию:
[127] запрос на транзакцию связан с компьютерной транзакцией, которая будет выполняться в виде «полностью успешно или полностью безуспешно»,
[128] способ выполняется в распределенной системе (104) обработки, обладающей множеством нод (108, 110, 112), множество нод включает в себя контрольную ноду (108, 110, 112) и набор исполнительных нод (108, 110, 112), каждая из набора исполнительных нод:
[129] связана с заранее определенным типом компьютерной транзакции; [130] напрямую доступна контрольной ноде;
[131] набор исполнительных нод организован в иерархию (122) в соответствии с заранее определенным типом компьютерной транзакции, выполняемой данной нодой из набора исполнительных нод, таким образом:
[132] данная нода из набора исполнительных нод является дочерней нодой по отношению к другой ноде из набора исполнительных нод на основе заранее определенного типа компьютерной транзакции, выполняемой дочерней нодой, причем транзакция является вложенной компьютерной транзакцией по отношению к заранее определенному типу компьютерной транзакции, исполняемой другой нодой из набора исполнительных нод, другая нода из набора исполнительных нод является родительской нодой;
[133] контрольная нода включает в себя:
[134] список уникальных адресов (124) для каждой из набора исполнительных нод; и
[135] разметка (124) каждой конкретной ноды из набора исполнительных нод и связанного заранее определенного типа компьютерной транзакции, выполняемой конкретной нодой из набора исполнительных нод;
[136] контрольная нода из распределенной системы обработки доступна клиентскому устройству (102) через сеть (106, 103) передачи данных;
[137] распределенная система обработки далее включает в себя устройство (120) хранения данных для хранения данных, с которыми производится компьютерная транзакция распределенной системой обработки;
[138] способ включает в себя:
[139] получение (402) контрольной нодой от клиентского устройства запроса на транзакцию для модификации по меньшей мере части данных, расположенных на устройстве хранения данных, запрос на транзакцию включает в себя указание на заранее определенный тип компьютерной транзакции, который будет выполнен;
[140] определение (404) контрольной нодой, на основе заранее определенного типа компьютерной транзакции и разметки, конкретной ноды из набора исполнительных нод, которая отвечает за заранее определенный тип компьютерной транзакции;
[141] с помощью списка уникальных адресов, передачу (406) запроса на транзакцию для его выполнения напрямую идентифицированной конкретной ноде из набора исполнительных нод; передача запроса на транзакцию идентифицированной конкретной ноде из набора исполнительных нод инициирует идентифицированную конкретную ноду из набора исполнительных нод выполнить:
[142] блокировку идентифицированной конкретной нодой из набора исполнительных нод получения дополнительных запросов на транзакции пока запрос на транзакцию не будет выполнен.
[143] ПУНКТ 2 Способ по п. 1, дополнительно включающий в себя:
[144] выполнение идентифицированной конкретной нодой из набора исполнительных нод функции эксклюзивной блокировки.
[145] ПУНКТ 3 Способ по п. 2, причем выполнение функции эксклюзивной блокировки включает в себя выполнение одного из:
[146] алгоритма Деккера,
[147] алгоритма Петерсона;
[148] алгоритма пекарни Лэмпорта; и
[149] алгоритма Шиманского.
[150] ПУНКТ 4 Способ по любому из пп. 2 и 3, в котором блокировка дополнительно включает в себя:
[151] организацию очереди из одного или нескольких дополнительных запросов на транзакции, полученных идентифицированной конкретной нодой из набора исполнительных нод при выполнении запроса на транзакцию.
[152] ПУНКТ 5 Способ по п. 4, дополнительно включающий в себя последовательное выполнение следующего из одного или нескольких дополнительных запросов на транзакцию после завершения выполнения запроса на транзакцию.
[153] ПУНКТ 6 Способ по любому из пп. 2 и 3, в котором блокировка включает в себя:
[154] передачу указания на то, что запрос на транзакцию обрабатывается идентифицированной конкретной нодой из набора исполнительных нод, ее родительской ноде,
[155] в ответ на передачу, получение инструкции блокировки от родительской ноды.
[156] ПУНКТ 7 Способ по п. 6, в котором инструкция блокировки включает в себя инструкцию типа эксклюзивной блокировки.
[157] ПУНКТ 8 Способ по п. 7, в котором инструкция типа эксклюзивной блокировки основана по меньшей мере на одном из следующих:
[158] алгоритме Деккера,
[159] алгоритме Петерсона;
[160] алгоритме пекарни Лэмпорта; и
[161] алгоритме Шиманского.
[162] ПУНКТ 9 Способ по п. 1, дополнительно включающий в себя:
[163] передачу одного или нескольких дополнительных запросов на транзакции, полученных идентифицированной конкретной нодой из набора исполнительных нод при выполнении запроса на транзакцию, ее родительской ноде.
[164] ПУНКТ 10 Способ по п. 9, в котором передача одного или нескольких дополнительных запросов на транзакции, полученных идентифицированной конкретной нодой из набора исполнительных нод при выполнении запроса на транзакцию, ее родительской ноде, инициирует родительскую ноду выполнять по меньшей одно из:
[165] организацию очереди родительской нодой из одного или нескольких дополнительных запросов на транзакцию;
[166] переназначение одного или нескольких дополнительных запросов на транзакцию другой дочерней ноде, выполненной с возможностью исполнять заранее определенный тип компьютерной транзакции.
[167] ПУНКТ 11 Способ по п. 1, дополнительно включающий в себя:
[168] отказ одному или нескольким дополнительным запросам на транзакции, полученным идентифицированной конкретной нодой из набора исполнительных нод при выполнении запроса на транзакцию, и возврат одного или нескольких дополнительных запросов на транзакцию контрольной ноде.
[169] ПУНКТ 12 Способ по п. 11, в котором возвращение одного или нескольких дополнительных запросов на транзакцию контрольной ноде инициирует контрольную ноду выполнять по меньшей мере одно из:
[170] организацию очереди родительской нодой из одного или нескольких дополнительных запросов на транзакцию;
[171] периодическую повторную передачу контрольной нодой одного или нескольких дополнительных запросов на транзакцию идентифицированной конкретной ноде из набора исполнительных нод, пока идентифицированная конкретная нода из набора исполнительных нод выполняет один или нескольких дополнительных запросов на транзакцию;
[172] переназначение одного или нескольких дополнительных запросов на транзакцию другой исполнительной ноде, выполненной с возможностью исполнять заранее определенный тип компьютерной транзакции.
[173] ПУНКТ 13 Способ по п. 1, дополнительно включающий в себя:
[174] анализ запроса на транзакцию для определения по меньшей мере части данных, которые будут изменены запросом на транзакцию;
[175] определение в устройстве хранения данных части памяти, которая хранит по меньшей мере часть данных, которые будут модифицированы запросом на транзакцию;
[176] бронирование исключительного права на чтение и запись в части памяти идентифицированной конкретной нодой из набора исполнительных нод.
[177] ПУНКТ 14 Способ по п. 13, дополнительно включающий в себя после того как идентифицированная конкретная нода из набора исполнительных нод завершит выполнение запроса на транзакцию:
[178] освобождение исключительного права на чтение и запись в части памяти идентифицированной конкретной нодой из набора исполнительных нод.
[179] ПУНКТ 15 Способ по п. 13, в котором бронирование эксклюзивного права на чтение и запись в части памяти идентифицированной конкретной нодой из набора исполнительных нод включает в себя выполнение функции типа эксклюзивной блокировки.
[180] ПУНКТ 16 Способ по п. 15, причем выполнение функции типа эксклюзивной блокировки включает в себя выполнение по меньшей мере одного из:
[181] алгоритма Деккера,
[182] алгоритма Петерсона;
[183] алгоритма пекарни Лэмпорта; и
[184] алгоритма Шиманского.
[185] ПУНКТ 17 Способ по любому из пп. 1 и 16, в котором способ дополнительно включает в себя:
[186] в ответ на то, что идентифицированная конкретная нода из набора исполнительных нод завершает выполнение запроса на транзакцию:
[187] передачу исполнительного сообщения запроса на транзакцию контрольной ноде.
[188] ПУНКТ 18 Способ по п. 17, в котором исполнительное сообщение запроса на транзакцию включает в себя одно из:
[189] в ответ на то, что вся совокупность действий, связанных с запросом на транзакцию, была успешно завершена, подтверждение успешности запроса на транзакции вывод результата исполнения запроса на транзакцию; и
[190] в ответ на то, что по меньшей мере одно действие из совокупности действий, связанных с запросом на транзакцию, не было успешно завершено, сообщение об ошибке запроса на транзакцию.
[191] ПУНКТ 19 Способ по любому из пп. 1-18, в котором определение контрольной нодой на основе заранее определенного типа компьютерной транзакции и разметки конкретной ноды из набора исполнительных нод, ответственной за заранее определенный тип компьютерной транзакции, включает в себя идентификацию одной конкретной ноды из набора исполнительных нод, ответственной за заранее определенный тип компьютерной транзакции.
[192] ПУНКТ 20 Способ по любому из пп. 1-18, в котором определение контрольной нодой на основе заранее определенного типа компьютерной транзакции и разметки конкретной ноды из набора исполнительных нод, ответственной за заранее определенный тип компьютерной транзакции, включает в себя идентификацию главной заранее определенной конкретной ноды из набора исполнительных нод, ответственной за заранее определенный тип компьютерной транзакции.
[193] ПУНКТ 21 Распределенная система (104) обработки, включающая в себя:
[194] множество нод (108, 110, 112), множество нод включает в себя контрольную ноду (108, 110, 112) и набор исполнительных нод (108, 110, 112),
[195] каждая из набора исполнительных нод:
[196] связана с заранее определенным типом компьютерной транзакции, компьютерная транзакция относится к типу транзакций, которые выполняются в виде «полностью успешно или полностью безуспешно»;
[197] напрямую доступна контрольной ноде;
[198] набор исполнительных нод организован в иерархию (122) в соответствии с заранее определенным типом компьютерной транзакции, выполняемой данной нодой из набора исполнительных нод, таким образом:
[199] данная нода из набора исполнительных нод является дочерней нодой по отношению к другой ноде из набора исполнительных нод на основе заранее определенного типа компьютерной транзакции, выполняемой дочерней нодой, причем транзакция является вложенной компьютерной транзакцией по отношению к заранее определенному типу компьютерной транзакции, исполняемой другой нодой из набора исполнительных нод, другая нода из набора исполнительных нод является родительской нодой;
[200] контрольная нода включает в себя:
[201] список уникальных адресов (124) для каждой из набора исполнительных нод; и
[202] разметка (124) каждой конкретной ноды из набора исполнительных нод и связанного заранее определенного типа компьютерной транзакции, выполняемой конкретной нодой из набора исполнительных нод;
[203] интерфейс связи, который позволяет контрольной ноде из распределенной системы обработки быть доступной клиентскому устройству (102) через сеть (106, 103) передачи данных;
[204] устройство (120) хранения данных для хранения данных, с которыми производится компьютерная транзакция распределенной системой обработки;
[205] контрольная нода выполнена с возможностью выполнять способ по любому из пп. 1-20.