Область техники, к которой относится изобретение
Данная технология относится к распределенной обработке данных и, в частности, к способам и системам для обработки данных в отказоустойчивой компьютерной среде. Уровень техники
Требования к запоминающим устройствам для хранения цифровых данных постоянно повышаются, поскольку большие объемы цифровых данных создаются ежедневно. Например, хранения могут требовать различные виды пользовательских данных, данных организаций и/или данных приложений. Это повышает требования к емкости хранилищ данных. Эти растущие потребности пользователей и/или организаций способны удовлетворить «облачные» системы удаленного хранения данных.
В общем случае «облачное» хранилище данных представляет собой вид компьютерного запоминающего устройства, в котором цифровые данные хранятся в логических пулах. Физическая память, в которой фактически хранятся цифровые данные, распределена между несколькими серверами, возможно, расположенными в различных местах (т.е. в различных центрах обработки данных), и обычно управляется компанией, предоставляющей услуги «облачного» хранения данных. Пользователи и/или организации обычно покупают или арендуют некоторый объем памяти у поставщиков услуг «облачного» хранения данных, чтобы хранить свои цифровые данные. Со своей стороны, поставщики услуг «облачного» хранения данных отвечают за доступность цифровых данных и защиту физической памяти с целью предотвращения утраты данных.
Раскрытие изобретения
Разработчики данной технологии обнаружили определенные технические недостатки, связанные с существующими решениями для обеспечения доступности данных и предотвращения их утраты.
Разработчики данной технологии обнаружили, что традиционные отказоустойчивые варианты реализации конечных автоматов обладают по меньшей мере некоторыми недостатками. Например, реплицированные конечные автоматы имеют несколько реплик, которые должны поддерживаться непрерывно, что требует дополнительного выделения вычислительных ресурсов системы, количество которых физически ограничено.
Кроме того, требуется взаимная синхронизация журналов, связанных с каждой репликой, чтобы обеспечить взаимное отражение реплик (т.е. чтобы они представляли собой идентичные реплики конечного автомата). Следует отметить, что обеспечению этого отражения может способствовать выполнение алгоритма консенсуса. Но выполнение алгоритма консенсуса требует большого количества вычислений и, следовательно, значительных непроизводительных затрат ресурсов. Помимо большого количества вычислений, выполнение алгоритма консенсуса также занимает много времени. Выполнение алгоритма консенсуса, необходимое для обеспечения отказоустойчивости реплицированного конечного автомата, может замедлять обработку данных этим автоматом.
В соответствии с первым аспектом данной технологии реализован способ обработки данных в распределенной компьютерной системе. Способ выполняется в распределенной компьютерной системе. Распределенная компьютерная система содержит устройство хранения данных для хранения журнала, конечный автомат, связанный с устройством хранения данных для обслуживания журнала путем выполнения регистрационных действий в журнале, где хранятся указания на обрабатываемые данные. Конечный автомат имеет множество поколений. Каждое из множества поколений имеет соответствующий уникальный идентификатор поколения (GUID, Generation-Unique IDentifier). Одно из множества поколений назначается главным поколением конечного автомата в любой момент времени. Главное поколение конечного автомата имеет исключительные права на выполнение регистрационных действий записи в журнале в любой момент времени. Способ выполняется в текущий момент времени, когда журнал обслуживается текущим поколением конечного автомата. Текущее поколение конечного автомата (а) представляет собой главное поколение конечного автомата в текущий момент времени и (б) связано с первым идентификатором GUID. Способ включает в себя передачу главным поколением-кандидатом конечного автомата запроса блокировки в журнал. Главное поколение-кандидат конечного автомата представляет собой новое поколение конечного автомата. Главное поколение-кандидат конечного автомата имеет второй идентификатор GUID. Второй идентификатор GUID является следующим за первым идентификатором GUID. По запросу блокировки запрещается выполнение регистрационных действий записи в журнале любым поколением конечного автомата, имеющим более ранний идентификатор GUID, чем второй идентификатор GUID, и разрешается выполнение регистрационных действий записи исключительно главным поколением-кандидатом конечного автомата. Таким образом, путем передачи запроса блокировки главное поколение-кандидат конечного автомата назначается главным поколением конечного автомата вместо текущего поколения конечного автомата.
В некоторых вариантах осуществления способа данные соответствуют транзакции, предназначенной для обработки конечным автоматом.
В некоторых вариантах осуществления способа устройство хранения данных представляет собой множество отказоустойчивых устройств хранения данных.
В некоторых вариантах осуществления способа множество отказоустойчивых устройств хранения данных реализовано распределенным образом.
В некоторых вариантах осуществления способа конечный автомат представляет собой один конечный автомат с уникальным в пределах системы идентификатором.
В некоторых вариантах осуществления способа распределенная компьютерная система содержит другой конечный автомат и, соответственно, другой связанный с ним журнал. Любой конечный автомат уникальным образом связан с соответствующим журналом для формирования подсистемы. Подсистемы в распределенной компьютерной системе работают независимо друг от друга.
В некоторых вариантах осуществления способа распределенная компьютерная система дополнительно содержит базу данных для выполнения транзакций. База данных реализована в виде конечного автомата. Журнал, хранящийся в отказоустойчивом распределенном хранилище данных, позволяет отслеживать транзакции, предназначенные для выполнения в базе данных.
В некоторых вариантах осуществления способа распределенная компьютерная система содержит управляющий элемент для управления конечным автоматом. Способ дополнительно включает в себя формирование управляющим элементом главного поколения-кандидата конечного автомата до наступления текущего момента времени.
В некоторых вариантах осуществления способа главное поколение-кандидат конечного автомата формируется в случае нарушения работы текущего поколения конечного автомата.
В некоторых вариантах осуществления способа главное поколение-кандидат конечного автомата формируется в случае истечения предельного срока для текущего поколения конечного автомата.
В некоторых вариантах осуществления способа управляющий элемент и конечный автомат реализованы в виде программных модулей.
В некоторых вариантах осуществления способа характеристики соответствующих программных модулей, связанных с управляющим элементом и конечным автоматом, отличаются.
В некоторых вариантах осуществления способа он дополнительно включает в себя выполнение следующих действий в другой момент времени, следующий за данным моментом времени, когда текущее поколение конечного автомата больше не является главным поколением конечного автомата: (а) прием текущим поколением конечного автомата других данных для обработки и (б) попытку выполнения текущим поколением конечного автомата регистрационного действия записи в журнале. Данное регистрационное действие записи указывает на эти другие данные. В этот другой момент времени выполнение в журнале регистрационного действия записи текущим поколением конечного автомата запрещается с учетом первого идентификатора GUID текущего поколения конечного автомата.
В некоторых вариантах осуществления способ дополнительно включает в себя передачу текущим поколением конечного автомата сообщения об отказе, оповещающего о том, что другие данные обработать не удалось.
В некоторых вариантах осуществления способа другие данные представляют собой транзакцию, а конечный автомат реализован в виде сегмента базы данных, в который направляется эта транзакция.
В некоторых вариантах осуществления способа журнал совместно используется всеми поколениями из множества поколений конечного автомата.
В некоторых вариантах осуществления способа все поколения из множества поколений конечного автомата обладают правами для выполнения регистрационных действий считывания из журнала независимо от того, какое поколение из множества поколений конечного автомата является главным поколением конечного автомата.
В некоторых вариантах осуществления способа, когда главное поколение-кандидат конечного автомата назначается главным поколением конечного автомата, это главное поколение-кандидат конечного автомата обрабатывает журнал для перехода в самое позднее состояние конечного автомата.
В некоторых вариантах осуществления способа журнал содержит по меньшей мере одну зафиксированную часть («снимок») и недавно добавленную часть. Обработка журнала включает в себя обработку этой по меньшей мере одной зафиксированной части и/или обработку этой недавно добавленной части.
Согласно второму аспекту данной технологии реализована распределенная компьютерная система для обработки данных, содержащая: устройство хранения данных для хранения журнала, конечный автомат, связанный с устройством хранения данных для обслуживания журнала путем выполнения регистрационных действий в журнале, где хранятся указания на обрабатываемые данные. Конечный автомат имеет множество поколений. Каждое из множества поколений имеет соответствующий уникальный идентификатор поколения (GUID). Одно из множества поколений назначается главным поколением конечного автомата в любой момент времени. Главное поколение конечного автомата имеет исключительные права на выполнение регистрационных действий записи в журнале в любой момент времени. В текущий момент времени, когда журнал обслуживается текущим поколением конечного автомата, текущее поколение конечного автомата (а) представляет собой главное поколение конечного автомата в текущий момент времени и (б) связано с первым идентификатором GUID. Главное поколение-кандидат конечного автомата представляет собой новое поколение конечного автомата и имеет второй идентификатор GUID, следующий за первым идентификатором GUID. Главное поколение-кандидат конечного автомата способно передавать запрос блокировки в журнал, при получении которого запрещается выполнение регистрационных действий записи в журнале любым поколением конечного автомата, имеющим более ранний идентификатор GUID, чем второй идентификатор GUID, и разрешается выполнение регистрационных действий записи исключительно главным поколением-кандидатом конечного автомата. Таким образом, главное поколение-кандидат конечного автомата назначается главным поколением конечного автомата вместо текущего поколения конечного автомата.
В некоторых вариантах осуществления системы данные соответствуют транзакции, предназначенной для обработки конечным автоматом.
В некоторых вариантах осуществления системы устройство хранения данных представляет собой множество отказоустойчивых устройств хранения данных.
В некоторых вариантах осуществления системы множество отказоустойчивых устройств хранения данных реализовано распределенным образом.
В некоторых вариантах осуществления системы конечный автомат представляет собой один конечный автомат с уникальным в пределах системы идентификатором.
В некоторых вариантах осуществления системы она содержит другой конечный автомат и, соответственно, другой связанный с ним журнал. Любой конечный автомат уникальным образом связан с соответствующим журналом для формирования подсистемы. Подсистемы в распределенной компьютерной системе работают независимо друг от друга.
В некоторых вариантах осуществления системы она дополнительно содержит базу данных для выполнения транзакций. База данных реализована в виде конечного автомата. Журнал, хранящийся в отказоустойчивом распределенном хранилище данных, позволяет отслеживать транзакции, предназначенные для выполнения в этой базе данных.
В некоторых вариантах осуществления системы она содержит управляющий элемент для управления конечным автоматом. Система дополнительно способна формировать главное поколение-кандидат конечного автомата до наступления текущего момента времени.
В некоторых вариантах осуществления системы главное поколение-кандидат конечного автомата формируется в случае нарушения работы текущего поколения конечного автомата.
В некоторых вариантах осуществления системы главное поколение-кандидат конечного автомата формируется в случае истечения предельного срока для текущего поколения конечного автомата.
В некоторых вариантах осуществления системы управляющий элемент и конечный автомат реализованы в виде программных модулей.
В некоторых вариантах осуществления системы характеристики соответствующих программных модулей, связанных с управляющим элементом и конечным автоматом, отличаются.
В некоторых вариантах осуществления система дополнительно способна выполнять следующие действия в другой момент времени, следующий за данным моментом времени, когда текущее поколение конечного автомата больше не является главным поколением конечного автомата: (а) прием текущим поколением конечного автомата других данных для обработки; (б) попытку выполнения текущим поколением конечного автомата регистрационного действия записи в журнале. Это регистрационное действие записи указывает на другие данные. В другой момент времени выполнение в журнале данного регистрационного действия записи текущим поколением конечного автомата запрещается с учетом первого идентификатора GUID текущего поколения конечного автомата.
В некоторых вариантах осуществления система дополнительно способна передавать через текущее поколение конечного автомата сообщение об отказе, оповещающее о том, что другие данные обработать не удалось.
В некоторых вариантах осуществления системы другие данные представляют собой транзакцию, а конечный автомат реализован в виде сегмента базы данных, в который направляется эта транзакция.
В некоторых вариантах осуществления системы журнал совместно используется всеми поколениями из множества поколений конечного автомата
В некоторых вариантах осуществления системы все поколения из множества поколений конечного автомата обладают правами для выполнения регистрационных действий считывания из журнала независимо от того, какое поколение из множества поколений конечного автомата является главным поколением конечного автомата.
В некоторых вариантах осуществления системы, когда главное поколение-кандидат конечного автомата назначается главным поколением конечного автомата, это главное поколение-кандидат конечного автомата обрабатывает журнал для перехода в самое позднее состояние конечного автомата.
В некоторых вариантах осуществления системы журнал содержит по меньшей мере одну зафиксированную часть и недавно добавленную часть, а обработка журнала включает в себя обработку этой по меньшей мере одной зафиксированной части и/или обработку этой недавно добавленной части.
В контексте настоящего описания термин «сервер» означает компьютерную программу, выполняемую соответствующими аппаратными средствами и способную принимать запросы (например, от клиентских устройств) через сеть и выполнять эти запросы или инициировать их выполнение. Аппаратные средства могут представлять собой один физический компьютер или одну компьютерную систему и это не существенно для данной технологии. В настоящем контексте выражение «сервер» не означает, что каждая задача (например, принятая команда или запрос) или некоторая определенная задача принимается, выполняется или запускается одним и тем же сервером (т.е. одними и теми же программными и/или аппаратными средствами). Это выражение означает, что любое количество программных средств или аппаратных средств может принимать, отправлять, выполнять или запускать выполнение любой задачи или запроса либо результатов любых задач или запросов. Все эти программные и аппаратные средства могут представлять собой один сервер или несколько серверов, при этом оба эти случая подразумеваются в выражении «по меньшей мере один сервер».
В контексте настоящего описания термин «клиентское устройство» означает любое компьютерное аппаратное средство, способное выполнять программы, подходящие для решения данной задачи. Таким образом, некоторые (не имеющие ограничительного характера) примеры клиентских устройств включают в себя персональные компьютеры (настольные, ноутбуки, нетбуки и т.п.), смартфоны и планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы. Следует отметить, что в данном контексте устройство, функционирующее как клиентское устройство, также может функционировать как сервер для других клиентских устройств. Использование выражения «клиентское устройство» не исключает использования нескольких клиентских устройств для приема, отправки, выполнения или инициирования выполнения любой задачи или запроса либо результатов любых задач или запросов, либо шагов любого описанного здесь способа.
В контексте настоящего описания выражение «информация» включает в себя информацию любого рода или вида, допускающую хранение в базе данных. Таким образом, информация включает в себя аудиовизуальные произведения (представления, фильмы, звукозаписи, презентации и т.д.), данные (данные о местоположении, числовые данные и т.д.), текст (мнения, комментарии, вопросы, сообщения и т.д.), документы, электронные таблицы, списки слов и т.д., но не ограничивается ими.
В контексте настоящего описания выражение «компонент» включает в себя программное обеспечение (подходящее для определенных аппаратных средств), необходимое и достаточное для выполнения соответствующей определенной функции (или функций).
В контексте настоящего описания выражение «пригодный для использования в компьютере носитель информации» означает носители любого типа и вида, включая ОЗУ, ПЗУ, диски (CD-ROM, DVD, гибкие диски, жесткие диски и т.д.), USB-накопители, твердотельные накопители, накопители на магнитных лентах и т.д.
В контексте настоящего описания числительные «первый» «второй», «третий» и т.д. используются лишь для указания различия между существительными, к которым они относятся, но не для описания каких-либо определенных взаимосвязей между этими существительными. Например, должно быть понятно, что использование терминов «первый сервер» и «третий сервер» не подразумевает какого-либо определенного порядка, вида, хронологии, иерархии или классификации, в данном случае, серверов, и что их использование (само по себе) не подразумевает обязательного наличия «второго сервера» в любой ситуации. Кроме того, как встречается в настоящем описании в другом контексте, ссылка на «первый» элемент и «второй» элемент не исключает того, что эти два элемента могут быть одним и тем же реальным элементом. Таким образом, например, в некоторых случаях «первый» сервер и «второй» сервер могут представлять собой одно и то же программное и/или аппаратное средство, а в других случаях - различные программные и/или аппаратные средства.
Каждый вариант осуществления данной технологии имеет отношение к по меньшей мере одной из вышеупомянутых целей и/или одному из вышеупомянутых аспектов, но не обязательно ко всем ним. Должно быть понятно, что некоторые аспекты данной технологии, связанные с попыткой достижения вышеупомянутой цели, могут не соответствовать этой цели и/или могут соответствовать другим целям, явным образом здесь не упомянутым.
Дополнительные и/или альтернативные признаки, аспекты и преимущества вариантов осуществления данной технологии содержатся в дальнейшем описании, в приложенных чертежах и в формуле изобретения.
Краткое описание чертежей
Дальнейшее описание приведено для лучшего понимания данной технологии, а также других аспектов и их признаков, и должно использоваться совместно с приложенными чертежами.
На фиг. 1 представлена схема системы, пригодной для реализации вариантов осуществления данной технологии, не имеющих ограничительного характера.
На фиг. 2 представлено соответствующее некоторым вариантам осуществления данной технологии устройство для хранения данных подсистемы распределенного хранения данных, представленной на фиг. 1.
На фиг. 3 представлен известный традиционный вариант осуществления отказоустойчивого конечного автомата.
На фиг. 4 представлен вариант реализации отказоустойчивого конечного автомата согласно некоторым вариантам осуществления данной технологии.
На фиг. 5 приведено первое представление показанного на фиг. 4 конечного автомата в первый момент времени.
На фиг. 6 приведено второе представление показанного на фиг. 4 конечного автомата во второй момент времени.
На фиг. 7 приведено третье представление показанного на фиг. 4 конечного автомата в третий момент времени.
На фиг. 8 приведена блок-схема способа, выполняемого в представленной на фиг. 1 системе и реализованного согласно вариантам осуществления данной технологии, не имеющим ограничительного характера.
Осуществление изобретения
Дальнейшее подробное описание представляет собой лишь описание примеров, иллюстрирующих данную технологию. Это описание не предназначено для определения объема или границ данной технологии. В некоторых случаях могут быть приведены полезные примеры модификаций, способствующие пониманию, но не определяющие объем или границы настоящей технологии. Эти модификации не составляют исчерпывающего списка, возможны и другие модификации.
Кроме того, если в некоторых случаях примеры модификаций не описаны, это не означает, что модификации невозможны и/или что описание содержит единственный вариант осуществления определенного аспекта данной технологии. Кроме того, следует понимать, что настоящее подробное описание в некоторых случаях касается упрощенных вариантов осуществления данной технологии, и что такие варианты представлены для того, чтобы способствовать лучшему ее пониманию. Различные варианты осуществления данной технологии могут быть значительно сложнее.
На фиг. 1 представлена распределенная система 100 компьютерной обработки информации или сокращенно распределенная система 100 обработки информации. Распределенная система 100 обработки информации позволяет реализовать не имеющие ограничительного характера варианты осуществления данной технологии. Очевидно, что распределенная система 100 обработки информации приведена лишь в качестве иллюстративного варианта осуществления данной технологии. Таким образом, дальнейшее описание системы представляет собой описание примеров, иллюстрирующих данную технологию. Это описание не предназначено для определения объема или границ данной технологии.
В некоторых случаях также приводятся полезные примеры модификаций распределенной системы 100 обработки информации. Они способствуют пониманию, но также не определяют объем или границы данной технологии. Эти модификации не составляют исчерпывающего списка. Специалисту в данной области техники должно быть понятно, что возможны и другие модификации. Кроме того, если в некоторых случаях примеры модификаций не описаны, это не означает, что модификации невозможны и/или что описание содержит единственный вариант осуществления определенного элемента данной технологии. Специалисту в данной области техники должно быть понятно, что это не так. Кроме того, следует понимать, что распределенная система 100 обработки информации в некоторых случаях может представлять собой упрощенную реализацию данной технологии, и что такие варианты представлены, чтобы способствовать лучшему ее пониманию. Специалисту в данной области техники должно быть понятно, что различные варианты осуществления данной технологии могут быть значительно сложнее.
Распределенная система 100 обработки информации содержит источник 102 запросов, сеть 103 связи, подсистему 104 предварительной обработки запросов, подсистему 105 обработки транзакций, подсистему 106 маршрутизации транзакций, подсистему 108 распределенного хранения данных, подсистему 110 базы данных и операционную подсистему 111.
Далее описана реализация указанных выше компонентов распределенной системы 100 обработки информации в соответствии с различными не имеющими ограничительного характера вариантами осуществления данной технологии.
Источник запросов
Источник 102 запросов может представлять собой электронное устройство, связанное с конечным пользователем (например, клиентское устройство), или любую другую подсистему распределенной системы 100 обработки информации, способную обеспечивать пользовательские запросы к распределенной системе 100 обработки информации. Несмотря на то, что на фиг. 1 показан лишь один источник 102 запросов, распределенная система 100 обработки информации может содержать несколько источников 102 запросов. Как показано в данном документе, источник 102 запросов входит в состав распределенной системы 100 обработки информации. Тем не менее, в некоторых вариантах осуществления данной технологии источник 102 запросов может быть внешним по отношению к распределенной системе 100 обработки информации и может подключаться с использованием линии связи (не обозначена).
На практике типичный вариант осуществления распределенной системы 100 обработки информации может включать в себя большое количество источников 102 запросов (сотни, тысячи, миллионы и т.д.).
В некоторых вариантах осуществления данной технологии, когда распределенная система 100 обработки информации используется в среде бизнес-потребитель (В2С, Business-to-Customer), источник 102 запросов может представлять собой клиентское устройство, такое как смартфон, связанное с пользователем распределенной системы 100 обработки информации. Например, распределенная система 100 обработки информации может обеспечивать услуги «облачного» хранения данных для клиентского устройства определенного пользователя.
В некоторых вариантах осуществления данной технологии, когда распределенная система 100 обработки информации используется в среде бизнес-бизнес (В2 В, Business-to-Business), источник 102 запросов может представлять собой подсистему, такую как удаленный сервер, обеспечивающую пользовательские запросы к распределенной системе 100 обработки информации. Например, в некоторых вариантах осуществления данной технологии распределенная система 100 обработки информации может обеспечивать услуги отказоустойчивой обработки и/или хранения данных для оператора такой подсистемы.
В целом, независимо от реализации распределенной системы 100 обработки данных в виде системы В2С или системы В2 В (или любого другого варианта системы), источник 102 запросов может представлять собой клиентское устройство или другую подсистему, которые могут быть внутренними или внешними по отношению к распределенной системе 100 обработки информации.
Как указано выше, источник 102 запросов способен выдавать множество запросов 180, каждый из которых далее называется запросом 180. Характер запроса 180 зависит от вида источника 102 запросов. В частности, один из примеров запроса 180 представляет собой запрос, сформированный на языке структурированных запросов (SQL, Structured Query Language). Поэтому предполагается, что в некоторых вариантах осуществления данной технологии запрос 180 может быть сформирован на языке декларативного программирования, т.е. запрос 180 может представлять собой запрос декларативного вида.
В общем случае декларативное программирование относится к построению структуры и элементов компьютерных программ, отражающих логику вычислений без описания потока управления. Распространенные языки декларативного программирования включают в себя SQL, XQuery и другие языки запросов к базам данных. В целом, запрос декларативного типа определяет действие в выражениях «что требуется выполнить», а не «как это требуется выполнить».
Это означает, что запрос декларативного типа может быть связан с условием выполнения определенного действия. В качестве условия, например, может быть указано, в каком элементе должно выполняться это действие или где следует получать значения для выполнения этого действия.
В качестве не имеющих ограничительного характера примеров можно привести следующие запросы декларативного вида: «Вставить значение 5 в ячейку, связанную с ключом, который равен значению ячейки, связанной с ключом А» и «Для всех ключей, связанных с ячейкой, имеющей значение 5, заменить это значение на значение 10». Тем не менее, должно быть понятно, что представленные выше примеры декларативных языков и примеры запросов декларативного вида приведены исключительно для лучшего понимания, и что в пределах объема данной технологии источником 102 запросов могут использоваться другие декларативные языки и другие запросы декларативного вида.
В некоторых вариантах осуществления данной технологии источник 102 запросов также способен принимать множество ответов 181, каждый из которых далее называется ответом 181. В общем случае в ответ на запрос 180, обработанный или не обработанный распределенной системой 100 обработки информации, распределенная система 100 обработки информации может формировать ответ 181, предназначенный для источника 102 запросов, связанного с соответствующим запросом 180. Характер ответа 181, среди прочего, зависит от вида источника 102 запросов, вида соответствующего запроса 180 и от того, обработала или не обработала распределенная система 100 обработки информации соответствующий запрос 180. В некоторых вариантах осуществления данной технологии распределенная система 100 обработки информации может формировать ответ 181, только если не удалось обработать запрос, или только в случае успешной обработки запроса, или в обоих случаях.
Например, во время обработки запроса 180 распределенная система 100 обработки информации может быть способна запрашивать дополнительные данные от источника 102 запросов для продолжения или завершения обработки запроса 180. В этом случае распределенная система 100 обработки информации может быть способна формировать ответ 181 в виде сообщения с запросом данных, в котором указываются дополнительные данные, запрашиваемые распределенной системой 100 обработки информации для продолжения или завершения обработки запроса 180.
В другом примере, если распределенная система 100 обработки информации успешно обработала соответствующий запрос 180, распределенная система 100 обработки информации может быть способна формировать ответ 181 в виде сообщения об успешном завершении, оповещающего об успешной обработке соответствующего запроса 180.
В другом примере, если распределенной системе 100 обработки информации не удалось успешно обработать соответствующий запрос 180, распределенная система 100 обработки информации может быть способна формировать ответ 181 в виде сообщения об отказе, оповещающий о том, что соответствующий запрос 180 обработать не удалось. В этом случае источник 102 запроса может быть способен выполнять дополнительные действия, такие как повторное направление запроса 180, выполнение диагностического анализа для определения причины неудачного завершения обработки запроса 180 распределенной системой 100 обработки информации, направление нового запроса, предназначенного для распределенной системы 100 обработки информации, и т.д.
Сеть связи
Источник 102 запросов соединен с сетью 103 связи для направления запроса 180 в распределенную систему 100 обработки информации и для приема ответа 181 от распределенной системы 100 обработки информации. В некоторых не имеющих ограничительного характера вариантах осуществления данной технологии в качестве сети 103 связи может использоваться сеть Интернет. В других не имеющих ограничительного характера вариантах осуществления данной технологии сеть 103 связи может быть реализована иначе, например, в виде любой глобальной сети связи, локальной сети связи, частной сети связи и т.п. Реализация линии связи (отдельно не обозначена) между источником 102 запросов и сетью 103 связи зависит, среди прочего, от реализации источника 102 запросов.
Лишь в качестве примера, не имеющего ограничительного характера, в тех вариантах осуществления данной технологии, где источник 102 запросов реализован как беспроводное устройство связи (такое как смартфон), линия связи может быть реализована как беспроводная линия связи (такая как канал сети связи 3G, канал сети связи 4G, Wireless Fidelity или сокращенно WiFi®, Bluetooth® и т.п.). В тех примерах, где источник 102 запросов реализован как удаленный сервер, линия связи может быть беспроводной (такой как Wireless Fidelity или сокращенно WiFi®, Bluetooth® и т.д.) или проводной (такой как соединение по сети Ethernet).
Следует отметить, что сеть 103 связи, среди прочего, способна передавать пакет данных запроса, содержащий запрос 180, от источника 102 запросов к подсистеме 104 предварительной обработки запросов распределенной системы 100 обработки информации. Например, этот пакет данных запроса может содержать выполняемые компьютером команды, составленные на языке программирования декларативного типа, на котором представлен запрос 180. Сеть 103 связи, среди прочего, также способна передавать пакет данных ответа, содержащий ответ 181, от распределенной системы 100 обработки информации к источнику 102 запросов. Например, этот пакет данных ответа может содержать выполняемые компьютером команды, представляющие ответ 181.
Тем не менее, предполагается, что в некоторых вариантах осуществления данной технологии, где источник 102 запросов представляет собой, например, подсистему распределенной системы 100 обработки информации, сеть 103 связи может быть реализована способом, отличным от описанного выше, или в некоторых случаях может вовсе отсутствовать в пределах объема данной технологии.
Операционная подсистема (улей)
Как указано выше, распределенная система 100 обработки информации содержит операционную подсистему 111 или, сокращенно, улей. В общем случае улей 111 представляет собой программное приложение (например, конечный автомат), способное управлять по меньшей мере некоторыми подсистемами распределенной системы 100 обработки информации, такими как подсистема 104 предварительной обработки запросов и подсистема 105 обработки транзакций. Можно сказать, что улей 111 может быть реализован как конечный автомат (SM, State Machine), способный формировать, удалять и/или выравнивать нагрузку других автоматов SM, образующих по меньшей мере некоторые подсистемы распределенной системы 100 обработки информации.
Должно быть понятно, что автомат SM представляет собой вычислительную модель, реализованную в виде компьютерной системы и определяемую списком состояний. Автомат SM может изменять свое текущее состояние в ответ на некоторые внешние входные данные и может в конкретный момент времени находиться лишь в одном состоянии. Переход автомата SM из одного состояния в другое состояние называется изменением состояния.
Следует отметить, что в контексте данной технологии автоматы SM, образующие по меньшей мере некоторые подсистемы распределенной системы 100 обработки информации, являются детерминированными по своей природе, т.е. каждое изменение состояния каждого автомата SM однозначно определено (а) текущим состоянием соответствующего автомата SM и (б) внешними входными данными соответствующего автомата SM. Иными словами, для текущего состояния автомата SM и для определенных внешних входных данных существует единственное следующее состояние этого автомата SM. Этот детерминированный характер изменения состояния не зависит от того, у какого именно автомата SM распределенной системы 100 обработки информации происходит изменение состояния.
Поэтому, как описано ниже, в некоторых вариантах осуществления данной технологии распределенная система 100 обработки информации должна принимать внешние входные данные определенного вида, соответствующего свойству детерминированности автоматов SM, от по меньшей мере некоторых подсистем распределенной системы 100 обработки информации. Подсистема распределенного хранения данных
Как упомянуто ранее, распределенная система 100 обработки информации также содержит подсистему 108 распределенного хранения данных. В общем случае подсистема 108 распределенного хранения данных способна, среди прочего, хранить системные данные, указывающие состояния, изменения состояний, внешние входные и/или выходные данные по меньшей мере некоторых автоматов SM распределенной системы 100 обработки информации. Например, системные данные, связанные с автоматом SM распределенной системы 100 обработки информации, могут храниться в форме журнала, содержащего хронологический список состояний, изменений состояний, внешних входных и/или выходных данных этого автомата SM.
Подсистема 108 распределенного хранения данных также способна хранить клиентские данные, т.е. данные, связанные с внешними входными данными, обрабатываемыми распределенной системой 100 обработки информации. Например, в некоторых вариантах осуществления данной технологии клиентские данные могут храниться как часть системных данных в подсистеме 108 распределенного хранения данных в пределах объема данной технологии.
Для хранения системных и/или клиентских данных подсистема 108 распределенного хранения данных содержит множество устройств 112 хранения данных, каждое из которых далее называется устройством 112 хранения данных. Согласно различным вариантам осуществления данной технологии некоторые или все устройства из множества устройств 112 хранения данных могут располагаться в одном или в различных местах. Например, некоторые или все устройства из множества устройств 112 хранения данных могут располагаться в одной серверной стойке, и/или в одном центре обработки данных, и/или могут быть распределены среди множества серверных стоек в одном или нескольких центрах обработки данных.
В некоторых вариантах осуществления данной технологии системные и/или клиентские данные, хранящиеся в одном устройстве 112 хранения данных, могут дублироваться и храниться в нескольких других устройствах 112 хранения данных. В некоторых вариантах осуществления такое дублирование и хранение системных и/или клиентских данных может обеспечивать отказоустойчивое хранение системных и/или клиентских данных в распределенной системе 100 обработки информации. Отказоустойчивое хранение системных и/или клиентских данных позволяет предотвратить утрату данных, когда устройство 112 хранения данных подсистемы 108 распределенного хранения данных становится временно или постоянно недоступным для хранения и извлечения данных. Такое отказоустойчивое хранение системных и/или клиентских данных также позволяет предотвратить утрату данных, когда автомат SM распределенной системы 100 обработки информации становится временно или постоянно недоступным.
Предполагается, что устройство 112 хранения данных может быть реализовано в виде компьютерного сервера. Компьютерный сервер содержит по меньшей мере одно физическое запоминающее устройство (т.е. накопитель 126) и одно или несколько программных приложений, способных выполнять машиночитаемые команды. Накопитель 126 может представлять собой твердотельный накопитель (SSD, Solid State Drive), накопитель на жестких дисках (HDD, Hard Disk Drive) и т.п. Поэтому можно сказать, что по меньшей мере одно физическое запоминающее устройство может быть реализовано как устройство с подвижным или неподвижным диском.
Например, как показано на фиг. 1, устройство 112 хранения данных может содержать, помимо прочего, следующие программные приложения: приложение 114 виртуального накопителя (Vdrive), приложение 116 физического накопителя (Pdrive), по меньшей мере одно приложение 118 моделирования накопителя, по меньшей мере одно приложение 120 планирования работы, приложение 122 обеспечения работы в реальном времени и по меньшей мере один прокси-сервер 124 автомата SM. Функции указанных выше программных приложений и накопителя 126, обеспечивающие хранение по меньшей мере некоторых системных и/или клиентских данных, более подробно описаны ниже со ссылками на фиг. 2.
Подсистема предварительной обработки запросов
Как указано выше, подсистема 105 обработки транзакций может содержать несколько детерминированных автоматов SM, которые должны получать входные данные определенного вида и которые соответствуют свойству детерминированности автоматов SM. Также следует еще раз отметить, что источник 102 запросов выдает запрос 180 в виде запроса декларативного типа.
Соответственно, подсистема 104 предварительной обработки запросов способна принимать запрос 180 декларативного типа от источника 102 запросов и предварительно обрабатывать или преобразовывать запрос 180 во множество детерминированных транзакций 182, соответствующих свойству детерминированности нескольких автоматов SM, образующих подсистему 105 обработки транзакций.
В целом, подсистема 104 предварительной обработки запросов предназначена для предварительной обработки или преобразования запроса 180 во множество детерминированных транзакций 182, которые могут быть обработаны детерминированными автоматами SM из подсистемы 105 обработки транзакций.
Следует отметить, что подсистема 104 предварительной обработки запросов также способна формировать ответ 181 для передачи источнику 102 запросов. Разумеется, что подсистема 104 предварительной обработки запросов связана с подсистемой 105 обработки транзакций не только для передачи множества детерминированных транзакций 182, но и для приема информации об обработке множества детерминированных транзакций 182. В некоторых не имеющих ограничительного характера вариантах осуществления данной технологии множество детерминированных транзакций 182 может содержать одну или несколько транзакций вида «считывание» или «запись».
В некоторых вариантах осуществления данной технологии подсистема 104 предварительной обработки запросов реализована в виде по меньшей мере одного автомата SM в пределах объема данной технологии.
В некоторых вариантах осуществления данной технологии предполагается, что представленная на фиг. 1 распределенная система 100 обработки информации способна поддерживать транзакции ACID (Atomicity, Consistency, Isolation and Durability). В целом, ACID - это аббревиатура для набора свойств транзакции (атомарность, согласованность, изолированность, долговечность), которые обеспечивают надежность базы данных при выполнении транзакций. Поэтому в некоторых вариантах осуществления данной технологии предполагается, что транзакции, предназначенные для подсистемы 105 обработки транзакций, могут быть атомарными, согласованными, изолированными и долговечными в пределах объема данной технологии.
Подсистема обработки транзакций
В общем случае подсистема 105 обработки транзакций способна принимать и обрабатывать множество детерминированных транзакций 182, таким образом обеспечивая обработку запроса 180 от источника 102 запросов. Подсистема 105 обработки транзакций содержит (а) подсистему 106 маршрутизации транзакций и (б) подсистему 110 базы данных, которые описаны далее.
Подсистема 110 базы данных содержит множество мест назначения транзакции (TDL, Transaction Destination Location) и разделена на множество сегментов 109, каждый из которых далее называется сегментом 109. В не имеющем ограничительного характера примере подсистема 110 базы данных может содержать базу данных, включающую в себя одну или несколько таблиц базы данных. Таблица базы данных может состоять из по меньшей мере двух столбцов, таких как первый столбец, содержащий ключи, и второй столбец, содержащий записи, в которых хранятся данные, связанные с соответствующими ключами. В этом не имеющем ограничительного характера примере место TDL может соответствовать строке таблицы базы данных, т.е. место TDL может соответствовать ключу и соответствующей записи в таблице базы данных.
В этом не имеющем ограничительного характера примере каждый сегмент 109 подсистемы 110 базы данных содержит часть таблицы базы данных. Следовательно, множество мест TDL, сопоставленных с соответствующими строками таблицы базы данных, разделено между множеством сегментов 109 так, чтобы каждый сегмент 109 содержал соответствующее подмножество (например, диапазон) множества мест TDL.
В некоторых вариантах осуществления данной технологии предполагается, что каждый сегмент из множества сегментов 109 может быть реализован с использованием соответствующего детерминированного автомата SM. Это означает, что после приема транзакции, предназначенной для места TDL сегмента 109, реализованного с использованием автомата SM, этот автомат SM может обработать транзакцию и перейти из текущего состояния в новое состояние в соответствии с транзакцией, как описано выше.
Подсистема 106 маршрутизации транзакций способна маршрутизировать транзакции из множества детерминированных транзакций 182 в соответствующие места TDL и, таким образом, направлять их в соответствующие сегменты 109 подсистемы 110 базы данных. С этой целью подсистема 106 маршрутизации транзакций может включать в себя множество портов, которые обычно способны (а) принимать множество детерминированных транзакций 182 от подсистемы 104 предварительной обработки запросов, (б) разделять множество детерминированных транзакций 182 на подмножества детерминированных транзакций, предназначенных для соответствующих сегментов 109, и (в) формировать для каждого сегмента централизованный порядок выполнения детерминированных транзакций соответствующими сегментами 109.
Следует отметить, что каждый порт из множества портов, образующих подсистему 106 маршрутизации транзакций, может быть реализован как соответствующий автомат SM. В некоторых вариантах осуществления изобретения предполагается, что множество портов может включать в себя порты двух различных видов для маршрутизации транзакций из множества детерминированных транзакций 182 в соответствующие сегменты 109. В других вариантах осуществления изобретения по меньшей мере некоторые функции множества портов могут выполняться автоматами SM, соответствующими множеству сегментов 109.
Кроме того, как показано на фиг. 1, по меньшей мере некоторые из автоматов SM подсистемы 105 обработки транзакций могут быть связаны с подсистемой 108 распределенного хранения данных с использованием соответствующей линии 160 связи. В целом, линия 160 связи предназначена для передачи системных данных, таких как данные о состояниях, изменениях состояний, внешние входные и/или выходные данные соответствующих автоматов SM и т.д., в подсистему 108 распределенного хранения данных для хранения. Далее со ссылками на фиг. 2 более подробно описана реализация линий 160 связи и порядок конфигурирования подсистемы 108 распределенного хранения данных для хранения системных данных.
На фиг. 2 представлено устройство 112 хранения данных, входящее в состав подсистемы 108 распределенного хранения данных. Как описано выше, устройство 112 хранения данных содержит по меньшей мере один прокси-сервер 124 автомата SM. Прокси-сервер автомата SM предназначен для управления связью между автоматом SM и подсистемой 108 распределенного хранения данных. В некоторых вариантах осуществления данной технологии предполагается, что по меньшей мере один прокси-сервер 124 автомата SM устройства 112 хранения данных может представлять собой прикладной программный интерфейс (API, Application Programing Interface), управляющий связью между автоматом SM и устройством 112 хранения данных. В других вариантах осуществления данной технологии по меньшей мере один прокси-сервер 124 автомата SM сам может быть реализован как автомат SM. В других вариантах осуществления данной технологии по меньшей мере один прокси-сервер 124 автомата SM может быть реализован как программный модуль (не как автомат SM) для выполнения описанных выше функций.
В некоторых вариантах осуществления данной технологии прокси-сервер 124 автомата SM может быть способен (а) принимать системные данные, указывающие на обновление журнала этого автомата SM, с использованием соответствующей линии 160 связи, (б) обрабатывать эти системные данные и (в) передавать обработанные системные данные соответствующему приложению 114 Vdrive для дальнейшей обработки.
По меньшей мере один прокси-сервер 124 автомата SM может быть способен обрабатывать системные данные, например, для обеспечения целостности и отказоустойчивости системных данных. В некоторых вариантах осуществления данной технологии предполагается, что по меньшей мере один прокси-сервер 124 автомата SM может быть способен выполнять стойкое к потере кодирование (erasure coding) системных данных. В целом, стойкое к потере кодирование представляет собой способ кодирования, предусматривающий получение данных с избыточностью и разделение их на несколько фрагментов. Такие избыточность и фрагментация способствуют восстановлению данных в случае потери одного или нескольких фрагментов вследствие отказов в системе.
Предполагается, что обработанные таким образом по меньшей мере одним прокси-сервером 124 автомата SM системные данные принимаются по меньшей мере одним соответствующим приложением 114 Vdrive устройства 112 хранения данных. Приложение 114 Vdrive предназначено для обработки системных данных, полученных от по меньшей мере одного прокси-сервера 124 автомата SM, и для ответного формирования соответствующих операций ввода-вывода (I/O, Input/Output), которые должны выполняться накопителем 126 для сохранения системных данных в накопителе 126 устройства 112 хранения данных. После формирования по меньшей мере одним приложением 114 Vdrive операций I/O, соответствующих принятым системным данным, по меньшей мере одно приложение 114 Vdrive передает эти операции I/O приложению 116 Pdrive.
Иными словами, предполагается, что устройство 112 хранения данных может содержать несколько прокси-серверов 124 автомата SM для обработки и передачи системных данных нескольким соответствующим приложениям 114 Vdrive, которые обрабатывают системные данные, формируют соответствующие операции I/O и передают эти операции I/O в единое приложение 116 Pdrive устройства 112 хранения данных.
В целом, приложение 116 Pdrive предназначено для управления работой накопителя 126. Например, приложение 116 Pdrive может быть способным выполнять кодирование операций I/O, которые должны выполняться в накопителе 126, и различные другие функции, способствующие надежному хранению данных в накопителе 126.
Приложение 116 Pdrive связано с приложением 120 планирования работы для передачи ему операций I/O. Приложение 120 планирования работы способно планировать передачу операций I/O в накопитель 126. Предполагается, что приложение 120 планирования работы (или сокращенно планировщик) может использовать различные схемы планирования с целью определения порядка передачи операций I/O в накопитель 126 для их дальнейшего выполнения.
Предполагается, что в некоторых вариантах осуществления данной технологии планировщик 120 может быть реализован как часть приложения 116 Pdrive. Иными словами, приложением 116 Pdrive могут выполняться различные схемы планирования в пределах объема данной технологии.
В одном случае планировщик 120 может обеспечивать схему «справедливого» планирования. Должно быть понятно, что для данного устройства 112 хранения данных может потребоваться хранение операций I/O, соответствующих системным данным, связанным с несколькими автоматами SM. Кроме того, каждый из нескольких автоматов SM связан с заранее заданной долей производительности накопителя, которую накопитель 126 может выделить для выполнения операций I/O, связанных с соответствующим автоматом SM. В целом, схемы «справедливого» планирования способны упорядочивать операции I/O, передаваемые в накопитель 126, так, чтобы производительность накопителя 126, предназначенная для выполнения упорядоченных операций I/O, использовалась согласно заранее заданным долям, связанным с несколькими автоматами SM.
В другом случае планировщик 120 может обеспечивать схему планирования «реального времени». Следует еще раз отметить, что распределенная система 100 обработки информации может использоваться для предоставления услуг «облачного» хранения данных. Во многих таких вариантах осуществления может быть желательным обрабатывать и сохранять системные данные в реальном времени, т.е. в течение очень короткого интервала времени. Чтобы обеспечить выполнение требования режима реального времени к распределенной системе 100 обработки информации, операции I/O могут быть связаны с соответствующими предельными сроками, указывающими момент времени, по прошествии которого соответствующие операции I/O уже не попадают в пределы допустимого времени, соответствующие требованиям режима реального времени к распределенной системе 100 обработки информации. В целом, схемы планирования реального времени способны упорядочивать операции I/O, передаваемые в накопитель 126, так, чтобы операции I/O выполнялись накопителем 126 с соблюдением соответствующих предельных сроков.
В другом случае планировщик 120 может обеспечивать гибридную схему планирования. Иначе говоря, планировщик 120 способен обеспечить схему планирования, которая позволяет упорядочить операции I/O, передаваемые для выполнения в накопитель 126, так, чтобы учитывались и заранее заданные доли производительности накопителя для каждого соответствующего автомата SM, и соответствующие предельные сроки операций I/O.
Как было упомянуто ранее, накопитель 126 представляет собой носитель информации для выполнения операций I/O и, соответственно, для хранения системных данных, переданных в устройство 112 хранения данных. Например, накопитель 126 может быть реализован в виде накопителя HDD или накопителя SSD. Накопитель 126 включает в себя внутреннее логическое устройство 250 накопителя для выбора операции I/O среди всех переданных в накопитель операций I/O для выполнения в текущий момент времени.
Следует отметить, что операции I/O могут направляться для выполнения в накопитель 126 по одной, но это может приводить к увеличению задержек между накопителем 126 и другими компонентами устройства 112 хранения данных. Поэтому операции I/O могут предаваться в накопитель 126 пакетами или группами. После приема пакета или группы операций I/O накопителем 126 внутреннее логическое устройство 250 накопителя способно выбрать для выполнения наиболее эффективную операцию I/O среди имеющихся в пакете операций I/O.
Например, наиболее эффективная операция I/O может выбираться на основе различных критериев, таких как место выполнения предыдущей операции I/O в накопителе 126 и место выполнения операций I/O, имеющихся в накопителе 126. Иными словами, внутреннее логическое устройство 250 накопителя способно выбирать для текущего выполнения наиболее эффективную операцию (с точки зрения накопителя 126) среди всех операций I/O, имеющихся в накопителе 126 в текущий момент времени.
Поэтому в некоторых случаях, несмотря на то, что планировщик 120 определенным образом упорядочил операции I/O для передачи с учетом требований режима реального времени к распределенной системе 100 обработки информации, внутреннее логическое устройство 250 накопителя 126 может выдавать в накопитель 126 команды для формирования порядка выполнения операций I/O, отличного от порядка передачи, выбранного планировщиком 120. Поэтому порядок выполнения иногда может не соответствовать требованиям режима реального времени распределенной системы 100 обработки информации (в частности, когда от планировщика 120 принимаются дополнительные операции I/O, которые могут быть более «эффективными» с точки зрения накопителя 126 и поэтому могут выбираться среди еще не выполненных операций I/O).
Чтобы обеспечить работу устройства 112 хранения данных в реальном времени и предотвратить описанную выше проблему, также известную как «торможение работы» (operation stagnation), устройство 112 хранения данных может содержать приложение 122 обеспечения работы в реальном времени. В целом, приложение 122 обеспечения работы в реальном времени позволяет управлять тем, какие операции I/O из числа уже упорядоченных планировщиком 120 передаются в текущий момент времени для выполнения в накопитель 126.
Предполагается, что в некоторых вариантах осуществления данной технологии приложение 122 обеспечения работы в реальном времени может быть реализовано как часть приложения 116 Pdrive. Иными словами, вышеупомянутые функции приложения 122 обеспечения работы в реальном времени могут выполняться приложением 116 Pdrive в пределах объема данной технологии.
Устройство 112 хранения данных также может содержать по меньшей мере одно соответствующее приложение 118 моделирования накопителя для каждого накопителя 126 в устройстве 112 хранения данных. В целом, приложение 118 моделирования накопителя способно эмулировать идеальную работу накопителя 126 с целью диагностического анализа накопителя 126. Тем не менее, в других вариантах осуществления изобретения планировщик 120 также может использовать приложение 118 моделирования накопителя, чтобы упорядочивать операции I/O для их передачи в накопитель 126.
Предполагается, что в некоторых вариантах осуществления данной технологии по меньшей мере одно соответствующее приложение 118 моделирования накопителя может быть реализовано как часть приложения 116 Pdrive. Иными словами, вышеупомянутые функции по меньшей мере одного соответствующего приложения 118 моделирования накопителя могут выполняться приложением 116 Pdrive в пределах объема данной технологии.
Традиционный реплицированный конечный автомат
Как указано выше, представленная на фиг. 1 распределенная система 100 обработки информации может содержать один или несколько автоматов SM. Следует отметить, что автоматы SM, реализованные как часть распределенной системы 100 обработки информации, могут быть отказоустойчивыми. В целом, благодаря свойству отказоустойчивости система способна продолжать работать надлежащим образом в случае нарушения работы (например, в случае одного или нескольких отказов) некоторых ее компонентов. Например, благодаря отказоустойчивости некоторых компонентов распределенной системы 100 обработки информации, таких как автоматы SM, операторы могут уменьшить вероятность утраты данных и сохранить цифровые данные доступными для потребителей и организаций.
В некоторых вариантах осуществления данной технологии вариант реализации отказоустойчивых автоматов SM распределенной системы 100 обработки информации может отличаться от традиционных вариантов реализации отказоустойчивых автоматов SM.
На фиг. 3 представлен традиционный вариант реализации отказоустойчивого автомата SM. На фиг. 3 показан традиционный реплицированный конечный автомат 300 (RSM, Replicated State Machine). В общем случае реплицирование автомата SM представляет собой способ реализации отказоустойчивого обслуживания путем реплицирования серверов и согласования взаимодействий клиента с их репликами. Например, автомат RSM 300 содержит три реплики: первую реплику 312, вторую реплику 314 и третью реплику 316.
Каждая из первой реплики 312, второй реплики 314 и третьей реплики 316 размещена на соответствующем одном или нескольких серверах, хранящих соответствующий журнал. Первая реплика 312 размещена на первом сервере 302, который локально хранит первый журнал 322 первой реплики 312. Вторая реплика 314 размещена на втором сервере 304, который локально хранит второй журнал 324 второй реплики 314. Третья реплика 316 размещена на третьем сервере 306, который локально хранит третий журнал 326 третьей реплики 316.
Как описано выше, журнал содержит хронологический список состояний, изменений состояний и внешних входных данных данного автомата SM. В этом случае первый журнал 322 содержит такой хронологический список для первой реплики 312. Второй журнал 324 содержит такой хронологический список для второй реплики 314. Третий журнал 326 содержит такой хронологический список для третьей реплики 316.
Можно предположить, что первая реплика 312 принимает внешние данные 332. В результате первая реплика 312 может обработать внешние данные 332 и перейти в следующее состояние первой реплики 312. Это означает, что системные данные могут быть отправлены первому серверу 302 в форме обновления журнала для обновления первого журнала 322, связанного с первой репликой 312.
Чтобы вторая реплика 314 и третья реплика были в том же состоянии, что и первая реплика 312, обычно выполняется алгоритм 350 консенсуса. Например, алгоритм 350 консенсуса может представлять собой алгоритм из семейства протоколов Paxos. В общем случае протоколы Paxos используются для достижения консенсуса в сети из ненадежных обрабатывающих элементов.
Алгоритм 350 консенсуса может использоваться, чтобы в определенном смысле «синхронизировать» первый журнал 322, второй журнал 324 и третий журнал 326. В этом случае после выполнения алгоритма 350 консенсуса состояние второй реплики 314 и третьей реплики 316 будет идентично текущему состоянию первой реплики 312. В результате, если первая реплика 312 отключается от системы или становится недоступной, вторая реплика 324 или третья реплика 316 может заменить первую реплику 312.
В этом случае вторая реплика 314 и третья реплика 316, которые вследствие выполнения алгоритма 350 консенсуса в определенном смысле «отражают» первую реплику 312, обеспечивают возможность реализации отказоустойчивого автомата RSM 300, поскольку и вторая реплика 314, и третья реплика 316 могут использоваться для продолжения работы автомата RSM 300, даже если первая реплика 312 отключается или становится недоступной. Следует отметить, что представленное выше описание алгоритма 350 консенсуса значительно упрощено, и что для алгоритма 350 консенсуса могут быть реализованы различные более сложные альтернативные решения, известные из уровня техники.
Разработчики данной технологии обнаружили, что традиционный отказоустойчивый вариант реализации автомата RSM 300 обладает по меньшей мере некоторыми недостатками.
Например, несколько реплик автомата SM, таких как первая реплика 312, вторая реплика 314 и третья реплика 316 автомата RSM 300, должны поддерживаться непрерывно, что требует выделения дополнительных вычислительных ресурсов системы, количество которых физически ограничено.
В другом примере первый журнал 322, второй журнал 324 и третий журнал 326, локально хранящиеся на первом сервере 302, втором сервере 304 и третьем сервере 306, соответственно, должны быть взаимно синхронизированы, чтобы обеспечить взаимное отражение первой реплики 312, второй реплики 314 и третьей реплики 316 (т.е. чтобы они представляли собой идентичные реплики автомата SM).
Тем не менее, следует отметить, что выполнение алгоритма 350 консенсуса требует большого количества вычислений и, следовательно, значительных непроизводительных затрат ресурсов. Помимо большого количества вычислений, выполнение алгоритма 350 консенсуса также занимает много времени. Поэтому выполнение алгоритма 350 консенсуса, необходимое для обеспечения отказоустойчивости автомата RSM 300, может замедлять обработку данных автоматом RSM 300.
Конечный автомат для совместно используемого журнала
Для устранения по меньшей мере некоторых недостатков традиционных отказоустойчивых вариантов реализации автоматов SM, таких как автомат RSM 300, разработчики данной технологии разработали не имеющие ограничительного характера варианты осуществления данной технологии для реализации отказоустойчивых автоматов SM, таких как конечный автомат 400 для совместно используемого журнала (SMOSL, State Machine Over a Shared Log), представленный на фиг. 4.
Автомат SMOSL 400 представляет собой автомат SM, имеющий множество 402 поколений. Одно поколение из множества 402 поколений автомата SMOSL 400 может запускаться или формироваться ульем 111 или другими процессами, такими как процесс начальной загрузки (или сокращенно начальные загрузчики), распределенной системы 100 обработки информации. Далее более подробно описано в каких случаях и для каких целей улей 111 или другие начальные загрузчики (boot-strappers) могут быть способными запускать или формировать данное поколение автомата SMOSL 400.
Тем не менее, следует отметить, что каждое поколение из множества 402 поколений автомата SMOSL 400 запускается или формируется ульем 111 или другими начальными загрузчиками в различные моменты времени. Это означает, что множество 402 поколений автомата SMOSL 400 «распределено» во времени на оси Т, как показано на фиг. 4.
Например, множество 402 поколений автомата SMOSL 400 может содержать:
- первое поколение 412, которое может запускаться в первый момент 422 времени;
- второе поколение 414, которое может запускаться во второй момент 424 времени;
- третье поколение 416, которое может запускаться в третий момент 426 времени;
- четвертое поколение 418, которое может запускаться в четвертый момент 428 времени; и т.д.
Несмотря на то, что множество 402 поколений показано как содержащее четыре поколения, следует отметить, что предполагается, что автомат SMOSL 400 может иметь меньше или больше четырех поколений в течение жизненного цикла автомата SMOSL 400 в пределах объема данной технологии.
Автомат SMOSL 400 также связан с совместно используемым журналом 404. Предполагается, что совместно используемый журнал 404 может храниться в устройстве хранения данных. Устройство хранения данных, хранящее совместно используемый журнал 404, может представлять собой отказоустойчивое устройство хранения данных или множество отказоустойчивых устройств хранения данных. Предполагается, что в некоторых вариантах осуществления данной технологии множество отказоустойчивых устройств хранения данных может быть распределенным. Например, как показано в не имеющем ограничительного характера примере на фиг. 4, совместно используемый журнал 404 хранится в подсистеме 108 распределенного хранения данных распределенной системы 100 обработки информации с использованием нескольких устройств 112 хранения данных.
Важно понимать, что в отличие от автомата RSM 300, где автомат SM реплицирован для обеспечения отказоустойчивой реализации автомата SM, автомат SMOSL 400 позволяет обеспечить отказоустойчивую реализацию автомата SM путем хранения совместно используемого журнала 404 в отказоустойчивой системе хранения данных. Можно сказать, что отказоустойчивость автомата RSM 300 обеспечена на уровне приложений. Также можно сказать, что отказоустойчивость автомата SMOSL 400 может быть обеспечена на уровне хранилища данных. Также можно сказать, что отказоустойчивость автомата SMOSL 400 может быть обеспечена на более низком уровне по сравнению с уровнем, на котором обеспечена отказоустойчивость автомата RSM 300.
Согласно не имеющим ограничительного характера вариантам осуществления данной технологии, совместно используемый журнал 404 представляет собой единый журнал, совместно используемый поколениями из множества 402 поколений. Например, совместно используемый журнал 404 используется поколениями из множества 402 поколений следующим образом:
- между первым моментом 422 времени и вторым моментом 424 времени совместно используемый журнал 404 может использоваться первым поколением 412 из множества 402 поколений для выполнения регистрационных действий записи; а
- между вторым моментом 424 времени и третьим моментом 426 времени совместно используемый журнал 404 может использоваться вторым поколением 414 из множества 402 поколений для выполнения регистрационных действий записи.
Тем не менее, совместно используемый журнал 404 не используется совместно несколькими поколениями из множества 402 поколений в любой момент времени. То есть совместно используемый журнал 404 не может использоваться несколькими поколениями из множества 402 поколений автомата SMOSL 400 для выполнения регистрационных действий записи в любой момент времени. Иными словами, лишь один экземпляр автомата SMOSL 400 (т.е. одно поколение из множества 402 поколений) имеет исключительные права на запись в совместно используемом журнале 404 в любой момент времени.
Поколение из множества 402 поколений автомата SMOSL 400, способное выполнять регистрационные действия записи в совместно используемом журнале 404 в данный момент времени, представляет собой главное поколение автомата SMOSL 400 в этот момент времени. В контексте данной технологии главное поколение автомата SMOSL 400 представляет собой поколение из множества 402 поколений автомата SMOSL 400, имеющее исключительные права на выполнение регистрационных действий записи в совместно используемом журнале 404 в любой момент времени, пока другое поколение из множества 402 поколений автомата SMOSL 400 не будет назначено новым главным поколением автомата SMOSL 400.
Можно сказать, что вновь назначенное главное поколение автомата SMOSL 400 в определенном смысле «наследует» исключительные права предыдущего главного поколения автомата SMOSL 400 на выполнение регистрационных действий записи в совместно используемом журнале 404. Далее более подробно описано в каких случаях, для каких целей и каким образом назначается новое главное поколение автомата SMOSL 400.
Ниже со ссылками на фиг. 5-7 описаны по меньшей мере некоторые функции автомата SMOSL 400.
На фиг. 5 показан источник 502 данных. Например, источник 502 данных может представлять собой, среди прочего, другой автомат SM распределенной системы 100 обработки информации, клиентское устройство, связанное с пользователем, или любой другой компьютерный элемент, способный предоставлять данные в распределенную систему 100 обработки информации либо в любую другую подходящую компьютерную систему, содержащую один или несколько автоматов SMOSL.
В представленном на фиг. 1 не имеющем ограничительного характера примере автомат SMOSL 400 может быть реализован в виде порта 107 подсистемы 106 маршрутизации транзакций или в виде сегмента 109 подсистемы 110 базы данных. Предполагается, что распределенная система 100 обработки информации может содержать множество автоматов SMOSL, каждый из которых реализован аналогично автомату SMOSL 400 в пределах объема данной технологии.
Предполагается, что данные, предоставленные источником 502 данных, могут представлять собой детерминированную транзакцию, предназначенную для исполнения или обработки автоматом SMOSL 400. В других вариантах осуществления данной технологии данные, предоставленные источником 502 данных, могут представлять собой запрос, направленный в распределенную систему 100 обработки информации из внешней компьютерной системы (не показана).
На фиг. 5 приведено первое представление 500 автомата SMOSL 400. Следует отметить, что первое представление 500 автомата SMOSL 400 соответствует текущему времени между третьим моментом 426 времени и четвертым моментом 428 времени, как показано в верхней части фиг. 5.
Предполагается, что автомат SMOSL 400 принял данные для обработки от источника 502 данных до наступления текущего момента времени первого представления 500. В общем случае автомат SMOSL 400 способен обрабатывать данные, принятые от источника 502 данных, формировать в соответствующих случаях выходные данные на основе обработанных данных и сохранять указания на обрабатываемые данные в совместно используемом журнале 404 путем регистрационных действий записи.
Например, до наступления текущего времени первого представления 500 автомат SMOSL 400 может принять множество пакетов данных (не показаны), содержащих соответствующие данные для обработки автоматом SMOSL 400. В ответ автомат SMOSL 400 обрабатывает соответствующие данные и сохраняет указания на соответствующие обрабатываемые данные в совместно используемом журнале 404.
С правой стороны на фиг. 5 приведено увеличенное представление 510 совместно используемого журнала 404 в текущий момент времени первого представления 500 автомата SMOSL 400. Увеличенное представление 510 содержит зафиксированную часть 520 («снимок») совместно используемого журнала 404 и недавно добавленную часть 530 совместно используемого журнала 404.
В общем случае, как указано выше, совместно используемый журнал 404 представляет собой хронологический список состояний, изменений состояний, внешних входных и выходных данных автомата SMOSL 400. Предполагается, что совместно используемый журнал 404 может указывать на дополнительную или альтернативную историческую информацию автомата SMOSL 400 в пределах объема данной технологии. Поскольку размер хронологического списка может значительно увеличиваться, в некоторых вариантах осуществления данной технологии через некоторые интервалы времени или в зависимости от объема памяти, занимаемого совместно используемым журналом 404, совместно используемый журнал 404 может достигать контрольной точки, в которой «снимок» хронологического списка в этот момент времени формируется и сохраняется вместо хронологического списка в этот момент времени. Размер этого «снимка» может быть меньшим, чем у хронологического списка, на основании которого он сформирован, что позволяет сэкономить ресурсы памяти для хранения совместно используемого журнала 404.
Таким образом, совместно используемый журнал 404 в некоторый момент времени может достигнуть контрольной точки, в которой формируется и сохраняется зафиксированная часть 520. Следовательно, недавно добавленная часть 530 совместно используемого журнала 404 может соответствовать хронологическому списку автомата SMOSL 400 (а) начиная с контрольной точки, связанной с зафиксированной частью 520 и (б) заканчивая текущим моментом времени первого представления 500.
Хронологический список недавно добавленной части 530 содержит множество 540 элементов журнала, каждый из которых может быть сохранен в совместно используемом журнале 404 в ответ на соответствующие регистрационные действия записи, отправленные поколениями автомата SMOSL 400.
Следует отметить, что, как показано на фиг. 5 с левой стороны, в текущий момент времени первого представления 500 автомата SMOSL 400 автомат SMOSL 400 имеет три поколения: первое поколение 412, второе поколение 414 и третье поколение 416.
Каждое поколение автомата SMOSL 400 имеет уникальный идентификатор поколения (GUID). Например, первое поколение 412 может иметь идентификатор GUID G1, второе поколение 414 может иметь идентификатор GUID G2, а третье поколение 416 может иметь идентификатор GUID G3.
Как описано выше, автомат SMOSL 400 в любой момент времени также имеет одно главное поколение, обладающее исключительными правами на выполнение регистрационных действий записи в совместно используемом журнале 404. Например, (а) между первым моментом 422 времени и вторым моментом 424 времени главным поколением автомата SMOSL 400 являлось первое поколение 412, а (б) между вторым моментом 424 времени и третьим моментом 426 времени главным поколением автомата SMOSL 400 являлось второе поколение 414.
Предполагается, что источник 502 данных отправил первые данные в автомат SMOSL 400 для обработки в момент времени между первым моментом 422 времени и вторым моментом 424 времени. В этот момент времени первое поколение 412 являлось главным поколением автомата SMOSL 400 и поэтому могло в этот момент времени выполнить регистрационное действие записи в совместно используемом журнале 404. Это регистрационное действие записи первого поколения 412 автомата SMOSL 400 связано с первым элементом 541 журнала в недавно добавленной части 530.
Первый элемент 541 журнала содержит (а) идентификатор GUID первого поколения 412 (G1), (б) шаг первого поколения 412 (S1) и (в) журнальную запись, соответствующую данным, записанным в совместно используемый журнал 404 при выполнении регистрационного действия записи. Этот этап может соответствовать значению счетчика, указывающего на регистрационные действия записи, выполненные данным поколением. Поскольку предполагается, что данное регистрационное действие записи первого поколения 412 представляет собой первое регистрационное действие записи, выполненное первым поколением 412, то шаг, на котором выполняется это регистрационное действие записи, обозначен S1.
Также предполагается, что источник 502 данных отправил вторые данные в автомат SMOSL 400 для обработки в момент времени между вторым моментом 424 времени и третьим моментом 426 времени. В этот момент времени второе поколение 414 являлось главным поколением автомата SMOSL 400 и поэтому могло в этот момент времени выполнить регистрационное действие записи в совместно используемом журнале 404. Это регистрационное действие записи второго поколения 414 автомата SMOSL 400 связано со вторым элементом 542 журнала в недавно добавленной части 530.
Аналогично предполагается, что источник 502 данных отправил третьи данные и четвертые данные в автомат SMOSL 400 для обработки в соответствующие моменты времени между вторым моментом 424 времени и третьим моментом 426 времени. В эти соответствующие моменты времени второе поколение 414 являлось главным поколением автомата SMOSL 400 и поэтому могло в эти соответствующие моменты времени выполнить соответствующие регистрационные действия записи в совместно используемом журнале 404. Эти соответствующие регистрационные действия записи второго поколения 414 автомата SMOSL 400 связаны с третьим элементом 543 журнала и с четвертым элементом 544 журнала в недавно добавленной части 530, соответственно.
Следует отметить, что в этом случае второе поколение 414 выполнило три регистрационных действия записи в совместно используемом журнале 404. Второй элемент 542 журнала, третий элемент 543 журнала и четвертый элемент 544 журнала соответствуют различным шагам второго поколения 414, поэтому значение шага увеличивается при переходе от данного элемента журнала из числа второго элемента 542 журнала, третьего элемента 543 журнала и четвертого элемента 544 журнала к следующему элементу журнала из числа второго элемента 542 журнала, третьего элемента 543 журнала и четвертого элемента 544 журнала.
Аналогично предполагается, что источник 502 данных отправил пятые данные и шестые данные в автомат SMOSL 400 для обработки в соответствующие моменты времени между третьим моментом 426 времени и текущим моментом времени первого представления 500. В эти соответствующие моменты времени третье поколение 416 являлось главным поколением автомата SMOSL 400 и поэтому могло в эти соответствующие моменты времени выполнить соответствующие регистрационные действия записи в совместно используемом журнале 404. Эти соответствующие регистрационные действия записи третьего поколения 416 автомата SMOSL 400 связаны с пятым элементом 545 журнала и с шестым элементом 546 журнала в недавно добавленной части 530, соответственно.
В целом, недавно добавленная часть 530 содержит множество 540 элементов журнала. В этом не имеющем ограничительного характера примере недавно добавленная часть 530 содержит столбец 532 идентификаторов GUID, столбец 534 шагов и столбец 536 журнальных записей. Столбец 532 идентификаторов GUID содержит идентификаторы GUID поколений автомата SMOSL 400, связанные с соответствующими элементами совместно используемого журнала 404. Столбец 534 шагов указывает на количество регистрационных действий записи, выполненных каждым поколением автомата SMOSL 400 в совместно используемом журнале 404, и на последовательность, в которой регистрационные действия записи выполнялись каждым поколением автомата SMOSL 400. Столбец 536 журнальных записей указывает на данные, сохраненные в совместно используемом журнале 404 при выполнении соответствующих регистрационных действий записи каждым поколением автомата SMOSL 400.
На фиг. 6 приведено второе представление 600 автомата SMOSL 400. Следует отметить, что текущее время второго представления 600 автомата SMOSL 400 соответствует четвертому моменту 428 времени, как показано в верхней части фиг. 6.
Предполагается, что в четвертый момент 428 времени (текущее время второго представления 600) улей 111 (см. фиг. 1) или начальный загрузчик запускает четвертое поколение 418 автомата SMOSL 400. Улей 111 или начальный загрузчик может запускать четвертое поколение 418 по различным причинам.
В одном примере улей 111 или начальный загрузчик может запустить четвертое поколение 418, если определено или иным образом принято указание на то, что третье поколение 416 отключено от подсистемы 108 распределенного хранения данных, что показано на фиг. 6 в виде разорванной линии 601 связи. Третье поколение 416 может отключиться или перестать работать по многим причинам. Например, в некоторых случаях в третьем поколении 416 могут происходить ошибки при обработке данных. В других случаях третье поколение 416 может утратить работоспособность по множеству других причин.
В другом примере улей 111 или начальный загрузчик может запустить четвертое поколение 418, если определено или иным образом принято указание на то, что третье поколение 416 недоступно подсистеме 108 распределенного хранения данных. В одном случае разрыв линии 601 связи может произойти вследствие отказа в сети распределенной системы 100 обработки информации. Отказ в сети распределенной системы 100 обработки информации в некоторых случаях может произойти вследствие сбоя программного обеспечения в сети, а в других случаях - вследствие отказа аппаратных средств в сети.
В другом примере улей 111 или начальный загрузчик может запустить четвертое поколение 418, если определено или иным образом принято указание на то, что истек срок функционирования третьего поколения 416. Например, в некоторых вариантах осуществления данной технологии предполагается, что поколения автомата SMOSL 400 могут быть способны прекращать функционирование по истечении заданного предельного срока работы в качестве главного поколения.
Независимо от причины, по которой улей 111 или начальный загрузчик запускает четвертое поколение 418, предполагается, что в четвертый момент 428 времени четвертое поколение 418 становится главным поколением-кандидатом автомата SMOSL 400. Иными словами, улей 111 или начальный загрузчик запускает четвертое поколение 418 в четвертый момент 428 времени, чтобы четвертое поколение 418 стало новым главным поколением автомата SMOSL 400.
Следует отметить, что четвертое поколение 418 связано с идентификатором GUID, который является следующим за идентификатором GUID третьего поколения 416. В не имеющем ограничительного характера примере четвертое поколение 418 может иметь идентификатор GUID G4.
По меньшей мере в некоторых не имеющих ограничительного характера вариантах осуществления данной технологии предполагается, что все поколения автомата SMOSL 400 могут быть связаны с последовательно увеличивающимися идентификаторами GUID так, чтобы идентификаторы GUID поколений автомата SMOSL 400 указывали на порядок, в котором поколения автомата SMOSL 400 запускались ульем 111 и/или другими начальными загрузчиками распределенной системы 100 обработки информации.
Например, следует напомнить, что первое поколение 412, второе поколение 414 и третье поколение 416 имеют идентификаторы GUID G1, G2 и G3 соответственно. Таким образом, улей 111 и/или другой начальный загрузчик может назначить четвертому поколению 418 идентификатор GUID G4. В результате идентификаторы G1, G2, G3 и G4 указывают на порядок, в котором соответствующие поколения автомата SMOSL 400 запускались ульем 111 и/или другими начальными загрузчикам.
После того, как четвертое поколение 418, в четвертый момент 428 времени являющееся главным поколением-кандидат автомата SMOSL 400, запускается и соединяется с подсистемой 108 распределенного хранения данных, четвертое поколение 418 передает пакет 602 запроса блокировки в совместно используемый журнал 404.
В некоторых вариантах осуществления данной технологии пакет 602 запроса блокировки может указывать (а) на идентификатор GUID G4 четвертого поколения 418 и (б) на запрос блокировки. Например, передача информации, указывающей на идентификатор GUID четвертого поколения 418, может позволить определить, что запрос блокировки исходит от нового поколения автомата SMOSL 400, поскольку идентификатор G4 следует за идентификатором GUID G3 главного поколения автомата SMOSL 400, которым в этот момент времени является третье поколение 416.
По запросу блокировки, переданному с использованием пакета 602 запроса блокировки, (а) запрещается выполнение регистрационных действий записи в совместно используемом журнале 404 любым поколением автомата SMOSL 400, имеющим более ранний идентификатор GUID, чем идентификатор GUID G4 четвертого поколения 418, и (б) разрешается выполнение регистрационных действий записи исключительно главным поколением-кандидатом автомата SMOSL 400 (которым в этот момент времени является четвертое поколение 418).
В некоторых вариантах осуществления данной технологии по запросу блокировки может активироваться алгоритм 610 блокировки, который способен (а) запрещать выполнение регистрационных действий записи в совместно используемом журнале 404 любым поколением автомата SMOSL 400, имеющим более ранний идентификатор GUID, чем идентификатор G4, и (б) разрешать выполнение регистрационных действий записи исключительно четвертым поколением 418, связанным с GUID G4.
Таким образом, предполагается, что после передачи пакета 602 запроса блокировки в совместно используемый журнал 404 и активации или реализации в совместно используемом журнале 404 алгоритма 610 блокировки главное поколение-кандидат автомата SMOSL 400 (в этом случае четвертое поколение 418) назначается главным поколением автомата SMOSL 400 вместо третьего поколения 416 автомата SMOSL 400.
В некоторых вариантах осуществления данной технологии, когда четвертое поколение 418 назначается главным поколением автомата SMOSL 400 (т.е. когда четвертое поколение 418 переходит из состояния главного поколения-кандидата в состояние главного поколения), четвертое поколение 418 может быть способно обработать совместно используемый журнал 404, чтобы перейти в состояние, соответствующее самому позднему состоянию автомата SMOSL 400.
Предполагается, что четвертое поколение 418 может быть способно выполнить одну или несколько регистрационных действий считывания из совместно используемого журнала 404. Например, четвертое поколение 418 может быть способно обработать зафиксированную часть 520 и недавно добавленную часть 530. В результате путем обработки зафиксированной части 520 и недавно добавленной части 530 четвертое поколение 418 может перейти в состояние, соответствующее самому позднему состоянию автомата SMOSL 400.
Предполагается, что назначение первого поколения 412 главным поколением в первый момент 422 времени, назначение второго поколения 414 главным поколением во второй момент 424 времени и назначение третьего поколения 416 главным поколением в третий момент 426 времени может выполняться аналогично описанному выше назначению четвертого поколения 418 главным поколением в четвертый момент 428 времени.
Таким образом, в целом можно сказать, что в текущий момент времени, когда совместно используемый журнал 404 обслуживается текущим поколением автомата SMOSL 400, являющимся главным поколением автомата SMOSL 400 в этот текущий момент времени, управляющим элементом (таким как улей 111 и/или другие начальные загрузчики) может запускаться новое поколение автомата SMOSL 400. Это новое поколение автомата SMOSL 400 представляет собой главное поколение-кандидат автомата SMOSL 400 в текущий момент времени и способно передать в совместно используемый журнал 404 запрос блокировки, при получении которого (а) запрещается выполнение регистрационных действий записи в совместно используемом журнале 404 любым поколением автомата SMOSL 400, имеющим более ранний идентификатор GUID, чем идентификатор GUID главного поколения-кандидата, и (б) разрешается выполнение регистрационных действий записи исключительно главным поколением-кандидатом.
После выполнения действий, которые должны выполняться по запросу блокировки, главное поколение-кандидат назначается новым главным поколением автомата SMOSL 400. Можно сказать, что в этот момент времени исключительные права предыдущего главного поколения автомата SMOSL 400 наследуются новым главным поколением автомата SMOSL 400.
Предполагается, что в некоторых вариантах осуществления данной технологии наследование исключительных прав предыдущего главного поколения автомата SMOSL 400 новым главным поколением автомата SMOSL 400 может обеспечивать в любой момент времени, чтобы только одно поколение автомата SMOSL 400 было способно выполнять регистрационные действия записи в совместно используемом журнале 404. Это наследование исключительных прав предыдущего главного поколения автомата SMOSL 400 новым главным поколением автомата SMOSL 400 в некоторых случаях позволяет устранять проблемы консенсуса между различными поколениями автомата SMOSL 400 без использования алгоритма, требующего большого количества вычислений, такого как алгоритм 350 консенсуса. Иными словами, по меньшей мере некоторые не имеющие ограничительного характера варианты осуществления данной технологии позволяют реализовать распределенную обработку информации, не требуя реализации алгоритмов консенсуса и, следовательно, потребляя меньше вычислительных ресурсов (т.е. позволяют сэкономить вычислительные ресурсы по сравнению с известными решениями).
На фиг. 7 приведено третье представление 700 автомата SMOSL 400 в текущий момент времени, более поздний по сравнению с четвертым 428 моментом времени. В текущий момент времени третьего представления 700 четвертое поколение 418 представляет собой главное поколение автомата SMOSL 400, как описано выше.
Предполагается, что в текущий момент времени третьего представления 700 третье поколение 416 повторно связывается с подсистемой 108 распределенного хранения данных, что проиллюстрировано на фиг. 7 восстановлением линии 701 связи.
В не имеющем ограничительного характера примере, если третье поколение 416 отключается от подсистемы 108 распределенного хранения данных в четвертый момент 428 времени вследствие отказа в сети распределенной системы 100 обработки информации, связь между третьим поколением 416 и подсистемой 108 распределенного хранения данных может быть повторно установлена после устранения отказа в сети распределенной системы 100 обработки информации.
Вне зависимости от причины повторного установления связи между третьим поколением 416 и подсистемой 108 распределенного хранения данных, третье поколение 416 может быть по-прежнему способным принимать данные для обработки от источника 502 данных.
Предполагается, что в текущий момент времени третьего представления 700 третье поколение 416 принимает для обработки другие данные от источника данных 502. В результате после приема других данных от источника 502 данных третье поколение 416 может быть способно попытаться обработать другие данные и, как описано выше, попытаться выполнить другое регистрационное действие записи в совместно используемом журнале 404. Другое регистрационное действие записи может указывать, среди прочего, на другие данные, как описано выше.
Тем не менее, следует еще раз отметить, что главным поколением автомата SMOSL 400 является четвертое поколение 418 и что в четвертый момент 428 времени в совместно используемый журнал 404 был передан запрос блокировки, при получении которого (а) запрещается выполнение регистрационных действий записи в совместно используемом журнале 404 любым поколением автомата SMOSL 400, имеющим более ранний идентификатор GUID, чем идентификатор GUID G4 четвертого поколения 418, и (б) разрешается выполнение регистрационных действий записи исключительно четвертым поколением 418.
В результате после того, как третье поколение 416 попыталось выполнить другое регистрационное действие записи в момент времени третьего представления 700, алгоритм 610 блокировки может сравнить идентификатор GUID G3 третьего поколения 416 с идентификатором GUID G4 главного поколения автомата SMOSL 400, обладающего исключительными правами для выполнения регистрационных действий записи в совместно используемом журнале 404 в текущий момент времени третьего представления 700.
Алгоритм 610 блокировки может определить, что идентификатор GUID G3 третьего поколения 416 является более ранним, чем идентификатор GUID G4 главного поколения в текущий момент времени третьего представления 700. Можно сказать, что алгоритм 610 блокировки может определить, что другое регистрационное действие записи исходит от поколения автомата SMOSL 400, предыдущего по отношению к главному поколению автомата SMOSL 400 в текущий момент времени третьего представления 700. Также можно сказать, что алгоритм 610 блокировки может определить, что другое регистрационное действие записи исходит от предыдущего главного поколения автомата SMOSL 400, которое не является главным поколением автомата SMOSL 400 в текущий момент времени третьего представления 700. Также можно сказать, что алгоритм 610 блокировки может определить, что другое регистрационное действие записи исходит от предыдущего главного поколения автомата SMOSL 400, которое не обладает исключительными правами для выполнения регистрационных действий записи в текущий момент времени третьего представления 700.
В ответ алгоритм 610 блокировки может быть способен заблокировать другое регистрационное действие записи в совместно используемом журнале 404. Иными словами, можно сказать, что выполнение другого регистрационного действия записи в совместно используемом журнале 404 предотвращается. Иными словами, по запросу блокировки, отправленному четвертым поколением 418 в четвертый момент 428 времени, выполнение другого регистрационного действия записи в совместно используемом журнале 404 предотвращается с учетом идентификатора GUID G3 третьего поколения 416, от которого исходит другое регистрационное действие записи.
После предотвращения выполнения другого регистрационного действия записи в совместно используемом журнале 404 третье поколение 416 может быть оповещено о том, что другое регистрационное действие записи в совместно используемом журнале не выполнено. Третье поколение 416 может передать источнику 502 данных сообщение об отказе, указывающее, что третьему поколению 416 автомата SMOSL 400 не удалось обработать другие данные.
В некоторых вариантах осуществления данной технологии сообщение об отказе также может указывать на главное поколение автомата SMOSL 400 в текущий момент времени третьего представления 700. Это означает, что сообщение об отказе, сформированное и переданное третьим поколением 416 в источник 502 данных, может указывать, что главным поколением автомата SMOSL 400 является четвертое поколение 418.
В некоторых вариантах осуществления данной технологии после получения сообщения об отказе от третьего поколения 416 источник 502 данных может быть способен передать другие данные четвертому поколению 418 автомата SMOSL 400. После приема других данных от источника 502 данных четвертое поколение 418 способно обработать эти другие данные. С этой целью четвертое поколение 418 может быть способно попытаться выполнить дополнительное регистрационное действие записи в совместно используемом журнале 404, как описано выше.
В результате после того, как четвертое поколение 418 попыталось выполнить дополнительное регистрационное действие записи в момент времени третьего представления 700, алгоритм 610 блокировки может сравнить идентификатор GUID G4 четвертого поколения 418, от которого исходит дополнительное регистрационное действие записи, с идентификатором GUID G4 главного поколения автомата SMOSL 400, обладающего исключительными правами для выполнения регистрационных действий записи в совместно используемом журнале 404 в текущий момент времени третьего представления 700.
Алгоритм 610 блокировки может определить, что идентификатор GUID G4 четвертого поколения 418 совпадает с идентификатором GUID G4 главного поколения в текущий момент времени третьего представления 700. Можно сказать, что алгоритм 610 блокировки может определить, что дополнительное регистрационное действие записи исходит от поколения автомата SMOSL 400, являющегося главным поколением автомата SMOSL 400 в текущий момент времени третьего представления 700. Также можно сказать, что алгоритм 610 блокировки может определить, что дополнительное регистрационное действие записи исходит от поколения автомата SMOSL 400, обладающего исключительными правами для выполнения регистрационных действий записи в текущий момент времени третьего представления 700.
В ответ алгоритм 610 блокировки может разрешить дополнительное регистрационное действие записи в совместно используемом журнале 404. Иными словами, можно сказать, что выполнение дополнительного регистрационного действия записи в совместно используемом журнале 404 разрешается. Иными словами, по запросу блокировки, отправленному четвертым поколением 418 в четвертый момент 428 времени, выполнение дополнительного регистрационного действия записи в совместно используемом журнале 404 разрешается с учетом идентификатора GUID G4 четвертого поколения 418, от которого исходит дополнительное регистрационное действие записи. Поэтому в совместно используемом журнале 404 формируется дополнительный элемент 750 журнала, связанный с идентификатором GUID G4 четвертого поколения 418 автомата SMOSL 400.
Способ обработки данных
В некоторых вариантах осуществления данной технологии реализован способ 800 обработки данных в распределенной системе компьютерной обработки информации, представленный на фиг. 8. Например, выполняющая способ 800 распределенная система компьютерной обработки информации может содержать (а) устройство хранения данных для хранения совместно используемого журнала 404 и (б) автомат SMOSL 400, связанный с устройством хранения данных для обслуживания совместно используемого журнала 404 путем выполнения регистрационных действий (считывание/запись) в совместно используемом журнале 404. Совместно используемый журнал 404 способен хранить указания на данные, обрабатываемые автоматом SMOSL 400.
В некоторых вариантах осуществления данной технологии данные, предназначенные для обработки автоматом SMOSL 400, могут представлять собой транзакцию, предназначенную для обработки автоматом SMOSL 400. Например, транзакция может представлять собой детерминированную транзакцию в пределах объема данной технологии.
В некоторых вариантах осуществления данной технологии устройство хранения данных распределенной системы компьютерной обработки информации может представлять собой одно или несколько отказоустойчивых устройств хранения данных. В других вариантах осуществления изобретения одно или несколько отказоустойчивых устройств хранения данных могут быть реализованы распределенным образом. Например, одно или несколько отказоустойчивых устройств хранения данных могут представлять собой одно или несколько устройств 112 хранения данных подсистемы 108 распределенного хранения данных (см. фиг. 1) в пределах объема данной технологии.
В некоторых вариантах осуществления данной технологии автомат SMOSL 400 может представлять собой один автомат SM, имеющий уникальный в пределах системы идентификатор. Например, распределенная система компьютерной обработки информации может содержать множество автоматов SM. Все или по меньшей мере некоторые автоматы из множества автоматов SM могут быть реализованы в распределенной системе компьютерной обработки информации аналогично автомату SMOSL 400. Каждый автомат из множества автоматов SM в распределенной системе компьютерной обработки информации может иметь соответствующий уникальный в пределах системы идентификатор.
В некоторых вариантах осуществления данной технологии распределенная система компьютерной обработки информации может содержать по меньшей мере один другой автомат SMOSL, реализованный аналогично автомату SMOSL 400. Например, по меньшей мере один другой автомат SMOSL может иметь уникальным образом связанный с ним другой совместно используемый журнал, реализованный аналогично совместно используемому журналу 404 автомата SMOSL 400. Таким образом, можно сказать, что (а) по меньшей мере один другой автомат SMOSL и (б) соответствующий уникальным образом связанный с ним другой совместно используемый журнал совместно формируют по меньшей мере одну другую подсистему автомата SMOSL, которая может быть реализована аналогично подсистеме автомата SMOSL, содержащей автомат SMOSL 400 и совместно используемый журнал 404.
В некоторых вариантах осуществления данной технологии предполагается, что (а) подсистема автомата SMOSL, содержащая автомат SMOSL 400 и совместно используемый журнал 404, и (б) по меньшей мере одна другая подсистема автомата SMOSL, содержащая по меньшей мере один другой автомат SMOSL и соответствующий уникальным образом связанный с ним другой совместно используемый журнал, могут быть способны независимо работать в распределенной системе компьютерной обработки информации. Это означает, что в некоторых вариантах осуществления изобретения обработка данных по меньшей мере одной другой подсистемой автомата SMOSL может не влиять на обработку данных подсистемой автомата SMOSL, содержащей автомат SMOSL 400 и совместно используемый журнал 404.
В некоторых вариантах осуществления данной технологии предполагается, что распределенная система компьютерной обработки информации может содержать базу данных для выполнения транзакций. В некоторых случаях эта база данных может быть реализована как автомат SMOSL 400. В этих случаях совместно используемый журнал 404 может быть способен хранить данные, указывающие на транзакции, предназначенные для выполнения в этой базе данных. Можно сказать, что в этих случаях совместно используемый журнал 404 может быть способен отслеживать и/или выполнять транзакции, предназначенные для этой базы данных и выполняемые этой базой данных.
Также предполагается, что база данных может быть реализована в виде множества автоматов SMOSL в пределах объема данной технологии. Например, база данных может быть реализована в виде множества сегментов, каждый из которых реализован в виде соответствующего автомата SMOSL из множества автоматов SMOSL.
Следует отметить, что автомат SMOSL 400 распределенной системы компьютерной обработки информации имеет множество поколений автомата SMOSL 400. Например, как показано на фиг. 4, автомат SMOSL 400 может иметь множество 402 поколений: первое поколение 412, второе поколение 414, третье поколение 416 и четвертое поколение 418.
Каждое поколение из множества 402 поколений имеет соответствующий идентификатор GUID. Например, первое поколение 412 имеет соответствующий идентификатор GUID G1, второе поколение 414 имеет соответствующий идентификатор GUID G2, третье поколение 416 имеет соответствующий идентификатор GUID G3 и четвертое поколение 418 имеет соответствующий идентификатор GUID G4.
Следует отметить, что одно поколение из множества 402 поколений назначается главным поколением автомата SMOSL 400 в любой момент времени. Например, как описано выше:
- первое поколение 412 представляет собой главное поколение автомата SMOSL 400 между первым моментом 422 времени и вторым моментом 424 времени;
- второе поколение 414 представляет собой главное поколение автомата SMOSL 400 между вторым моментом 424 времени и третьим моментом 426 времени;
- третье поколение 416 представляет собой главное поколение автомата SMOSL 400 между третьим моментом 426 времени и четвертым моментом 428 времени; и
- четвертое поколение 418 представляет собой главное поколение автомата SMOSL 400, начиная с четвертого момента 428 времени и заканчивая моментом времени, соответствующим назначению следующего главного поколения автомата SMOSL 400.
Следует отметить, что поколение автомата SMOSL 400, являющееся главным поколением автомата SMOSL 400, имеет исключительные права на выполнение регистрационных действий записи в совместно используемом журнале в любой момент времени.
Также следует отметить, что способ 800 может выполняться в текущий момент времени, когда совместно используемый журнал 404 обслуживается текущим поколением автомата SMOSL 400, связанным с первым идентификатором GUID и являющимся главным поколением в текущий момент времени. Например, если текущий момент времени соответствует второму моменту 424 времени, текущее поколение автомата SMOSL 400 представляет собой первое поколение 412, связанное с идентификатором GUID G1. В другом примере, если текущий момент времени соответствует третьему моменту 426 времени, текущее поколение автомата SMOSL 400 представляет собой второе поколение 414, связанное с идентификатором GUID G2. В еще одном примере, если текущий момент времени соответствует четвертому моменту 428 времени, текущее поколение автомата SMOSL 400 представляет собой третье поколение 416, связанное с идентификатором GUID G3.
В некоторых вариантах осуществления данной технологии перед выполнением шага 802 способа 800, который более подробно описан ниже, способ 800 может включать в себя запуск или формирование управляющим элементом (распределенной системы компьютерной обработки информации) главного поколения-кандидата автомата SMOSL 400. Можно сказать, что это главное поколение-кандидат автомата SMOSL 400 представляет собой новое поколение из соответствующего множества поколений автомата SMOSL 400.
В некоторых вариантах осуществления данной технологии управляющий элемент может быть реализован как улей 11 или как процесс начальной загрузки распределенной системы 100 обработки информации в пределах объема данной технологии.
В некоторых вариантах осуществления изобретения управляющий элемент и автомат SMOSL 400 могу быть реализованы как соответствующие программные модули (например, в виде выполняемых компьютером команд). Также предполагается, что управляющий элемент и автомат SMOSL 400 могут иметь различные характеристики.
В целом, улей 111 способен осуществлять надзор за различными автоматами SM, такими как автоматы SMOSL, например, входящими в состав системы компьютерной обработки информации. Например, улей 111 может быть способен выравнивать нагрузки различных автоматов SM, связанные с обработкой данных, путем запуска или возможного завершения работы автоматов SM. Как описано выше, улей 111 может представлять собой автомат SM. В некоторых вариантах осуществления изобретения улей 111 может быть реализован в виде автомата SMOSL.
В целом, начальные загрузчики способны запускать автоматы SMOSL. В некоторых случаях эти начальные загрузчики используются, если улей 111 неспособен выполнить запуск. Например, улей 111 сам может запускаться начальным загрузчиком. Начальные загрузчики могут быть способны запускать автоматы SMOSL с использованием эвристических данных или других алгоритмов. По сравнению с ульем 111, начальные загрузчики могут обеспечивать более надежный запуск новых поколений.
В некоторых вариантах осуществления главное поколение-кандидат автомата SMOSL 400 может формироваться управляющим элементом в случае нарушения работы главного поколения автомата SMOSL 400 в этот момент времени. В других вариантах осуществления главное поколение-кандидат автомата SMOSL 400 может формироваться управляющим элементом в случае истечения предельного срока для главного поколения автомата SMOSL 400 в этот момент времени.
Как показано на фиг. 8, способ 800 включает в себя шаг 802 (выполняется в текущий момент времени), предусматривающий передачу главным поколением-кандидатом автомата SMOSL 400 запроса блокировки в совместно используемый журнал 404. Например, если текущий момент времени соответствует второму моменту 424 времени, передающее запрос блокировки главное поколение-кандидат автомата SMOSL 400 представляет собой второе поколение 414. В другом примере, если текущий момент времени соответствует третьему моменту 426 времени, передающее запрос блокировки главное поколение-кандидат автомата SMOSL 400 представляет собой третье поколение 416. В еще одном примере, если текущий момент времени соответствует четвертому моменту 428 времени, передающее запрос блокировки главное поколение-кандидат автомата SMOSL 400 представляет собой четвертое поколение 418.
Следует отметить, что главное поколение-кандидат автомата SMOSL 400 имеет второй идентификатор GUID, следующий за идентификатором GUID главного поколения автомата SMOSL 400 в текущий момент времени. Например, если текущий момент времени соответствует второму моменту 424 времени, вторым идентификатором является идентификатор GUID G2, поскольку первым идентификатором является идентификатор GUID G1. В другом примере, если текущий момент времени соответствует третьему моменту 426 времени, вторым идентификатором является идентификатор GUID G3, поскольку первым идентификатором является идентификатор GUID G2. В еще одном примере, если текущий момент времени соответствует четвертому моменту 428 времени, вторым идентификатором является идентификатор GUID G4, поскольку первым идентификатором является идентификатор GUID G3.
Следует отметить, что по запросу блокировки, переданному на шаге 802 (выполняемом в текущий момент времени), (а) запрещается выполнение регистрационных действий записи в совместно используемом журнале 404 любым поколением автомата SMOSL 400, имеющим более ранний идентификатор GUID, чем второй идентификатор GUID, и (б) разрешается выполнение регистрационных действий записи исключительно главным поколением-кандидатом автомата SMOSL 400.
Например, если текущий момент времени соответствует второму моменту 424 времени, то по запросу блокировки, переданному на шаге 802, (а) запрещается выполнение регистрационных действий записи в совместно используемом журнале 404 любым поколением автомата SMOSL 400, имеющим более ранний идентификатор GUID, чем идентификатор GUID G2 (например, запрещается выполнение регистрационных действий записи первым поколением 412, имеющим идентификатор G1), и (б) разрешается выполнение регистрационных действий записи исключительно вторым поколением 414 автомата SMOSL 400.
В другом примере, если текущий момент времени соответствует третьему моменту 426 времени, то по запросу блокировки, переданному на шаге 802, (а) запрещается выполнение регистрационных действий записи в совместно используемом журнале 404 любым поколением автомата SMOSL 400, имеющим более ранний идентификатор GUID, чем идентификатор GUID G3 (например, запрещается выполнение регистрационных действий записи первым поколением 412, имеющим идентификатор G1, и вторым поколением, имеющим идентификатор G2), и (б) разрешается выполнение регистрационных действий записи исключительно третьим поколением 416 автомата SMOSL 400.
В еще одном примере, если текущий момент времени соответствует четвертому моменту 428 времени, то по запросу блокировки, переданному на шаге 802, (а) запрещается выполнение регистрационных действий записи в совместно используемом журнале 404 любым поколением автомата SMOSL 400, имеющим более ранний идентификатор GUID, чем идентификатор GUID G4 (например, запрещается выполнение регистрационных действий записи первым поколением 412, имеющим идентификатор G1, вторым поколением, имеющим идентификатор G3, и третьим поколением, имеющим идентификатор G3), и (б) разрешается выполнение регистрационных действий записи исключительно четвертым поколением 418 автомата SMOSL 400.
Предполагается, что после передачи запроса блокировки главное поколение-кандидат автомата SMOSL 400 назначается главным поколением автомата SMOSL 400 вместо текущего поколения автомата SMOSL 400.
Например, если текущий момент времени соответствует второму моменту 424 времени, то после передачи запроса блокировки второе поколение 414 назначается главным поколением автомата SMOSL 400 вместо первого поколения автомата SMOSL 400.
В другом примере, если текущий момент времени соответствует третьему моменту 426 времени, то после передачи запроса блокировки третье поколение 416 назначается главным поколением автомата SMOSL 400 вместо второго поколения автомата SMOSL 400.
В еще одном примере, если текущий момент времени соответствует четвертому моменту 428 времени, то после передачи запроса блокировки четвертое поколение 418 назначается главным поколением автомата SMOSL 400 вместо третьего поколения автомата SMOSL 400.
В некоторых вариантах осуществления данной технологии, когда главное поколение-кандидат автомата SMOSL 400 назначается главным поколением автомата SMOSL 400, главное поколение-кандидат автомата SMOSL 400 может быть способно обработать совместно используемый журнал 404 в этот момент времени. Предполагается, что путем обработки совместно используемого журнала 404 в этот момент времени главное поколение-кандидат может перейти в состояние, соответствующее самому позднему состоянию автомата SMOSL 400 в этот момент времени.
Предполагается, что при обработке совместно используемого журнала 404 главное поколение-кандидат автомата SMOSL 400 может выполнять регистрационные действия считывания для обработки по меньшей мере одной зафиксированной части совместно используемого журнала 404 и недавно добавленной части совместно используемого журнала 404, как описано выше.
В некоторых вариантах осуществления данной технологии предполагается, что, несмотря на то, что только главное поколение автомата SMOSL 400 может выполнять регистрационные действия записи в совместно используемом журнале 404 в любой момент времени, другие поколения автомата SMOSL 400 могут выполнять регистрационные действия считывания из совместно используемого журнала 404. Таким образом, предполагается, что, несмотря на то, что только главное поколение автомата SMOSL 400 обладает исключительными правами для выполнения регистрационных действий записи в совместно используемом журнале 404, правами для выполнения регистрационных действий считывания из совместно используемого журнала 404 могут обладать несколько поколений автомата SMOSL 400 в пределах объема данной технологии.
Специалисту в данной области техники могут быть очевидны возможные изменения и усовершенствования описанных выше вариантов осуществления настоящей технологии. Предшествующее описание приведено лишь в качестве примера, но не для ограничения объема изобретения. Объем охраны данной технологии определяется исключительно объемом приложенной формулы изобретения.
название | год | авторы | номер документа |
---|---|---|---|
СИСТЕМА ОБРАБОТКИ ДАННЫХ И СПОСОБ ОБНАРУЖЕНИЯ ЗАТОРА В СИСТЕМЕ ОБРАБОТКИ ДАННЫХ | 2018 |
|
RU2718215C2 |
Способ и система для маршрутизации и выполнения транзакций | 2018 |
|
RU2721235C2 |
Способ и распределенная компьютерная система для обработки данных | 2018 |
|
RU2720951C1 |
СПОСОБ И СИСТЕМА ДЛЯ ПЕРЕДАЧИ СООБЩЕНИЯ | 2019 |
|
RU2746042C1 |
Способ и система для обработки запросов в распределенной базе данных | 2018 |
|
RU2711348C1 |
СПОСОБ ОПРЕДЕЛЕНИЯ ПОТЕНЦИАЛЬНОЙ НЕИСПРАВНОСТИ ЗАПОМИНАЮЩЕГО УСТРОЙСТВА | 2018 |
|
RU2731321C2 |
СПОСОБ И СИСТЕМА ДЛЯ ПЛАНИРОВАНИЯ ОБРАБОТКИ ОПЕРАЦИЙ ВВОДА/ВЫВОДА | 2018 |
|
RU2749649C2 |
ВЫГРУЗКА В ФАЙЛОВОЙ СИСТЕМЕ | 2014 |
|
RU2671049C2 |
СПОСОБ И СИСТЕМА ДЛЯ ПЛАНИРОВАНИЯ ПЕРЕДАЧИ ОПЕРАЦИЙ ВВОДА/ВЫВОДА | 2018 |
|
RU2714219C1 |
Способ и система для планирования выполнения операций ввода/вывода | 2018 |
|
RU2714373C1 |
Изобретение относится к системам для обработки данных. Технический результат заключается в повышении скорости обработки данных. Система содержит хранилище данных для хранения журнала, конечный автомат, связанный с хранилищем данных для обслуживания журнала путем выполнения регистрационных действий, при этом в журнале хранятся указания на обрабатываемые данные. Конечный автомат имеет множество поколений, каждое из которых имеет соответствующий идентификатор GUID. Одно из поколений назначается главным поколением конечного автомата в любой момент времени. Главное поколение имеет исключительные права на выполнение регистрационных действий записи в журнале в любой момент времени. Способ включает в себя передачу главным поколением-кандидатом запроса блокировки в журнал, согласно которому (а) запрещается выполнение регистрационных действий записи любым поколением, имеющим более ранний идентификатор GUID, чем идентификатор GUID главного поколения-кандидата, и (б) разрешается выполнение регистрационных действий записи исключительно главным поколением-кандидатом. 2 н. и 36 з.п. ф-лы, 8 ил.
1. Способ обработки данных в распределенной компьютерной системе, выполняемый в распределенной компьютерной системе, содержащей:
устройство хранения данных для хранения журнала,
конечный автомат, связанный с устройством хранения данных для обслуживания журнала путем выполнения регистрационных действий в журнале,
журнал, где хранятся указания на обрабатываемые данные;
при этом конечный автомат имеет множество поколений, каждое из которых имеет соответствующий уникальный идентификатор поколения (GUID), одно из множества поколений назначается главным поколением конечного автомата в любой момент времени, имеющим исключительные права на выполнение регистрационных действий записи в журнале в любой момент времени;
в текущий момент времени, когда журнал обслуживается текущим поколением конечного автомата, текущее поколение конечного автомата (а) представляет собой главное поколение конечного автомата в текущий момент времени и (б) связано с первым идентификатором GUID,
способ, включающий в себя:
передачу в журнал главным поколением-кандидатом конечного автомата, которое представляет собой новое поколение конечного автомата и имеет второй идентификатор GUID, следующий за первым идентификатором GUID, запроса блокировки, согласно которому
запрещается выполнение регистрационных действий записи в журнале любым поколением конечного автомата, имеющим более ранний идентификатор GUID, чем второй идентификатор GUID, и
разрешается выполнение регистрационных действий записи исключительно главным поколением-кандидатом конечного автомата, осуществляя, таким образом, назначение главного поколения-кандидата конечного автомата главным поколением конечного автомата вместо текущего поколения конечного автомата.
2. Способ по п. 1, в котором данные соответствуют транзакции, предназначенной для обработки конечным автоматом.
3. Способ по п. 1, в котором устройство хранения данных представляет собой множество отказоустойчивых устройств хранения данных.
4. Способ по п. 3, в котором множество отказоустойчивых устройств хранения данных реализовано распределенным образом.
5. Способ по п. 1, в котором конечный автомат представляет собой один конечный автомат с уникальным в пределах системы идентификатором.
6. Способ по п. 1, в котором распределенная компьютерная система содержит другой конечный автомат и другой соответственно связанный журнал, при этом любой конечный автомат уникальным образом связан с соответствующим журналом для формирования подсистемы, а подсистемы в распределенной компьютерной системе работают независимо друг от друга.
7. Способ по п. 3, в котором распределенная компьютерная система дополнительно содержит базу данных для выполнения транзакций, при этом база данных реализована в виде конечного автомата, а журнал, хранящийся в отказоустойчивом распределенном хранилище данных, позволяет отслеживать транзакции, предназначенные для выполнения в этой базе данных.
8. Способ по п. 1, в котором распределенная компьютерная система содержит управляющий элемент для управления конечным автоматом, а способ дополнительно включает в себя формирование управляющим элементом главного поколения-кандидата конечного автомата до наступления текущего момента времени.
9. Способ по п. 8, в котором главное поколение-кандидат конечного автомата формируется в случае нарушения работы текущего поколения конечного автомата.
10. Способ по п. 8, в котором главное поколение-кандидат конечного автомата формируется в случае истечения предельного срока для текущего поколения конечного автомата.
11. Способ по п. 8, в котором управляющий элемент и конечный автомат реализованы в виде программных модулей.
12. Способ по п. 11, в котором характеристики соответствующих программных модулей, связанных с управляющим элементом и конечным автоматом, отличаются.
13. Способ по п. 1, дополнительно включающий в себя выполнение следующих действий в другой момент времени, следующий за данным моментом времени, когда текущее поколение конечного автомата больше не является главным поколением конечного автомата:
прием текущим поколением конечного автомата других данных для обработки;
попытку выполнения текущим поколением конечного автомата регистрационного действия записи в журнале, указывающего на другие данные, при этом выполнение в журнале данного регистрационного действия записи текущим поколением конечного автомата в этот другой момент времени запрещается с учетом первого идентификатора GUID текущего поколения конечного автомата.
14. Способ по п. 13, дополнительно включающий в себя передачу текущим поколением конечного автомата сообщения об отказе, оповещающего о невозможности обработки других данных.
15. Способ по п. 13, в котором другие данные представляют собой транзакцию, а конечный автомат реализован в виде сегмента базы данных, в который направлена эта транзакция.
16. Способ по п. 1, в котором журнал совместно используется всеми поколениями из множества поколений конечного автомата.
17. Способ по п. 16, в котором все поколения из множества поколений конечного автомата обладают правами для выполнения регистрационных действий считывания из журнала независимо от того, какое поколение из множества поколений конечного автомата является главным поколением конечного автомата.
18. Способ по п. 1, в котором главное поколение-кандидат конечного автомата назначается главным поколением конечного автомата и обрабатывает журнал для перехода в самое позднее состояние конечного автомата.
19. Способ по п. 18, в котором журнал содержит по меньшей мере одну зафиксированную часть и недавно добавленную часть, а обработка журнала включает в себя обработку этой по меньшей мере одной зафиксированной части и/или обработку этой недавно добавленной части.
20. Распределенная компьютерная система для обработки данных, содержащая:
устройство хранения данных для хранения журнала;
конечный автомат, связанный с устройством хранения данных для обслуживания журнала путем выполнения регистрационных действий в журнале;
журнал, где хранятся указания на обрабатываемые данные,
при этом конечный автомат имеет множество поколений, каждое из которых имеет соответствующий уникальный идентификатор поколения (GUID), одно из множества поколений назначается главным поколением конечного автомата в любой момент времени, имеющим исключительные права на выполнение регистрационных действий записи в журнале в любой момент времени;
в текущий момент времени, когда журнал обслуживается текущим поколением конечного автомата, текущее поколение конечного автомата (а) представляет собой главное поколение конечного автомата в текущий момент времени и (б) связано с первым идентификатором GUID;
главное поколение-кандидат конечного автомата, представляющее собой новое поколение конечного автомата и имеющее второй идентификатор GUID, следующий за первым идентификатором GUID, при этом главное поколение-кандидат выполнено с возможностью передачи в журнал запроса блокировки, согласно которому
запрещается выполнение регистрационных действий записи в журнале любым поколением конечного автомата, имеющим более ранний идентификатор GUID, чем второй идентификатор GUID, и
разрешается выполнение регистрационных действий записи исключительно главным поколением-кандидатом конечного автомата, осуществляя, таким образом, назначение главного поколения-кандидата конечного автомата главным поколением конечного автомата вместо текущего поколения конечного автомата.
21. Система по п. 20, в которой данные соответствуют транзакции, предназначенной для обработки конечным автоматом.
22. Система по п. 20, в которой устройство хранения данных представляет собой множество отказоустойчивых устройств хранения данных.
23. Система по п. 22, в которой множество отказоустойчивых устройств хранения данных реализовано распределенным образом.
24. Система по п. 20, в которой конечный автомат представляет собой один конечный автомат с уникальным в пределах системы идентификатором.
25. Система по п. 20, содержащая другой конечный автомат и другой соответственно связанный журнал, при этом любой конечный автомат уникальным образом связан с соответствующим журналом для формирования подсистемы, а подсистемы в распределенной компьютерной системе работают независимо друг от друга.
26. Система по п. 22, дополнительно содержащая базу данных для выполнения транзакций, при этом база данных реализована в виде конечного автомата, а журнал, хранящийся в отказоустойчивом распределенном хранилище данных, позволяет отслеживать транзакции, предназначенные для выполнения в этой базе данных.
27. Система по п. 20, содержащая управляющий элемент для управления конечным автоматом и дополнительно выполненная с возможностью формирования главного поколения-кандидата конечного автомата до наступления текущего момента времени.
28. Система по п. 27, в которой главное поколение-кандидат конечного автомата формируется в случае нарушения работы текущего поколения конечного автомата.
29. Система по п. 27, в которой главное поколение-кандидат конечного автомата формируется в случае истечения предельного срока для текущего поколения конечного автомата.
30. Система по п. 27, в которой управляющий элемент и конечный автомат реализованы в виде программных модулей.
31. Система по п. 30, в которой характеристики соответствующих программных модулей, связанных с управляющим элементом и конечным автоматом, отличаются.
32. Система по п. 20, дополнительно выполненная с возможностью выполнения следующих действий в другой момент времени, следующий за данным моментом времени, когда текущее поколение конечного автомата больше не является главным поколением конечного автомата:
прием текущим поколением конечного автомата других данных для обработки;
попытка выполнения текущим поколением конечного автомата регистрационного действия записи в журнале, указывающего на другие данные, при этом выполнение в журнале этого регистрационного действия записи текущим поколением конечного автомата в этот другой момент времени запрещается с учетом первого идентификатора GUID текущего поколения конечного автомата.
33. Система по п. 32, дополнительно выполненная с возможностью передачи текущим поколением конечного автомата сообщения об отказе, оповещающего о том, что другие данные обработать не удалось.
34. Система по п. 32, в которой другие данные представляют собой транзакцию, а конечный автомат реализован в виде сегмента базы данных, в который направляется эта транзакция.
35. Система по п. 20, в которой журнал совместно используется всеми поколениями из множества поколений конечного автомата.
36. Система по п. 35, в которой все поколения из множества поколений конечного автомата обладают правами для выполнения регистрационных действий считывания из журнала независимо от того, какое поколение из множества поколений конечного автомата является главным поколением конечного автомата.
37. Система по п. 20, в которой главное поколение-кандидат конечного автомата назначается главным поколением конечного автомата и обрабатывает журнал для перехода в самое позднее состояние конечного автомата.
38. Система по п. 37, в которой журнал содержит по меньшей мере одну зафиксированную часть и недавно добавленную часть, а обработка журнала включает в себя обработку этой по меньшей мере одной зафиксированной части и/или обработку этой недавно добавленной части.
УПРАВЛЕНИЕ ДАННЫМИ ДЛЯ СОЕДИНЕННЫХ УСТРОЙСТВ | 2014 |
|
RU2670573C2 |
СПОСОБ РАСПРЕДЕЛЕННОГО ВЫПОЛНЕНИЯ ЗАДАЧ КОМПЬЮТЕРНОЙ БЕЗОПАСНОСТИ | 2011 |
|
RU2494453C2 |
СПОСОБ И УСТРОЙСТВО ДЛЯ КОНФИГУРИРОВАНИЯ ДАННЫХ | 2011 |
|
RU2533638C2 |
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек | 1923 |
|
SU2007A1 |
ЛИПОСОМАЛЬНАЯ ВЕЗИКУЛА С ЦИТОХРОМОМ С | 1994 |
|
RU2110990C1 |
Авторы
Даты
2020-02-18—Публикация
2018-10-09—Подача