РАСПРЕДЕЛЕННОЕ ПЕРЕНАЗНАЧЕНИЕ РАБОЧЕЙ НАГРУЗКИ ПОСЛЕ СБОЯ СВЯЗИ
DISTRIBUTED WORKLOAD REMAPPING AFTER COMMUNICATION FAILURE

ОПИСАНИЕ ИЗОБРЕТЕНИЯ
2420-539936RU/052
РАСПРЕДЕЛЕННОЕ ПЕРЕНАЗНАЧЕНИЕ РАБОЧЕЙ НАГРУЗКИ ПОСЛЕ СБОЯ
СВЯЗИ
УРОВЕНЬ ТЕХНИКИ
[0001] Кластерные окружения, например, окружения, в которых рабочие нагрузки распределены по множеству машин, широко используются для обеспечения преодоления сбоев и высоконадежной обработки распределенных рабочих нагрузок. Кластерные окружения предоставляют возможность распределения рабочих нагрузок одному или более узлам, которые являются частью окружения. Кластерное окружение может действовать в качестве клиента, сервера или их обоих. В кластере рабочая нагрузка может быть распределена главными узлами исполнительным узлам, которые составляют кластер. Исполнительные узлы могут посылать запросы доступа касательно целевых данных, которые хранятся системой хранения. Если возникает ошибка между главным узлом и исполнительным узлом, то исполнительный узел может продолжать обрабатывать рабочую нагрузку без сведений о главном узле. Дополнительно, главный узел может переназначить рабочую нагрузку другому узлу без сведений об исполнительном узле.
[0002] Именно в связи с этими и другими соображениями были выполнены примерные варианты. Кроме того, несмотря на то, что были обсуждены относительно конкретные проблемы, следует понимать, что, эти примерные варианты не должны быть ограничены решением конкретных проблем, обозначенных в разделе «Уровень техники».
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Данный раздел «Сущность изобретения» приведен для представления подборки концепций в упрощенной форме, которые дополнительно описаны ниже в разделе «Подробное описание». Данный раздел «Сущность изобретения» не предназначен для обозначения главных признаков или существенных признаков заявляемого изобретения и не предназначен для использования в качестве средства в определении объема заявляемого изобретения.
[0004] Системы и способы, раскрытые в данном документе, предоставляют механизмы для идентификации ситуаций, при которых рабочая нагрузка была переназначена новому узлу и при которых рабочая нагрузка все еще обрабатывается старым узлом. Согласно некоторым вариантам выполнения главный узел назначает рабочую нагрузку исполнительному узлу. Главный узел может передать идентификатор поколения и идентификатор рабочей нагрузки с рабочей нагрузкой. При обработке рабочей нагрузки исполнительный узел отправляет запрос доступа в узел в кластере хранения для осуществления доступа к целевым данным. В примерных вариантах идентификатор поколения и идентификатор рабочей нагрузки используются для идентификации узла и/или связанной рабочей нагрузки при запросе некоторого ресурса. Идентификатор поколения и/или идентификатор рабочей нагрузки могут быть предоставлены с запросом. Когда узел осуществляет доступ к целевым данным, идентификатор поколения и/или идентификатор рабочей нагрузки сохраняются в постоянном хранилище и соотносятся с запрошенными целевыми данными.
[0005] Прежде, чем узел завершит исполнение рабочей нагрузки, может возникнуть сбой, который вызовет потерю главным узлом связи с исполнительным узлом. Например, узел может перезагрузиться, может возникнуть сбой оборудования, может перестать функционировать линия связи и т.д. При таких обстоятельствах главному узлу не известно состояние исполнительного узла. Однако исполнительный узел может все еще иметь доступ к системе хранения и может продолжать обрабатывать рабочую нагрузку и посылать запросы доступа к файлу. В течение сбоя главный узел может переназначить рабочую нагрузку новому исполнительному узлу. В некоторых примерных вариантах главный узел может также передать другой идентификатор поколения наряду с идентификатором рабочей нагрузки и рабочую нагрузку. Когда новый исполнительный узел начинает обрабатывать рабочую нагрузку, он отправляет запрос доступа в узел в кластере хранения для осуществления доступа к целевым данным. В некоторых примерных вариантах новый идентификатор поколения и/или идентификатор рабочей нагрузки могут быть предоставлены с запросом. Новый идентификатор поколения может указывать более высокий приоритет в отличие от старого идентификатора поколения. Когда новый узел осуществляет доступ к целевым данным, новый идентификатор поколения сохраняется в постоянном хранилище и соотносится с запрошенными целевыми данными. Идентификатор поколения разрешает системе хранения управлять запросом для определения того, что рабочая нагрузка была переназначена новому узлу. Действие таким образом предоставляет возможность системе хранения указать старому узлу, что рабочая нагрузка была переназначена. В результате старый узел может прекратить обрабатывать рабочую нагрузку. Дополнительно, старый узел убежден, что рабочая нагрузка не была переназначена, если он не принял указание о переназначении от системы хранения.
[0006] В других примерных вариантах новый идентификатор поколения может указывать более низкий приоритет в отличие от старого идентификатора поколения, или новый узел может послать «разрешающий» запрос доступа. В обоих случаях новый узел не начинает обрабатывать рабочую нагрузку, в то время как старый узел все еще обрабатывает рабочую нагрузку. Вместо этого новый узел может принять указание о том, что старый узел все еще функционирует, и в результате новый узел может периодически посылать последующие запросы доступа, чтобы в конечном счете получить доступ, как только старый узел завершил обработку. Такой принцип предоставляет возможность старому узлу продолжить обрабатывать рабочую нагрузку вместо того, чтобы прервать действие и перезапустить рабочую нагрузку на новом узле.
[0007] Примерные варианты могут быть реализованы в качестве компьютерного процесса, вычислительной системы или в качестве промышленного изделия, такого как компьютерный программный продукт или считываемые компьютером носители. Компьютерный программный продукт может быть компьютерным носителем хранения информации, который является считываемым вычислительной системой и на котором закодирована компьютерная программа команд для исполнения компьютерным процессом.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0008] Со ссылкой на следующие фигуры описаны не накладывающие ограничений и не исчерпывающие примерные варианты.
[0009] На Фиг.1 показана система, которая может использоваться для реализации примерных вариантов, описанных в данном документе.
[0010] На Фиг.2 показана система, которая может использоваться для реализации примерных вариантов, описанных в данном документе.
[0011] На Фиг.3 показана блок-схема последовательностей операций для узла, осуществляющего связь с системой хранения.
[0012] На Фиг.4 показана блок-схема последовательностей операций для узла, назначающего рабочие нагрузки другим узлам.
[0013] На Фиг.5 показана блок-схема последовательностей операций для системы хранения, осуществляющей связь с узлом.
[0014] На Фиг.6 показана блок-схема, изображающая примерный вариант вычислительного устройства, с которым могут быть применены на практике варианты выполнения настоящего изобретения.
[0015] На Фиг.7A и 7B показаны упрощенные блок-схемами мобильного вычислительного устройства, с которым могут быть применены на практике варианты выполнения настоящего изобретения.
[0016] На Фиг.8 показана упрощенная блок-схема распределенной вычислительной системы, в которой могут быть применены на практике варианты выполнения настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[0017] Различные варианты выполнения описаны более подробно ниже со ссылкой на сопроводительные чертежи, которые образуют этого часть и на которых показаны конкретные примерные варианты выполнения. Однако примерные варианты могут быть реализованы во множестве различных форм и не должны рассматриваться в качестве ограниченных примерными вариантами, изложенными в данном документе. Соответственно, примерные варианты могут принимать форму варианта аппаратной реализации или вариант полностью программной реализации, или варианта реализации, сочетающего варианты программного и аппаратного выполнения. Последующее подробное описание не должно, поэтому, рассматриваться в ограничительном смысле.
[0018] Примерные варианты настоящего раскрытия относятся к обеспечению высоконадежной обработки распределенных рабочих нагрузок посредством предоставления системе хранения возможности уведомлять узел, когда его рабочая нагрузка была переназначена. В примерных вариантах система хранения может быть местным устройством, присоединенным к сети устройством хранения, распределенным файловым сервером или любым другим типом системы хранения в вычислительном окружении. Узлы могут быть частью кластера, в котором «исполнительные» узлы обрабатывают рабочие нагрузки, которые назначаются «главными» узлами. В некоторых примерных вариантах кластер может состоять из множества уровней, при котором исполнительные узлы более низкого уровня принимают назначения рабочих нагрузок от главных узлов более высокого уровня. В других примерных вариантах кластера может иметь только один уровень, на котором каждый узел может функционировать в качестве исполнительного узла, главного узла, или их обоих.
[0019] В одном примерном варианте исполнительному узлу может быть назначена рабочая нагрузка от главного узла. Исполнительный узел в свою очередь может действовать в качестве главного узла для подчиненных исполнительных узлов и в результате этого может дополнительно распределять рабочую нагрузку одному из своих подчиненных исполнительных узлов. Узлы могут быть соединены через сеть. Специалисту должно быть понятно, что системы и способы, раскрытые в данном документе, могут использоваться в окружении любого другого типа, таком как, но не ограниченном этим, виртуальная сеть.
[0020] Данные могут совместно использоваться среди множества запросчиков. Используемый в данном документе запросчик может содержать любой узел, приложение, рабочую нагрузку, поток или другой процесс или объект, запрашивающий доступ к целевым данным. Несмотря на то, что примеры, описанные в данном документе, могут быть описаны по отношению к «приложению» или «клиенту», или «узлу», или «рабочей нагрузке», действующих в качестве запросчика, настоящее раскрытие не ограничено ими. Когда запросчик осуществляет доступ к целевым данным, целевые данные могут быть заблокированы, тем самым препятствуя другим запросчикам осуществлять к ним доступ, пока не будет снята блокировка. Блокировка целевых данных может использоваться для защиты от конфликта - то есть, для защиты от видоизменения целевых данных другим запросчиком прежде, чем осуществляющий доступ запросчик выполнит свое действие. Как правило, когда предоставляется блокировка, то блокировкой может завладеть другой запросчик в некоторых примерных вариантах. Например, система хранения может поддерживать блокировку с использованием идентификатора рабочей нагрузки, представленного, или ссылающегося на, запросчиком в запросе доступа.
[0021] В некоторых случаях, когда возникает сбой, влияющий на связь главного узла с исполнительным узлом, главному узлу может стать не известно состояние исполнительного узла. Например, сбой может быть результатом проблемы связи между главным узлом и исполнительным узлом, или результатом перезагрузки исполнительного узла. В результате этого исполнительный узел может функционировать обычно и поэтому все еще обрабатывать рабочую нагрузку, или исполнительный узел мог столкнуться со сбоем и рабочая нагрузка больше не обрабатывается. Дополнительно, исполнительный узел может все еще иметь доступ к информации файла, хранящейся системой хранения. Например, система хранения может быть доступна через другой сетевой тракт в отличие от главного узла.
[0022] Вследствие сбоя главный узел может переназначить рабочую нагрузку другому исполнительному узлу. В результате этого новый исполнительный узел может запросить доступ к данным, которые являются или были предварительно заблокированы старым исполнительным узлом. В некоторых примерных вариантах система хранения может определить, что идентификатор рабочей нагрузки, соотносящийся с запросом доступа от нового узла, согласуется с блокировкой, помещенной над целевыми данными старым узлом. Система хранения затем разрушает старую блокировку и помещает новую блокировку над целевыми данными.
[0023] Однако, если старый узел все еще обрабатывает рабочую нагрузку, то запрос доступа от старого узла касательно целевых данных приведет в результате к тому же самому функционированию, описанному выше. Система хранения определит, что запрос доступа старого узла соотносится с идентификатором рабочей нагрузки, разрушит блокировку нового узла и поместит другую блокировку над целевыми данными для старого узла. В результате этого эти два узла смогут продолжить повторно получать блокировку над одними и теми же целевыми данными без знания о присутствии другого узла. Это может негативно влиять на функционирование кластера. Например, это может привести к задержанной обработке рабочих нагрузок или прерываниям, которые требуют перезапуска обработки рабочей нагрузки вместо того, чтобы предоставить возможность старому узлу завершить обработку, например, прерывание рабочей нагрузки видеокодирования, которое затем должно перезапускать процесс кодировки. Системы и способы, раскрытые в данном документе, обеспечивают механизмы для идентификации ситуаций, при которых рабочая нагрузка была переназначена новому узлу и при которых рабочая нагрузка все еще обрабатывается старым узлом, тем самым ослабляя влияние на обработку рабочей нагрузки после сбоя.
[0024] На Фиг.1 показана система 100, которая может быть использована для реализации некоторых примерных вариантов. Система 100 включает в себя узлы 102, 104 и 106, а также систему 108 хранения. В изображенном примерном варианте узел 102 действует в качестве главного узла для узлов 104 и 106. Узлы 104 и 106 действуют в качестве исполнительных узлов и обрабатывают рабочие нагрузки, назначенные им узлом 102. Система 108 хранения хранит информацию, к которой осуществляют доступ узлы 104 и 106. Несмотря на то, что на Фиг.1 показано, что только узлы 104 и 106 осуществляют связь с системой 108 хранения, в других примерных вариантах может присутствовать более двух узлов, которые действуют в качестве исполнительных узлов и осуществляют доступ к информации из системы 108 хранения. Дополнительно, несмотря на то, что на Фиг.1 показано, что только узел 102 действует в качестве главного узла относительно узлов 104 и 106, в других примерных вариантах может быть более одного главного узла, который назначает рабочие нагрузки исполнительным узлам.
[0025] В соответствии с одним примерным вариантом узлы 102, 104 и 106 используются для предоставления высоконадежной обработки распределенных рабочих нагрузок. Это осуществляется посредством использования компонентов на узлах 102, 104 и 106 и системы 108 хранения для разделения рабочих нагрузок и перераспределения нагрузки среди различных узлов в случае сбоя между главным узлом 102 и исполнительными узлами 104 и 106. Как описано более подробно ниже, уведомления о переназначении, предоставленные в узел, когда его рабочая нагрузка переназначена, предоставляют возможность кластеру узлов предоставлять высоконадежную обработку распределенных рабочих нагрузок. В примерных узлы 104 и 106 вариантах могут осуществлять связь с системой 108 хранения с использованием протокола Блока Серверных Сообщений (SMB) 2.0/3.0.
[0026] С целью изображения одного примерного варианта узел 102 может назначить первую рабочую нагрузку узлу 106. Первая рабочая нагрузка может быть соотнесена с первым идентификатором поколения и/или идентификатором первой рабочей нагрузки, которые могут быть переданы в узел 106 наряду с первой рабочей нагрузкой. Узел 106 начинает обрабатывать первую рабочую нагрузку, отправлять запросы доступа к файлу касательно целевых данных, хранящихся системой 108 хранения, по мере необходимости. Запросы доступа к файлу могут включать в себя или ссылаться на идентификатор поколения и/или идентификатор рабочей нагрузки, такие как первый идентификатор поколения и идентификатор первой рабочей нагрузки.
[0027] Система 108 хранения принимает запросы доступа касательно целевых данных. В некоторых примерных вариантах система 108 хранения может определить, заблокированы ли целевые данные и поэтому соотнесены с другим идентификатором поколения и/или идентификатором рабочей нагрузки. Если целевые данные заблокированы, то система 108 хранения может отклонить запрос доступа к файлу, может разрушить блокировку или может предпринять другие действия в зависимости от используемого протокола.
разрушением
аннулированием
[0028] После определения того, что запрос нужно удовлетворить идентификатор поколения и/или идентификатор рабочей нагрузки могут быть сохранены системой 108 хранения в постоянном хранилище. Когда идентификатор поколения и/или идентификатор рабочей нагрузки сохранены в постоянном хранилище, они могут упоминаться в данном документе в качестве сохраненного идентификатора поколения и сохраненного идентификатора рабочей нагрузки. В некоторых примерных вариантах целевые данные могут быть заблокированы до, или после, удовлетворения запроса доступа. Дополнительно, блокировка может быть выполнена с возможностью снятия (тем самым предоставляя другим узлам возможность иметь доступ к целевым данным) после завершения всех действий в запросе. Блокировка может истечь после заданного периода времени или раньше заданного периода времени в момент времени, в который завершены все действия в запросе. В других примерных вариантах блокировка может предоставить узлу исключительный доступ к целевым данным, пока клиент не снимет блокировку или пока не произойдет событие, разрушающее блокировку. Например, в соответствии с протоколом SMB, исключительная OpLock (уступающая блокировка) от системы 108 хранения может быть предоставлена узлу 106. Узел 106 может предполагать, что он является единственным узлом с доступом к целевым данным, и узел 106 может кэшировать все целевые данные локально, а так же кэшировать все изменения к целевым данным перед фиксацией изменений в системе 108 хранения. Если другой узел/рабочая нагрузка пытается открыть те же самые целевые данные, система 108 хранения отправляет сообщение в узел 106 (называемое  или ), которое делает недействительной исключительную OpLock, предварительно предоставленную узлу 106. Узел 106 затем выгружает все изменения с целевыми данными и фиксирует их в системе 108 хранения.
[0029] В некоторый момент узел 102 может столкнуться со сбоем связи с узлом 106. Сбой может являться результатом, в некоторых примерах, разъединения, сбоя оборудования или перезагрузки и т.д. В результате сбоя узел 102 переназначает первую рабочую нагрузку узлу 104 посредством генерирования второго идентификатора поколения. Второй идентификатор поколения, идентификатор первой рабочей нагрузки и первая рабочая нагрузка передаются в узел 104. В некоторых примерных вариантах узел 102 может ожидать предварительно определенное количество времени перед переназначением первой рабочей нагрузки узлу 104.
[0030] Узел 104 начинает обрабатывать первую рабочую нагрузку, отправлять запросы доступа к файлу касательно целевых данных, хранящихся системой 108 хранения, по мере необходимости. Запрос доступа к файлу может включать в себя или ссылаться на идентификатор поколения и/или идентификатор рабочей нагрузки, такие как второй идентификатор поколения и идентификатор первой рабочей нагрузки.
[0031] Система 108 хранения принимает запросы доступа к файлу. Если целевые данные заблокированы (например, узлом 106 с использованием одного и того же идентификатора рабочей нагрузки), то система 108 хранения определяет, обозначает ли второй идентификатор поколения более высокий приоритет в отличие от сохраненного идентификатора поколения. Если второй идентификатор поколения указывает более высокий приоритет в отличие от сохраненного идентификатора поколения, то система 108 хранения разрушает блокировку, помещенную над целевыми данными узлом 106, блокирует целевые данные для узла 104 и удовлетворяет запрос доступа. Если второй идентификатор поколения не указывает более высокий приоритет, то система 108 хранения может указать узлу 104, что целевые данные заблокированы. Дополнительно, указание может также сообщить узлу 104 о том, что целевые данные заблокированы узлом 106. Если второй идентификатор поколения указывает более высокий приоритет в отличие от сохраненного идентификатора поколения, то система 108 хранения заменяет сохраненный идентификатор поколения на второй идентификатор поколения.
[0032] В некоторых примерных вариантах запросы доступа, посланные узлом 104, могут быть разрешающими, означая, что вместо ожидания того, что система 108 хранения разрушит блокировку с более низким приоритетом над целевыми данными, узел 104 указывает, что запрос доступа с более высоким приоритетом нельзя удовлетворить, в то время как целевые данные заблокированы или находятся в использовании. Например, вместо того, чтобы разрушать блокировку узла 106 над целевыми данными, система 108 хранения отклоняет разрешающий запрос доступа от узла 104 и вместо этого предоставляет уведомление о том, что узел 106 все еще обрабатывает первую рабочую нагрузку. Даже если узел 106 неспособен осуществлять связь с узлом 102, узел 106 продолжает обрабатывать рабочую нагрузку, пока узел 106 способен осуществлять связь с системой 108 хранения. В результате этого исполнение рабочей нагрузки не прерывается узлом 104. Узел 104 может затем периодически отправлять последующие разрешающие запросы доступа к системе 108 хранения для получения доступа к целевым данным после завершения узлом 106. Первый идентификатор поколения может быть сохранен системой 108 хранения в качестве сохраненного идентификатора поколения, пока запрос доступа к файлу с более высоким приоритетом от узла 104 не будет удовлетворен, после чего второй идентификатор поколения может быть сохранен в качестве сохраненного идентификатора поколения.
[0033] В других примерных вариантах второй идентификатор поколения, сгенерированный узлом 102, может указывать более низкий приоритет в отличие от первого идентификатора поколения. В результате этого запросы доступа к файлу, отправленные узлом 104, отклоняются, в то время как целевые данные остаются в использовании узлом 106. Если узел 106 обрабатывает рабочую нагрузку и все еще имеет доступ к системе 108 хранения, то идентификатор поколения с более низким приоритетом предоставляет возможность узлу 106 продолжать обрабатывать рабочую нагрузку без прерывания узлом 104. Узел 104 может продолжать отправлять периодические запросы доступа в систему 108 хранения. После, в конечном счете, получения доступа к целевым данным узел 104 может указать свою успешность узлу 102. Узел 102 затем генерирует третий идентификатор поколения, который указывает более высокий приоритет в отличие от первого идентификатора поколения и передает третий идентификатор поколения в узел 104. Узел 104 может затем использовать третий идентификатор поколения, а не второй идентификатор поколения, в последующих запросах доступа к файлу. После успешного осуществления узлом 104 доступа к целевым данным с использованием третьего идентификатора поколения система 108 хранения может сохранить третий идентификатор поколения в качестве сохраненного идентификатора поколения.
[0034] Несмотря на сбой связи между узлами 102 и 106 узел 106 может продолжать обрабатывать первую рабочую нагрузку. После того, как первая рабочая нагрузка была переназначена узлу 104 и узлу 104 был предоставлен доступ к целевым данным системой 108 хранения, узел 106 может осуществить запрос доступа к файлу касательно целевых данных. Запрос доступа к файлу может включать в себя или ссылаться на первый идентификатор поколения. После приема запроса доступа к файлу система 108 хранения оценивает идентификатор поколения, соотносящийся с запросом доступа к файлу. Система 108 хранения определяет, что первый идентификатор поколения, соотносящийся с запросом доступа к файлу, указывает более низкий приоритет в отличие от сохраненного идентификатора поколения. В результате этого система 108 хранения отклоняет запросе доступа к файлу и указывает узлу 106, что его рабочая нагрузка была переназначена другому узлу. В некоторых примерных вариантах указание может сообщить узлу 106 о том, что рабочая нагрузка была переназначена узлу 104. Узел 106 может затем прекратить обрабатывать первую рабочую нагрузку.
[0035] В других примерных вариантах узел 104, действуя в качестве исполнительного узла, может также действовать в качестве главного узла. Узел 104 может назначить вторую рабочую нагрузку другому узлу внутри своего уровня, например, узлу 106. Вторая рабочая нагрузка может быть соотнесена с идентификатором второй рабочей нагрузки и четвертым идентификатором поколения. В этом примерном варианте четвертый идентификатор поколения, идентификатор второй рабочей нагрузки и вторая рабочая нагрузка передаются в узел 106. Узел 106 начинает обрабатывать вторую рабочую нагрузку, отправлять запросы доступа к файлу касательно целевых данных, хранящихся системой 108 хранения, по мере необходимости. Запрос доступа к файлу может включать в себя или ссылаться на идентификатор поколения и/или идентификатор рабочей нагрузки, а также четвертый идентификатор поколения и идентификатор второй рабочей нагрузки. Как уже обсуждено выше, система 108 хранения сохраняет четвертый идентификатор поколения в постоянном хранилище и удовлетворяет запросы доступа.
[0036] В некоторый момент узел 104 может столкнуться со сбоем связи с узлом 106. В результате сбоя узел 104 переназначает вторую рабочую нагрузку новому узлу (не изображен) внутри своего уровня посредством генерирования пятого идентификатора поколения. Пятый идентификатор поколения, идентификатор второй рабочей нагрузки и вторая рабочая нагрузка затем передаются в новый узел. Новый узел начинает обрабатывать вторую рабочую нагрузку.
[0037] Как уже обсуждено выше, переназначение может быть разрешающим, либо посредством предоставления пятого идентификатора поколения с более низким приоритетом, либо посредством посылки запросов доступа к файлу наряду с указанием, запрашивающим разрешающее функционирование. В обоих примерных вариантах узел 106 способен завершить выполнение второй рабочей нагрузку в случае, при котором он функционирует обычно, но не способен осуществлять связь с узлом 104. Поэтому, если переназначение является разрешающим, то новый узел может получить доступ к целевым данным только, если узел 106 больше не осуществляет доступ к целевым данным, например, если узел 106 завершил обработку, потерял возможность соединения с системой 108 хранения или столкнулся со сбоем в дополнение к сбою связи с узлом 104. В случае, при котором пятый идентификатор поколения не указывал более высокий приоритет в отличие от сохраненного идентификатора поколения, то после получения новым узлом доступа к целевым данным новый узел может принять шестой идентификатор поколения с более высоким приоритетом от узла 104. Идентификатор поколения с более высоким приоритетом может затем быть сохранен системой 108 хранения.
[0038] Несмотря на сбой связи между узлами 104 и 106 узел 106 может продолжать обрабатывать вторую рабочую нагрузку. После того, как вторая рабочая нагрузка была переназначена новому узлу и новому узлу был предоставлен доступ к целевым данным системой 108 хранения, узел 106 может осуществить запрос доступа к файлу касательно целевых данных. Запрос доступа к файлу может включать в себя или ссылаться на четвертый идентификатор поколения. После приема запроса доступа к файлу система 108 хранения оценивает идентификатор поколения, соотносящийся с запросом доступа к файлу. Система 108 хранения определяет, что четвертый идентификатор поколения, соотносящийся с запросом доступа к файлу, указывает более низкий приоритет в отличие от сохраненного идентификатора поколения. В результате этого система 108 хранения отклоняет запрос доступа к файлу и указывает узлу 106, что его рабочая нагрузка была переназначена другому узлу. В некоторых примерных вариантах указание может сообщить узлу 106 о том, что рабочая нагрузка была переназначена новому узлу. Узел 106 может затем прекратить обрабатывать вторую рабочую нагрузку.
[0039] В дополнительных примерных вариантах узел 102 может переместить третью рабочую нагрузку, которая обрабатывается узлом 106, из узла 106 в узел 104. Третья рабочая нагрузка может быть соотнесена с идентификатором третьей рабочей нагрузки. Дополнительно, третья рабочая нагрузка может уже быть соотнесена с седьмым идентификатором поколения, который используется узлом 106 при посылке запросов доступа к файлу в систему 108 хранения. Узел 102 генерирует восьмой идентификатор поколения. Восьмой идентификатор поколения может указывать более высокий приоритет в отличие от седьмого идентификатора поколения. Восьмой идентификатор поколения, идентификатор третьей рабочей нагрузки и третья рабочая нагрузка затем передаются в узел 104. В некоторый момент в течение действия по перемещению может возникнуть сбой между узлами 102 и 104. В результате этого узлу 102 не известно, завершено ли действие по перемещению успешно и начинал ли узел 104 обрабатывать третью рабочую нагрузку. Узел 102 поэтому неспособен определить то, какое действия должен предпринять узел 106, например, следует ли ему прекратить или продолжать обрабатывать третью рабочую нагрузку.
[0040] Однако, если действие по перемещению завершено успешно, то узел 104 начнет обрабатывать третью рабочую нагрузку, посылать запросы доступа к файлу в систему 108 хранения по мере необходимости. В результате этого система 108 хранения сохраняет соотносящийся восьмой идентификатор поколения и удовлетворяет запросы доступа к файлу, как описано выше. После приема последующего запроса доступа к файлу от узла 106 система 108 хранения определяет, что соотносящийся седьмой идентификатор поколения указывает более низкий приоритет в отличие от сохраненного идентификатора поколения и предоставляет указание, что рабочая нагрузка была переназначена. Указание может сообщить узлу 106, что рабочая нагрузка была перемещена в узел 104.
[0041] Если действие по перемещению не завершено успешно, то узел 106 продолжает обрабатывать третью рабочую нагрузку. Идентификатор поколения предоставляет возможность кластеру гарантировать то, что третья рабочая нагрузка непрерывно обрабатывается узлом внутри кластера независимо от того, оказывается ли действие по перемещению неудачным. Дополнительно, он предоставляет альтернативный канал уведомления через систему 108 хранения в случае успешного перемещения, при котором узел 102 неспособен уведомить узел 106 о том, что рабочая нагрузка была перемещена в другой узел.
[0042] Предшествующее описание является всего лишь одним примером того, как примерный вариант, изображенный на Фиг.1, может функционировать. Как описано более подробно ниже, примерные варианты могут вовлекать другие этапы или действия. Они могут быть реализованы с использованием любого подходящего компонента или модуля программного обеспечения или аппаратного обеспечения.
[0043] На Фиг.2 показана система 200, которая может быть использована для реализации некоторых примерных вариантов. Система 200 включает в себя узлы 202, 204, 206, 208, 210, 212 и 214. Узел 202 действует в качестве главного узла для узлов 204 и 206. Узлы 204 и 206 могут действовать в качестве исполнительных узлов и обрабатывать рабочие нагрузки, назначенные им узлом 202. Дополнительно, узел 204 действует в качестве главного узла для узлов 208 и 210, а узел 206 действует в качестве главного узла для 212 и 214. Узлы 204 и 206 могут действовать в качестве как главных узлов, так и исполнительных узлов. Узлы 208 и 210 действуют в качестве исполнительных узлов и обрабатывают рабочие нагрузки, назначенные им узлом 204. Точно также узлы 212 и 214 действуют в качестве исполнительных узлов и обрабатывают рабочие нагрузки, назначенные им узлом 206. Система 216 хранения хранит информацию, к которой осуществляют доступ узлы 208, 210, 212 и 214 через сеть 230. Несмотря на то, что на Фиг.2 изображено, что только узлы 208, 210, 212 и 214 осуществляют связь с системой 216 хранения, в других примерных вариантах может быть более (или менее) четырех узлов, которые осуществляют доступ к информации файла, хранящейся системой 216 хранения, в том числе и узлы 202, 204 и 206.
[0044] Как показано на Фиг.2, система 216 хранения включает в себя узлы 216A и 216B, которые предоставляют как высокую доступность, так и избыточность для масштабируемого файлового сервера 218. В примерных вариантах система 216 хранения предоставляет масштабируемый файловый сервер 218, к которому осуществляют доступ узлы 208, 210, 212 и 214. Масштабируемый файловый сервер 218 может содержать множество кластерных серверов, которые могут совместно функционировать для предоставления информации файла из распределенной файловой системы 220. Распределенная файловая система 220 содержит информацию файла, которая хранится в физическом хранилище 228. Файловая система 226 физического хранилища 228 установлена в узле 216B. В некоторых примерных вариантах формат файловой системы 226 может быть Файловой Системой Новой Технологии (NTFS) или Восстанавливаемой Файловой Системой (ReFS). Узел 216B действует в качестве координатора распределенной файловой системы 220 и ретранслирует действия с файлом, например, считывание, запись и действия с метаданными, из распределенной файловой системы 220 в файловую систему 226. В некоторых примерных вариантах узел 216A может выполнять действия с файлом непосредственно в физическом хранилище 228, хотя узел 216B может иметь исключительный доступ для записи так, что запросы на запись пересылаются узлом 216A в узел 216B вместо непосредственной отправки в физическое хранилище 228. Дополнительно, фильтр 222 идентификаторов поколения соотносит запросы доступа с идентификаторами поколения, которые затем хранятся в постоянном хранилище 224. Например, постоянное хранилище 224 может содержать базу данных фильтра идентификаторов поколения, используемую фильтром идентификаторов поколения, закрепленным за файловой системой NTFS. Несмотря на то, что на Фиг.2 изображены два узла, в других примерных вариантах система 216 хранения может включать в себя более двух узлов или менее двух узлов.
[0045] На Фиг.2 показаны три «уровня» узлов и множество подгрупп. Узел 202 содержит глобальный главный уровень. Узлы 204 и 206 содержат местный главный уровень, а узлы 208, 210, 212 и 214 содержат местный исполнительный уровень. Узлы на глобальном главном уровне могут распределять нагрузку узлам на местном главном уровне. Узлы на местном главном уровне могут распределять нагрузку узлам на местном исполнительном уровне. Дополнительно, узлы 204, 208 и 210 содержат одну подгруппу, в то время как узлы 206, 212 и 214 могут содержать другую подгруппу. В результате этого узел 204 может распределять рабочие нагрузки между узлами 208 и 210, а узел 206 может распределять рабочие нагрузки между узлами 212 и 214. Однако, узел 202, в качестве самого верхнего узла, ответственен за полное распределение рабочей нагрузки и может распределять рабочие нагрузки независимо от решений по распределению, принятых узлами 204 и 206. Например, узел 202 может переназначить рабочую нагрузку внутри местного главного уровня из узла 204 в узел 206 независимо от того, распределил ли узел 204 дополнительно рабочую нагрузку узлам на местном исполнительном уровне (например, узлам 208 или 210). Несмотря на то, что на Фиг.2 показано только три уровня узлов, в других примерных вариантах может быть более (или менее) трех уровней, при которых узлы на более высоких уровнях могут назначать рабочие нагрузки узлам на нижних уровнях. Хотя на Фиг.2 показано конкретное количество узлов на каждом уровне, уровень может содержать переменное количество узлов.
[0046] Создание идентификатора поколения может захватывать иерархическую структуру принятия решений, которая присутствует между узлами 202, 204, 206, 208, 210, 212 и 214. В одном примерном варианте идентификатор поколения может быть 128-битным идентификатором, который затем подразделяется на два подраздела, так что первые 64 бита обозначают старший идентификатор, а последние 64 бита обозначают младший идентификатор. Старший идентификатор изменяется при назначении рабочих нагрузок среди узлов, содержащих второй уровень (например, узлов 204 и 206). Схожим образом младший идентификатор изменяется при назначении рабочих нагрузок среди узлов, содержащих третий уровень, например, узлов 208, 210, 212 и 214. В результате этого подразделы идентификатора поколения могут оцениваться по-разному при рассмотрении приоритета одного идентификатора поколения по отношению к другому идентификатору поколения. Может быть определено, что идентификатор поколения, имеющий старший идентификатор с более высоким приоритетом относительно старшего идентификатора другого идентификатора поколения, имеет более высокий приоритет независимо от приоритета, указанного младшими идентификаторами. Схожим образом отношение приоритетов двух идентификаторов поколения со старшими идентификаторами, которые указывают одинаковый приоритет, может быть определено посредством сравнения приоритетов, которые указаны младшими идентификаторами. В других примерных вариантах идентификатор поколения может иметь другую длину и может быть подразделен на более, или менее, двух частей для представления иерархической структуры принятия решений.
[0047] Если приоритет, указанный подразделом идентификатора поколения, достигает максимального возможного кодированного значения, то последующий идентификатор поколения с более высоким приоритетом может быть получен посредством отправки запроса на идентификатор поколения с более высоким приоритетом в главный узел. Например, если узел 204 исчерпывает все возможные кодированные значения для младшего подраздела идентификатора у идентификатора поколения, то узел 204 может указать узлу 202, что все возможные младшие идентификаторы были исчерпаны для данного старшего идентификатора. Узел 202 затем отвечает новым идентификатором поколения, содержащим старший идентификатор с более высоким приоритетом и младший идентификатор. Узел 204 может затем продолжить изменять подраздел младшего идентификатора нового идентификатора поколения для предоставления последующих идентификаторов поколения с более высоким приоритетом.
[0048] В других примерных вариантах идентификатор поколения с более высоким приоритетом может быть сгенерирован посредством «перекидывания» исчерпанного подраздела с максимального возможного кодированного значения обратно на начальное значение (например, минимальное возможное кодированное значение). Например, если младший идентификатор представлен целым числом без знака, то младший идентификатор «перекидывается» из максимального возможного кодированного значения в ноль. Старший идентификатор является неизмененным. При сравнении двух идентификаторов определение приоритета осуществляется посредством вычитания последнего действующего значения для каждого соответственного подраздела идентификатора поколения из эквивалентного подраздела другого идентификатора поколения. Действие вычитания может использовать математику двоичного дополнения так, чтобы вычитание максимального возможного кодированного значения из перекинутого значения приводило в результате к положительному значению. Отрицательное значение, происходящее из действия вычитания, указывает более низкий приоритет, тогда как положительное значение указывает более высокий приоритет. Отношение приоритетов идентификаторов поколения затем оценивается посредством оценивания отдельных подразделов идентификаторов поколения, как описано выше.
[0049] В соответствии с примерными вариантами узлы 202, 204, 206, 208, 210, 212 и 214 используются для предоставления высоконадежной обработки распределенных рабочих нагрузок. Это осуществляется посредством использования компонентов в узлах и системе 216 хранения для разделения рабочих нагрузок и перераспределения нагрузки среди различных узлов в случае сбоя между главным узлом и исполнительным узлом. Как описано более подробно ниже, уведомления о переназначении, предоставляемые в узел, когда его рабочая нагрузка переназначена, предоставляют возможность кластеру узлов предоставлять высоконадежную обработку распределенных рабочих нагрузок.
[0050] Узел 202, в примерных вариантах, ответственен за разделение и назначение распределенной рабочей нагрузки исполнительным узлам. Узел 202 может назначить первую рабочую нагрузку узлу 204. Узел 204 может дополнительно распределить рабочую нагрузку одному из своих исполнительных узлов, например, узлу 210. Первая рабочая нагрузка может быть соотнесена с первым идентификатором поколения, содержащим первое старшее число и первое младшее число. Первая рабочая нагрузка может также быть соотнесена с идентификатором первой рабочей нагрузки. Первый идентификатор поколения, идентификатор первой рабочей нагрузки и первая рабочая нагрузка могут быть переданы в узел 210.
[0051] Узел 210 начинает обрабатывать первую рабочую нагрузку, отправлять запросы доступа к файлу касательно целевых данных в узел 216A по мере необходимости. Запрос доступа может быть соотнесен с или включать в себя идентификатор поколения и/или идентификатор рабочей нагрузки. Например, когда новая рабочая нагрузка запущена, указание идентификатора поколения может быть передано в узел 216A. Запрос доступа касательно целевых данных может включать в себя ряд действий с файлом, которые следует выполнить над целевыми данными. Действия могут быть, например, открыванием для считывания/записи данных, перечислением атрибутов, заимствование запросов для предоставления возможности кэширования данных локально или другие действия доступа к файлу.
[0052] В одном примерном варианте идентификатор поколения может быть сохранен в структуре _NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT. Структура _NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT может быть задана следующим образом:
[0053]
typedef struct _NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT
{
[0054] USHORT Size;
[0055] USHORT Reserved;
[0056] UINT64 VersionHigh;
[0057] UINT64 VersionLow;
[0058] } NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT,
*PNETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT;
[0059] В таких примерах в переменной Size может храниться информация, относящаяся к размеру структуры, переменная VersionHigh может быть старшим идентификатором, а переменная VersionLow может быть младшим идентификатором. В некоторых примерных вариантах _NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT, или другой объект или переменная, содержащая идентификатор поколения, могут быть сохранены в постоянном хранилище 224. В примерных вариантах структура _NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT может быть отправлена из узла в систему хранения совместно с запросом для осуществления доступа к ресурсу (например, запрос на создание или открытие). В одном примерном варианте идентификатор поколения может быть сохранен узлом, который обрабатывает рабочую нагрузку или распределяет рабочие нагрузки, например, главным узлом или исполнительным узлом. В другом примерном варианте несмотря на то, что не показано на Фиг.2, кластер узлов может иметь центральное хранилище, которое хранит идентификаторы поколения. В таком примерном варианте множество узлов в кластере могут осуществлять доступ к централизованному хранилищу. В еще одном примерном варианте идентификаторы поколения могут быть сохранены по множеству хранилищ. В таких примерах кластер узлов может использовать алгоритм репликации для гарантирования того, что множество хранилищ содержат одни и те же идентификаторы поколения.
[0060] Узел 216A принимает запрос доступа касательно целевых данных. После определения того, что запрос нужно удовлетворить, фильтр 222 идентификаторов поколения сохраняет идентификатор поколения, содержащийся в или соотносящийся с запросом доступа от узла 210, в постоянном хранилище 224. В некоторых примерных вариантах целевые данные затем могут быть заблокированы.
[0061] В некоторый момент узел 210 может столкнуться со сбоем связи с узлом 204. Сбой может произойти вследствие, например, разъединения, сбоя оборудования или перезагрузки. В результате сбоя узел 204 переназначает первую рабочую нагрузку узлу 208 посредством генерирования второго идентификатора поколения, содержащего первый старший идентификатор и второй младший идентификатор. Второй идентификатор поколения, идентификатор первой рабочей нагрузки и первая рабочая нагрузка могут быть переданы в узел 208.
[0062] Узел 208 начинает обрабатывать первую рабочую нагрузку, отправлять запрос доступа к файлу касательно целевых данных к узлу 216A по мере необходимости. Запрос доступа к файлу может включать в себя или ссылаться на идентификатор поколения и/или идентификатор рабочей нагрузки, такие как второй идентификатор поколения и идентификатор первой рабочей нагрузки.
[0063] Узел 216A принимает запрос доступа к файлу. Если целевые данные заблокированы (например, узлом 210 с использованием того же самого идентификатора рабочей нагрузки), то масштабируемый файловый сервер 218 определяет, обозначает ли второй идентификатор поколения более высокий приоритет в отличие от сохраненного идентификатора поколения. Старшие идентификаторы как второго идентификатора поколения, так и сохраненного идентификатора поколения указывают один и тот же приоритет, таким образом масштабируемый файловый сервер 218 сравнивает младшие идентификаторы. Если младший идентификатор второго идентификатора поколения указывает более высокий приоритет в отличие от младшего идентификатора сохраненного идентификатора поколения, то узел 216A разрушает блокировку узла 210 над целевыми данными, блокирует целевые данные для узла 208 и удовлетворяет запрос доступа. Если младший идентификатор второго идентификатора поколения не указывает более высокий приоритет, то узел 216A может указать узлу 208, что целевые данные заблокированы. Дополнительно, указание может также сообщить узлу 208 о том, что целевые данные заблокированы узлом 210. Если второй идентификатор поколения указывает более высокий приоритет в отличие от сохраненного идентификатора поколения, то идентификатор поколения, сохраненный в постоянном хранилище 224, заменяется на второй идентификатор поколения, который становится сохраненным идентификатором поколения.
[0064] Узел 208 может также посылать разрешающие запросы доступа, обсужденные выше, либо младший идентификатор второго идентификатора поколения может указывать более низкий приоритет в отличие от младшего идентификатора сохраненного идентификатора поколения. В обоих этих примерах узел 210 способен завершить выполнение рабочей нагрузки в случае, при котором он функционирует нормально, но не способен осуществлять связь с узлом 204. Поэтому узел 208 может получить доступ к целевым данным только, если узел 210 больше не осуществляет доступ к целевым данным, например, если узел 210 завершил обработку, потерял возможность соединения с системой 216 хранения или столкнулся со сбоем в дополнение к сбою связи с узлом 204. В случае, при котором второй идентификатор поколения не указывал более высокий приоритет в отличие от сохраненного идентификатора поколения, то, как только узел 208 получает доступ к целевым данным, узел 208 может принять третий идентификатор поколения с более высоким приоритетом от узла 204. Идентификатор поколения с более высоким приоритетом может затем быть сохранен в постоянном хранилище 224.
[0065] Несмотря на сбой связи между узлами 204 и 210 узел 210 может продолжать обрабатывать первую рабочую нагрузку. После того, как первая рабочая нагрузка была переназначена узлу 208 и узлу 208 был предоставлен доступ к целевым данным узлом 216A, узел 210 может отправить запрос доступа к файлу в узел 216A. Запрос доступа к файлу может включать в себя или ссылаться на первый идентификатор поколения. После приема запроса доступа масштабируемый файловый сервер 218 оценивает идентификатор поколения, соотносящийся с запросом доступа к файлу. Масштабируемый файловый сервер 218 определит, что первый идентификатор поколения, соотносящийся с запросом доступа к файлу, указывает более низкий приоритет в отличие от сохраненного идентификатора поколения. В результате этого узел 216A отклоняет запрос доступа к файлу и указывает узлу 210, что рабочая нагрузка была переназначена другому узлу. В некоторых примерных вариантах указание может сообщить узлу 210 о том, что рабочая нагрузка была переназначена узлу 208. Узел 210 может затем прекратить обрабатывать первую рабочую нагрузку.
[0066] В конечном счете, узел 204 может столкнуться со сбоем связи с узлом 202. В результате сбоя узел 202 переназначает первую рабочую нагрузку узлу 206 посредством генерирования четвертого идентификатора поколения, содержащего второй старший идентификатор и третий младший идентификатор. Третий младший идентификатор может указывать приоритет, подобный первому или второму младшим идентификаторам, или он может указывать вообще другой приоритет. Четвертый идентификатор поколения, идентификатор первой рабочей нагрузки и первая рабочая нагрузка могут быть переданы в узел 206. Узел 206 может затем дополнительно распределить рабочую нагрузку одному из своих исполнительных узлов, например, узлу 212. В результате четвертый идентификатор поколения, идентификатор первой рабочей нагрузки и первая рабочая нагрузка для узла 212 могут быть переданы в узел 212.
[0067] Узел 212 начинает обрабатывать первую рабочую нагрузку, отправлять запрос доступа касательно целевых данных к узлу 216B по мере необходимости. Запрос доступа к файлу может быть соотнесен с или включать в себя идентификатор поколения и/или идентификатор рабочей нагрузки, такие как четвертый идентификатор поколения и идентификатор первой рабочей нагрузки.
[0068] Узел 216B принимает запросы доступа к файлу. Если целевые данные заблокированы (например, узлом 210 с использованием одного и того же идентификатора рабочей нагрузки), то масштабируемый файловый сервер 218 определяет, обозначает ли четвертый идентификатор поколения более высокий приоритет в отличие от сохраненного идентификатора поколения. Если старший идентификатор четвертого идентификатора поколения указывает более высокий приоритет в отличие от старшего идентификатора сохраненного идентификатора поколения, узел 216B разрушает блокировку узла 208 над целевыми данными, блокирует целевые данные для узла 212 и удовлетворяет запрос доступа. Масштабируемый файловый сервер 218 может игнорировать младший идентификатор после определения того, что старший идентификатор указывает более высокий приоритет. Дополнительно, сохраненный идентификатор поколения в постоянном хранилище 224 может быть заменен четвертым идентификатором поколения с более высоким приоритетом. Если старший идентификатор четвертого идентификатора поколения не указывает более высокий приоритет, то узел 216B может указать узлу 212, что целевые данные заблокированы. Дополнительно, указание может также сообщить узлу 212 о том, что целевые данные заблокированы узлом 208. В примерных вариантах узел 212 может передать такую информацию в узел 202.
[0069] Узел 212 может также посылать разрешающие запросы доступа, обсужденные выше, или четвертый идентификатор поколения может указывать более низкий приоритет в отличие от сохраненного идентификатора поколения. В обоих этих примерах узел 212 получает доступ к целевым данным только после того, как узел 208 завершит свой запрос доступа и/или, в некоторых примерных вариантах, снимет свою блокировку. В случае, при котором четвертый идентификатор поколения не указывал более высокий приоритет в отличие от сохраненного идентификатора поколения, то, как только узел 212 получает доступ к целевым данным, узел 212 может принять пятый идентификатор поколения с более высоким приоритетом от узла 202. Идентификатор поколения с более высоким приоритетом сохраняется в постоянное хранилище 224. Это препятствует возвращению доступа узлом 208 с использованием его идентификатора поколения с более низким приоритетом после получения узлом 212 доступа к целевым данным.
[0070] Несмотря на сбой связи между узлами 204 и 202 узел 208 может продолжать обрабатывать первую рабочую нагрузку. После того, как первая рабочая нагрузка была переназначена узлу 212 и узлу 212 был предоставлен доступ к целевым данным узлом 216B, узел 208 может отправить запрос доступа к файлу в узел 216A. Запрос доступа к файлу может включать в себя или ссылаться на шестой идентификатор поколения, содержащий первый старший идентификатор и четвертый младший идентификатор. Четвертый младший идентификатор может указывать приоритет, подобный первому, второму или третьему младшим идентификаторам, либо он может указывать вообще другой приоритет. После приема запроса доступа масштабируемый файловый сервер 218 оценивает идентификатор поколения, соотносящийся с запросом доступа к файлу. Масштабируемый файловый сервер 218 определяет, что старший идентификатор шестого идентификатора поколения, соотносящийся с запросом доступа к файлу, указывает более низкий приоритет в отличие от старшего идентификатора сохраненного идентификатора поколения. В примерных вариантах указание приоритета младшего идентификатора может быть проигнорировано, потому что уже было осуществлено определение более высокого приоритета на основе приоритета, указанного старшими идентификаторами идентификаторов поколения. В результате этого узел 216A отклоняет запрос доступа к файлу и указывает узлу 208, что рабочая нагрузка была переназначена другому узлу. В некоторых примерных вариантах указание может сообщить узлу 208 о том, что рабочая нагрузка была переназначена узлу 212. Узел 208 может затем прекратить обрабатывать первую рабочую нагрузку.
[0071] Как может быть понятно, вышеупомянутое описание системы 200 не предназначено ограничивать примерные варианты, описанные в данном документе. Фиг.2 и ее описание всего лишь предназначены изобразить вариант реализации некоторых примерных вариантов. Таким образом, примерные варианты не ограничены тем, что изображено и описано на Фиг.2.
[0072] На Фиг.3, 4 и 5 показаны блок-схемы последовательностей 300, 400 и 500 операций согласно примерным вариантам. Последовательности 300, 400 и 500 операций могут быть выполнены в любом подходящем вычислительном окружении. Например, последовательности операций могут быть исполнены такими окружениями, которые изображены на Фиг.1 и 2. Поэтому, описание последовательностей 300, 400 и 500 операций может ссылаться по меньшей мере на один из упомянутых компонентов с Фиг.1 и 2. Однако следует понимать, что варианты реализации с Фиг.1 и 2 не ограничивают окружения последовательностями 300, 400 и 500 операций.
[0073] Кроме того, несмотря на то, что последовательности 300, 400 и 500 операций изображены и описаны последовательно в отдельно взятом порядке, в других примерных вариантах действия могут быть выполнены в других порядках, многократно и/или параллельно. Дополнительно, одно или более действия могут быть опущены или объединены в некоторых примерных вариантах. Кроме того, следует понимать, что порядковые номера, такие как «первый» не предназначены подразумевать порядок или последовательность, пока не указано иное, и используются для отличия подобных элементов. Например, «первый идентификатор поколения» не должен быть начальным идентификатором поколения, а должен восприниматься в качестве другого по отношению ко «второму идентификатору поколения».
[0074] На блок-схеме последовательности 300 операций показаны этапы, например, для узла, который осуществляет связь с системой хранения. В примерных вариантах последовательность 300 операций, изображенная на Фиг.3, может быть выполнена узлом, который обрабатывает рабочую нагрузку, например, узлом 210 (Фиг.2).
[0075] Последовательность 300 операций начинается на этапе 302, на котором отправляется запрос доступа касательно целевых данных. Запрос доступа может соотноситься с первым идентификатором поколения, идентификатором первой рабочей нагрузки и первой рабочей нагрузкой. В одном примерном варианте первый идентификатор поколения может быть отправлен в сообщении, переданном через сеть. Идентификатор поколения может быть передан в одном и тот же сообщении, содержащем запрос на этапе 302, либо он может быть передан в другом сообщении. В таких примерных вариантах объект, содержащий идентификатор поколения, такой как, но не ограниченный этим, _NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT, может быть отправлен на этапе 302.
[0076] В одном примерном варианте для отправки идентификатора поколения на этапе 302 может быть использован интерфейс. Интерфейс может быть интерфейсом уровня ядра, расположенным в узле или доступным узлу, функционирующему в кластерном окружении. В примерных вариантах интерфейс уровня ядра может быть использован узлом для отправки идентификатора поколения в систему хранения. Следующее представляет собой не накладывающий ограничений примерным вариантом интерфейса уровня ядра, который может быть использован на этапе 302 для отправки идентификатора экземпляра приложения:
[0077] //
[0078] //контекст ECP для приложения для предоставления его
//ID экземпляра.
[0079] //
[0080]
[0081]
typedef struct _NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT
{
[0082] //
[0083] //Здесь необходимо установить размер данной
//структуры.
[0084] //
[0085]
[0086] USHORT Size;
[0087]
[0088] //
[0089] //Здесь необходимо установить нулевое значение.
[0090] //
[0091]
[0092] USHORT Reserved;
[0093]
[0094] //
[0095] //Вызывающий оператор помещает старшую версию и
//младшую версию.
[0096] //Данный ECP должен сопровождать
//_NETWORK_APP_INSTANCE_ECP, чтобы быть
[0097] //действительным.
[0098] //
[0099]
[00100] UINT64 VersionHigh;
[00101] UINT64 VersionLow;
[00102]
[00103] } _NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT,
*PNETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT;
[00104]
[00105] //
[00106] //GUID, используемый для структуры NETWORK_APP_INSTANCE_ECP_CONTEXT.
[00107] // {6AA6BC45-A7EF-4af7-9008-FA462E144D74}
[00108] //
[00109] DEFINE_GUID(GUID_ECP_NETWORK_APP_INSTANCE_VERSION, 0xb7d082b9, 0×563b, 0×4f07, 0xa0, 0×7b, 0×52, 0×4a, 0×81, 0×16, 0xa0, 0×10);
[00110] Несмотря на то, что приведен конкретный интерфейс уровня ядра, специалисту в уровне техники должно быть понятно, что на этапе 302 для отправки идентификатора поколения могут использоваться другие интерфейсы.
[00111] Затем последовательность операций переходит на этап 304, на котором принимается ответ на доступ. На этапе 306 принятия решения осуществляется определение, был ли доступ к целевым данным предоставлен. Доступ не может быть предоставлен, потому что, например, целевые данные заблокированы или используются другой рабочей нагрузкой, как указано идентификатором рабочей нагрузки, или идентификатор рабочей нагрузки указывает ту же самую рабочую нагрузку, но первый идентификатор поколения указывает более низкий приоритет в отличие от идентификатора, который был первоначально соотнесен с другим запросом доступа касательно целевых данных. В других примерных вариантах доступ может быть отклонен, потому что первый запрос доступа указывал, что ранее существующая блокировка над целевыми данными не должна быть разрушена, если целевые данные все еще используются.
[00112] Если на этапе 306 принятия решения доступ к целевым данным был предоставлен, то последовательность операции переходит на этап 308, на котором продолжается исполнение первой рабочей нагрузки. После этапа 308 последовательность операций заканчивается.
[00113] Если на этапе 306 принятия решения доступ к целевым данным не был предоставлен, то последовательность операций переходит на этап 310 принятия решения, на котором осуществляется определение относительно того, указывает ли ответ на доступ, что рабочая нагрузка была переназначена.
[00114] Если на этапе 310 принятия решения было принято указание о том, что рабочая нагрузка была переназначена, то последовательность операций переходит на этап 312, на котором исполнение первой рабочей нагрузки прекращается в результате принятого указания. В некоторых примерных вариантах ответ на доступ может также указать узел, которому была назначена рабочая нагрузка. После этапа 312 последовательность операций заканчивается.
[00115] Если на этапе принятия решения 310 не было принято указание о том, что рабочая нагрузка была переназначена, то последовательность операций переходит на этап 314, на котором запрос доступа может периодически повторяться с возвращением на этап 302 после некоторого периода времени.
[00116] На блок-схеме последовательностей 400 операций показаны этапы, например, для узла, который назначает рабочие нагрузки другим узлам. В примерных вариантах последовательность 400 операций может быть выполнена узлом, который распределяет нагрузку, например, узлу 202 (Фиг.2).
[00117] Последовательность 400 операций начинается на этапе 402, на котором первый идентификатор поколения и идентификатор первой рабочей нагрузки соотносятся с первой рабочей нагрузкой. На этапе 404 первый идентификатор поколения, идентификатор первой рабочей нагрузки и первая рабочая нагрузка передаются в первый узел.
[00118] Затем последовательность операций переходит на этап 406, на котором возникает сбой. Сбой может произойти вследствие, например, прерывания соединения, сбоя оборудования или перезагрузки и т.д. На этапе 408 принятия решения осуществляется определение того, задействованы ли разрешающие запросы. В примерных вариантах разрешающие запросы предоставляют возможность первому узлу продолжать обрабатывать первую рабочую нагрузку, когда первый узел является исполнительным узлом, который функционирует нормально, но прекратил осуществлять связь со своим главным узлом, и первая рабочая нагрузка переназначается главным узлом. Как уже обсуждено, существует два способа, посредством которых могут быть задействованы разрешающие запросы, и на характер назначения главным узлом нагрузки исполнительным узлам влияют как то (a), задействованы ли разрешающие запросы; и то (b), задействовано ли положительное указание разрешающего запроса (например, разрешающий флаг). Если никакие разрешающие запросы не задействованы (например, главный узел их не поддерживает), то главный узел по умолчанию предоставит второму узлу второй идентификатор поколения, который имеет более высокий приоритет в отличие от первого идентификатора поколения. Если разрешающие запросы задействованы, но разрешающие флаги не поддерживаются (либо вторым узлом, либо системой хранения), то главный узел может предоставить второму узлу второй идентификатор поколения с более низким приоритетом в отличие от первого идентификатора поколения (так, чтобы при представлении системе хранения, второй идентификатор поколения не прерывал активного действия, выполняемого первым узлом над целевыми данными). При задействовании разрешающих флагов главный узел, тем не менее, может генерировать и предоставлять второму узлу идентификатор поколения с более высоким приоритетом, но с разрешающим флагом, установленным внутри него (или командами для второго узла на установку такого флага) так, чтобы система хранения игнорировала идентификатор поколения с более высоким приоритетом во время продолжающегося выполнения какого-либо активного действия первым узлом над целевыми данными. Это дополнительно обсуждается ниже.
[00119] Если на этапе 408 принятия решения определено, что разрешающие запросы не задействованы, то последовательность операций переходит на этап 410, на котором второй идентификатор поколения, указывающий более высокий приоритет в отличие от первого идентификатора поколения, генерируется и соотносится с первой рабочей нагрузкой. На этапе 412 второй идентификатор поколения, идентификатор первой рабочей нагрузки и первая рабочая нагрузка передаются во второй узел. Последовательность операций заканчивается на этапе 412.
[00120] Если на этапе 408 принятия решения определено, что разрешающие запросы задействованы, то последовательность операций переходит на этап 414, на котором осуществляется определение того, задействованы ли разрешающие флаги. В некоторых примерных вариантах разрешающие флаги могут быть задействованы и могут использоваться исполнительным узлом для указания системе хранения, что запрос доступа к файлу нельзя удовлетворить, если целевые данные находятся в использовании или заблокированы, даже если запрос доступа к файлу соотносится с идентификатором поколения, указывающим более высокий приоритет.
[00121] Если на этапе 414 принятия решения определено, что разрешающие флаги задействованы, то последовательность операций переходит на этап 416, на котором третий идентификатор поколения, указывающий более высокий приоритет в отличие от первого идентификатора поколения, генерируется и соотносится с первой рабочей нагрузкой. На этапе 418 третий идентификатор поколения, идентификатор первой рабочей нагрузки и первая рабочая нагрузка передаются во второй узел наряду с разрешающим флагом или указанием о том, что второй узел должен установить разрешающий флаг при осуществлении запроса доступа к системе хранения. После этапа 418 последовательность операций заканчивается.
[00122] Если на этапе 414 принятия решения определено, что разрешающие флаги не задействованы, то последовательность операций переходит на этап 420, на котором четвертый идентификатор поколения, указывающий более низкий приоритет в отличие от первого идентификатора поколения, генерируется и соотносится с первой рабочей нагрузкой. На этапе 422 четвертый идентификатор поколения, идентификатор первой рабочей нагрузки и первая рабочая нагрузка передаются во второй узел. Последовательность операций переходит на этап 424, на котором, наконец, принимается от второго узла уведомление, указывающее то, что к целевым данным доступ был успешно осуществлен. Затем последовательность операций переходит на этап 426, на котором пятый идентификатор поколения, указывающий более высокий приоритет в отличие от первого идентификатора поколения, генерируется и соотносится с первой рабочей нагрузкой. На этапе 428 пятый идентификатор поколения передается во второй узел. После этапа 428 последовательность 400 операций заканчивается.
[00123] На блок-схеме последовательности 500 операций показаны этапы, например, для системы хранения, осуществляющей связь с узлом. В примерных вариантах последовательность 500 операций может быть выполнена системой хранения, в частности, одним или более файловыми серверами, например, узлом 216A и/или узлом 216B (Фиг.2).
[00124] Последовательность 500 операций начинается с этапа 502, на котором принимается первый запрос доступа касательно целевых данных. Первый запрос доступа соотнесен с первым идентификатором поколения и идентификатором первой рабочей нагрузки. В некоторых примерных вариантах первый идентификатор поколения и/или идентификатор первой рабочей нагрузки могут быть включены в качестве части первого запроса доступа. Запрос доступа касательно целевых данных может включать в себя некоторое количество действий с файлом, которые следует выполнить над целевыми данными. Эти действия могут быть, например, открытиями для считывания/записи данных, перечислением атрибутов, заимствование запросов для предоставления возможности кэширования данных локально или другие действия доступа к файлу. После этапа 502 последовательность 500 операций переходит на этап 504, на котором первый идентификатор поколения и идентификатор первой рабочей нагрузки сохраняются в постоянном хранилище.
[00125] На этапе 506 осуществляется блокировка целевых данных для использования и соотнесение их с первым идентификатором поколения. Целевые данные могут также быть соотнесены с идентификатором первой рабочей нагрузки. Последовательность операций переходит на этап 508, на котором предоставляется доступ к целевым данным. На этапе 510 принимается второй запрос доступа касательно целевых данных. Второй запрос доступа может быть соотнесен со, или ссылаться на, вторым идентификатором поколения и/или идентификатором первой рабочей нагрузки.
[00126] На этапе 512 принятия решения осуществляется определение, обладает ли второй идентификатор поколения более высоким приоритетом в отличие от сохраненного идентификатора. В некоторых примерных вариантах определение может быть осуществлено на основе сравнения приоритета, указанного различными подразделами идентификатора поколения, например, старшим подразделом идентификатора и младшим подразделом идентификатора.
[00127] Если на этапе 512 принятия решения определено, что второй идентификатор поколения не указывает более высокий приоритет, то последовательность операций переходит на этап 514, на котором запрос доступа отклоняется и делается указание о том, что целевые данные находятся в использовании. В примерных вариантах такое указание может включать в себя указание того, что целевые данные находятся в использовании отдельно взятым узлом. После этапа 514 последовательность операций заканчивается.
[00128] Если на этапе 512 принятия решения определено, что второй идентификатор поколения действительно имеет более высокий приоритет, то последовательность операций переходит на этап 516 принятия решения, на котором осуществляется определение того, является ли второй запрос доступа разрешающим. Если на этапе 516 принятия решения определено, что второй запрос доступа является разрешающим, то последовательность операций переходит на этап 518, на котором запрос доступа отклоняется и делается указание о том, что целевые данные находятся в использовании. После этапа 518 последовательность операций заканчивается. В примерных вариантах узел, осуществляющий второй запрос доступа, будет повторять второй запрос доступа, пока целевые данные не будут больше заблокированными.
[00129] Если на этапе 516 принятия решения определено, что второй запрос доступа не является разрешающим, то последовательность 500 операций переходит на этап 520, на котором второй идентификатор поколения сохраняется вместо первого идентификатора поколения в постоянном хранилище. На этапе 522 осуществляется разрушение блокировки, соотносящейся с первым идентификатором поколения над целевыми данными, и помещение новой блокировки над целевыми данными, которая может быть соотнесена со вторым идентификатором поколения. На этапе 524 осуществляется удовлетворение запроса доступа.
[00130] На этапе 526 принимается третий запрос доступа. Третий запрос доступа может быть соотнесен с, или ссылаться на, первым идентификатором поколения и идентификатором первой рабочей нагрузки. Последовательность операций переходит на этап 528, на котором третий запрос доступа отклоняется, потому что первый идентификатор поколения не указывает более высокий приоритет в отличие от сохраненного идентификатора поколения. Дополнительно, делается указание о том, что целевые данные были переназначены. Последовательность 500 операций затем заканчивается.
[00131] На Фиг.6-8 и в соответствующем описании приведено обсуждение множества функциональных окружений, в которых могут быть применены на практике примерные варианты изобретения. Тем не менее, устройства и системы, изображенные и обсужденные по отношению к Фиг.6-8 приведены с целью примера и иллюстрации, и не ограничивают огромного количества конфигураций вычислительных устройств, которые могут быть использованы для применения на практике примерных вариантов изобретения, описанных в данном документе.
[00132] На Фиг.6 показана блок-схема, изображающая физические компоненты вычислительного устройства 602, например, узлы 202, 204, 206, 208, 210, 212, 214, 216A и 216B, с помощью которых могут быть применены на практике примерные варианты настоящего раскрытия. Компоненты вычислительного устройства, описанные ниже, могут подходить для вычислительных устройств, описанных выше. В базовой конфигурации вычислительное устройство 602 может включать в себя по меньшей мере один блок 604 обработки и системное запоминающее устройство 606. В зависимости от конфигурации и типа вычислительного устройства системное запоминающее устройство 606 может содержать, но не ограничено следующим: энергозависимое хранилище (например, запоминающее устройство с произвольным доступом), энергонезависимое хранилище (например, постоянное запоминающее устройство), флэш-память или любое сочетание таких запоминающих устройств. Системное запоминающее устройство 606 может включать в себя операционную систему 607 и один или более программных модулей 608, подходящих для функционирования приложений 620 программного обеспечения, таких как, рабочая нагрузка 624, соотносящееся с идентификатором 626 поколения. Операционная система 607, например, может быть подходящей для управления функционированием вычислительного устройства 602. Кроме того, примерные варианты изобретения могут быть применены на практике совместно с графической библиотекой, другими операционными системами или любой другой прикладной программой и не ограничиваются каким-либо отдельно взятым приложением или системой. Данная базовая конфигурация показана на Фиг.6 компонентами внутри пунктирной линии 622. Вычислительное устройство 602 может иметь дополнительные функции или функциональные средства. Например, вычислительное устройство 602 может также включать в себя дополнительные устройства хранения данных (съемные и/или несъемные), такие как, например, магнитные диски, оптические диски или лента. Такое дополнительное хранилище показано на Фиг.6 съемным устройством 609 хранения и несъемным устройством 610 хранения.
[00133] Как указано выше, некоторое количество программных модулей и файлов данных могут храниться в системном запоминающем устройстве 606. При исполнении в блоке 604 обработки, программные модули 608 (например, рабочая нагрузка 624, соотносящаяся с идентификатором 626 поколения) могут выполнять обработку, включающую в себя, но не ограниченную этим, один или более из этапов последовательностей 300, 400 и 500 операций, изображенных на Фиг.3, 4 и 5. Другие программные модули, которые могут использоваться в соответствии с примерными вариантами настоящего изобретения, могут включать в себя приложения для электронной почты и контактов, приложения обработки текста, приложения для электронных таблиц, приложения для баз данных, приложения для слайдовой презентации, прикладные программы для черчения или автоматизированные прикладные программы и т.д.
[00134] Кроме того, примерные варианты изобретения могут быть применены на практике в электрической схеме, содержащей отдельные электронные элементы, корпусные или интегральные электронные схему, содержащие логические вентили, схему, использующую микропроцессор, или на однокристальной схеме, содержащей электронные элементы или микропроцессоры. Например, примерные варианты изобретения могут быть применены на практике через «систему на микросхеме» (SOC), в которой каждый или многие из компонентов, изображенных на Фиг.6, могут быть объединены на единственной интегральной схеме. Такое SOC-устройство может включать в себя один или более блоков обработки, графических блоков, блоков для связи, блоков системной виртуализации и различную прикладную функциональность, все из которых интегрированы (или «прожжены») на подложке микросхемы в качестве одной интегральной схемы. При функционировании через SOC, функциональные средства, описанные в данном документе, могут задействоваться через специальную для приложений логику, объединенную с другими компонентами вычислительного устройства 602 на одиночной интегральной схеме (микросхеме). Примерные варианты настоящего раскрытия могут также быть применены на практике с использованием других технологий, способных выполнять такие логические операции, как, например, И, ИЛИ и НЕ, включающие в себя, но не ограниченные следующим: механические, оптические, жидкостные и квантовые технологии. Кроме того, примерные варианты изобретения могут быть применены на практике внутри компьютера общего назначения или в любых других схемах или системах.
[00135] Вычислительное устройство 602 может также иметь одно или более устройств ввода 612, таких как клавиатура, координатный манипулятор типа «мышь», перо, устройство звукового ввода, устройство ввода посредством прикосновения и т.д. Устройство(а) вывода 614, такое как устройство отображения, громкоговорители, печатающее устройство и т.д., также может быть включено. Вышеупомянутые устройства являются примерными, и другие устройства тоже могут использоваться. Вычислительное устройство 602 может включать в себя одно или более соединений 616 для связи, предоставляющих возможность осуществления связи с другими вычислительными устройствами 618. Примеры подходящих соединений 616 для связи включают в себя, но не ограничиваются следующим: радиочастотный (RF) передатчик, приемник и/или приемопередающая схема; универсальная последовательная шина (USB), параллельные и/или последовательные порты.
[00136] Термин считываемый компьютером носитель, используемый в данном документе, может включать в себя компьютерный носитель хранения. Компьютерный носитель хранения может включать в себя энергозависимый и энергонезависимый, съемный и несъемный носитель, реализованный любым способом или технологией для хранения информации, такой как считываемые компьютером команды, структуры данных или программные модули. Системное запоминающее устройство 606, съемное устройство 609 хранения и несъемное устройство 610 хранения все являются примерами компьютерного носителя хранения (то есть, запоминающим хранилищем). Компьютерный носитель хранения может включать в себя RAM, ROM, электрически стираемое постоянное запоминающее устройство (EEPROM), флэш-память или запоминающее устройство по другой технологии, CD-ROM, цифровые универсальные диски (DVD) или другое оптическое хранилище, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие магнитные устройства хранения, или любое другое изделие производства, которое может быть использовано для хранения информации и к которому может осуществлять доступ вычислительное устройство 602. Любой такой компьютерный носитель хранения может быть частью вычислительного устройства 602. Компьютерный носитель хранения не включает в себя несущую волну или другой распространяемый или модулируемый сигнал данных.
[00137] Среда связи может быть воплощена посредством считываемых компьютером команд, структур данных, программных модулей или других данных в модулируемом сигнале данных, таком как несущая волна или другой транспортный механизм, и включает в себя любую среду доставки информации. Термин «модулируемый сигнал данных» может описывать сигнал, у которого одна или более характеристик устанавливается или изменяется так, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среда связи может включать в себя проводную среду, такую как проводная сеть или прямое проводное соединение, и беспроводную среду, такую как акустическая, радиочастотная (RF), инфракрасная и другая беспроводная среда.
[00138] На Фиг.7A и 7B показаны мобильное вычислительное устройство 700, например, мобильный телефон, смартфон, планшетный персональный компьютер, портативный компьютер и т.п., с помощью которых могут быть применены на практике примерные варианты изобретения. Например, мобильное вычислительное устройство 700 может быть использовано для реализации узлов 202, 204, 206, 208, 210, 212 и 214. На Фиг.7A показан один пример мобильного вычислительного устройства 700 для реализации примерных вариантов. В базовой конфигурации мобильное вычислительное устройство 700 является карманным компьютером, имеющим как элементы ввода, так и элементы вывода. Мобильное вычислительное устройство 700 обычно включает в себя устройство 705 отображения и одну или более кнопок 710 ввода, которые предоставляют возможность пользователю вводить информацию в мобильное вычислительное устройство 700. Устройство 705 отображения мобильного вычислительного устройства 700 может также функционировать в качестве устройства ввода (например, устройства отображения с экраном для прикосновений (сенсорным экраном)). При наличии необязательный боковой элемент 715 ввода предоставляет дополнительную возможность пользовательского ввода. Боковой элемент 715 ввода может быть вращающимся переключателем, кнопкой или любым другим типом элемента ручного ввода. В альтернативных примерных вариантах мобильное вычислительное устройство 700 может вмещаться в себя более или менее элементов ввода. Например, устройство 705 отображения может не быть сенсорным экраном в некоторых примерных вариантах. В еще одном альтернативном примерном варианте мобильное вычислительное устройство 700 является переносной телефонной системой, такой как сотовый телефон. Мобильное вычислительное устройство 700 может также включать в себя необязательную клавишную панель 735. Необязательная клавишная панель 735 может быть физической клавишной панелью или «программной» клавишной панелью, сгенерированной на устройстве отображения с сенсорным экраном. В различных примерных вариантах элементы вывода включают в себя устройство 705 отображения для демонстрации графического пользовательского интерфейса (GUI), визуальный индикатор 720 (например, светоизлучающий диод) и/или аудиопреобразователь 725 (например, громкоговоритель). В некоторых примерных вариантах мобильное вычислительное устройство 700 вмещает в себя вибрационный преобразователь для предоставления пользователю осязательной обратной связи. В еще одном примерном варианте мобильное вычислительное устройство 700 вмещает в себя порты ввода и/или вывода, такие как аудиовход (например, микрофонный разъем), аудиовыход (например, разъем для наушников) и видеовыход (например, порт HDMI) для отправки сигналов во внешнее устройство или приема сигналов от него.
[00139] На Фиг.7B показана блок-схема, изображающая конструкцию одного примерного варианта мобильного вычислительного устройства. То есть мобильное вычислительное устройство 700 может вмещать в себя систему (то есть архитектуру) 702 для реализации некоторых примерных вариантов. В одних примерных вариантах система 702 реализована в качестве «смартфона», выполненного с возможностью запуска одного или более приложений (например, браузер, электронная почта, ведение календаря, диспетчеры контактов, клиенты для обмена сообщениями, игры, и клиенты/проигрыватели медиасодержимого). В некоторых примерных вариантах система 702 выполнена в качестве вычислительного устройства, такого как интегрированные персональный цифровой секретарь (PDA) и беспроводной телефон.
[00140] Одна или более прикладных программ 766 могут быть загружены в запоминающее устройство 762 и функционировать на или совместно с операционной системой 764. Примеры прикладных программ включают в себя программы номеронабирателя, программы для электронной почты, программы для управления (PIM) персональными данными, программы обработки текста, программы для электронных таблиц, программы для просмотра Интернета, программы для обмена сообщениями и т.д. Система 702 также включает в себя область 768 энергонезависимого хранения внутри запоминающего устройства 762. Область 768 энергонезависимого хранения может быть использована для хранения долговременной информации, которая не должна быть утеряна при прекращении питания системы 702. Прикладные программы 766 могут использовать и хранить информацию в области 768 энергонезависимого хранения, такую как электронная почта или другие сообщения, используемые приложением для электронной почты и т.п. Приложение для синхронизации (не изображено) также находится в системе 702 и запрограммировано с возможностью взаимодействия с соответствующим приложением для синхронизации, находящимся на главном компьютере, для поддержания информации, хранящейся в области 768 энергонезависимого хранения, синхронизированной с соответствующей информацией, хранящейся в главном компьютере. Как должно быть понятно другие приложения могут быть загружены в запоминающее устройство 762 и функционировать на мобильном вычислительном устройстве 700, включающие в себя рабочую нагрузку 780, соотносящуюся с идентификатором 782 поколения, описанном в данном документе.
[00141] Система 702 имеет источник 770 питания, который может быть реализован в качестве одной или более батарей. Источник 770 питания может дополнительно включать в себя внешний источник энергии, такой как адаптер переменного тока или питаемый стыковочный узел, который дополняет или перезаряжает батареи.
[00142] Система 702 может включать в себя порт 778 периферийного устройства, который выполняет функцию способствования возможности соединения между системой 702 и одним или более периферийными устройствами. Передачи в и от порта 772 периферийного устройства проводятся под управлением операционной системы 764. Другими словами, передачи, принятые портом 778 периферийного устройства, могут быть распространены по прикладным программам 766 через операционную систему 764 и наоборот.
[00143] Система 702 может также включать в себя радиоусройство 772, которое выполняет функцию передачи и приема радиочастотных передач. Радиоустройство 772 содействует возможности беспроводного соединения между системой 702 и «внешним миром» через поставщика услуг связи или поставщика услуг. Передачи в и от радиоустройства 772 проводятся под управлением операционной системы 764. Другими словами, передачи, принятые радиоустройством 772, могут быть распространены по прикладным программам 766 через операционную систему 764 и наоборот.
[00144] Визуальный индикатор 720 может быть использован для предоставления визуальных уведомлений, и/или аудиоинтерфейс 774 может быть использован для воспроизведения слышимых уведомлений через аудиопреобразователь 725. В изображенном примерном варианте визуальный индикатор 720 является светоизлучающим диодом (светодиодом), а аудиопреобразователь 725 является громкоговорителем. Эти устройства могут быть непосредственно соединены с источником 770 питания так, чтобы при включении они остались задействованы в течение некоторой продолжительности, продиктованной механизмом уведомления, даже при том, что процессор 760 и другие компоненты могут быть выключены для сбережения питания от батареи. Светодиод может быть запрограммирован оставаться задействованным бесконечно, пока пользователь не предпримет действия, для указания состояния подачи питания в устройство. Аудиоинтерфейс 774 используется для предоставления звуковых сигналов пользователю и приема звуковых сигналов от пользователя. Например, в дополнение к соединению с аудиопреобразователем 725 аудиоинтерфейс 774 может также быть соединен с микрофоном для приема слышимого ввода, в частности, для содействия телефонному разговору. В соответствии с примерными вариантами настоящего изобретения микрофон может также служить в качестве звукового датчика для содействия управлению уведомлениями, как будет описано ниже. Система 702 может дополнительно включать в себя видеоинтерфейс 776, который предоставляет возможность функционировать встроенной камере 730 для записи неподвижных изображений, видеопотока и т.п.
[00145] Мобильное вычислительное устройство 700, реализующее систему 702 может иметь дополнительные функции или функциональные средства. Например, мобильное вычислительное устройство 700 может также включать в себя дополнительные устройства хранения данных (съемные и/или несъемные), такие как магнитные диски, оптические диски или лента. Такое дополнительное хранилище показано на Фиг.7B посредством области 768 энергонезависимого хранения.
[00146] Данные/информация, сгенерированные или захваченные мобильным вычислительным устройством 700 и сохраненные через систему 702, могут храниться локально на мобильном вычислительном устройстве 700, как описано выше, либо данные могут храниться на любом количестве носителей хранения информации, к которым может осуществлять доступ устройство через радиоустройство 772 или через проводное соединение между мобильным вычислительным устройством 700 и отдельным вычислительным устройством, соотносящимся с мобильным вычислительным устройством 700, например, серверным компьютером в распределенной вычислительной сети, такой как Интернет. Как должно быть понятно, к таким данным/информации можно осуществлять доступ через мобильное вычислительное устройство 700 через радиоустройство 772 или через распределенную вычислительную сеть. Схожим образом такие данные/информация могут легко переноситься между вычислительными устройствами для хранения и использования согласно хорошо известным средствам передачи и хранения данных/информации, включающим в себя электронную почту и системы совместного использования данных/информации.
[00147] На Фиг.8 показан один пример архитектуры системы для предоставления кластера, который обрабатывает распределенные рабочие нагрузки и обрабатывает сбои с одним или более клиентскими устройствами, как описано выше. Целевые данные, к которым осуществляется доступ, с которыми осуществляется взаимодействие или которые подвергаются редактированию со стороны узлов 202, 204, 206, 208, 210, 212 или 214, могут сохраняться по разным каналам связи или в хранилищах разного типа. Например, различные документы могут храниться с использованием службы 822 каталогов, веб-портала 824, службы 826 почтовых ящиков, хранилища 828 для обмена мгновенными сообщениями или странички 830 для взаимодействия через социальные сети. Узел, обрабатывающий рабочую нагрузку, например, узел 210, может использовать любую систему из этих типов или что-либо им подобное для предоставления возможности использования данных, как это описано в данном документе. Сервер 820 может предоставлять систему 216 хранения для использования узлами 208, 210, 212 и 214, функционирующими на общем вычислительном устройстве 602 и мобильном(ых) устройстве(ах) 700 через сеть 815. В качестве примера сеть 815 может содержать Интернет или любой другой тип местной или глобальной сети, и узлы 202, 204, 206, 208, 210, 212 и 214 могут быть реализованы в качестве вычислительного устройства 602, воплощенного в персональном компьютере, планшетном вычислительном устройстве и/или мобильном вычислительном устройстве 700 (например, смартфоне). Любой из этих вариантов осуществления клиентского вычислительного устройства 602 или 700 может получать содержимое из хранилища 816.
[00148] Настоящее раскрытие включает в себя систему, включающую в себя по меньшей мере один процессор; запоминающее устройство, функционально соединенное с упомянутым по меньшей мере одним процессором и содержащее команды, которые, при исполнении упомянутым по меньшей мере одним процессором, выполняют способ, содержащий этапы: соотнесения первого идентификатора поколения и идентификатора первой рабочей нагрузки с первой рабочей нагрузкой; передачи первого идентификатора поколения, идентификатора первой рабочей нагрузки и первой рабочей нагрузки в первый узел; и в течение сбоя связи с первым узлом генерирования второго идентификатора поколения, соотнесения второго идентификатора поколения с первой рабочей нагрузкой и передачи второго идентификатора поколения, идентификатора первой рабочей нагрузки и первой рабочей нагрузки во второй узел, при этом второй идентификатор поколения передает другой приоритет в отличие от первого идентификатора поколения. В примерных вариантах сбой связи содержит по меньшей мере одно из: разъединения, сбоя оборудования или перезагрузки узла. Кроме того, второй идентификатор поколения может передавать более высокий приоритет в отличие от первого идентификатора поколения. В других примерных вариантах второй идентификатор поколения может передавать более низкий приоритет в отличие от первого идентификатора поколения. В дополнительных примерных вариантах системы и способы содержат прием указания успешности от второго узла; генерирование третьего идентификатора поколения, передающего более высокий приоритет в отличие от первого идентификатора поколения; соотнесение третьего идентификатора поколения с первой рабочей нагрузкой; и передачу третьего идентификатора поколения во второй узел. Дополнительно, передача второго идентификатора поколения может содержать отправку указания того, что второй узел не должен прерывать первый узел, если определено, что первый узел все еще обрабатывает первую рабочую нагрузку. Кроме того, в примерных вариантах, каждый из первого и второго идентификаторов поколения содержит по меньшей мере два подраздела, причем каждый из упомянутых по меньшей мере двух подразделов передает приоритет. Дополнительно, в примерных вариантах, приоритет, передаваемый каждым из упомянутых по меньшей мере двух подразделов, снабжен весовым коэффициентом так, что указание приоритета одним из упомянутых по меньшей мере двух подразделов имеет преимущество перед приоритетом, указываемым другим подразделом из упомянутых по меньшей мере двух подразделов.
[00149] Среди других примерных вариантов настоящее раскрытие представляет системы и способы приема первого запроса доступа касательно целевых данных, причем целевые данные сохранены системой хранения, и первый запрос доступа соотносится с первым идентификатором поколения и идентификатором первой рабочей нагрузки; сохранения первого идентификатора поколения и идентификатора первой рабочей нагрузки в постоянном хранилище в качестве первого сохраненного идентификатора поколения и первого сохраненного идентификатора рабочей нагрузки; удовлетворения первого запроса доступа касательно целевых данных; приема второго запроса доступа касательно целевых данных, причем второй запрос доступа соотносится со вторым идентификатором поколения и идентификатором первой рабочей нагрузки; сравнения второго идентификатора поколения с первым сохраненным идентификатором поколения и идентификатора первой рабочей нагрузки с первым сохраненным идентификатором рабочей нагрузки; определения того, что второй идентификатор поколения указывает более высокий приоритет в отличие от первого сохраненного идентификатора поколения, и что идентификатор первой рабочей нагрузки совпадает с первым сохраненным идентификатором рабочей нагрузки; сохранения второго идентификатора поколения в постоянном хранилище в качестве второго сохраненного идентификатора поколения; удовлетворения второго запроса доступа касательно целевых данных; приема третьего запроса доступа касательно целевых данных, причем третий запрос доступа соотносится с первым идентификатором поколения и идентификатором первой рабочей нагрузки; определения того, что первый идентификатор поколения указывает более низкий приоритет в отличие от второго сохраненного идентификатора поколения и что идентификатор первой рабочей нагрузки совпадает с первым сохраненным идентификатором рабочей нагрузки; и отклонения третьего запроса доступа касательно целевых данных. В примерных вариантах первый запрос доступа и третий запрос доступа принимаются от первого узла, и второй запрос доступа принимается от второго узла, и отклонение третьего запроса доступа касательно целевых данных содержит предоставление указания в первый узел о том, что первая рабочая нагрузка была переназначена второму узлу. В дополнительных примерных вариантах отклонение третьего запроса доступа содержит предоставление указания того, что первый идентификатор поколения указывает более низкий приоритет в отличие от второго сохраненного идентификатора поколения. В дополнительных примерных вариантах системы и способы содержат прием четвертого запроса доступа касательно целевых данных от второго узла, причем четвертый запрос доступа соотносится с третьим идентификатором поколения и идентификатором первой рабочей нагрузки и содержит указания того, что запрос является разрешающим; определение того, что третий идентификатор поколения указывает более высокий приоритет в отличие от второго сохраненного идентификатора поколения; определение того, что система хранения может все еще осуществлять связь с первым узлом; и отклонение четвертого запроса доступа касательно целевых данных. Дополнительно, в примерных вариантах, отклонение четвертого запроса доступа содержит предоставление указания во второй узел о том, что система хранения может все еще осуществлять связь с первым узлом. В других примерных вариантах системы и способы содержат блокировку целевых данных после удовлетворения первого запроса доступа; и после удовлетворения второго запроса доступа, снятие блокировки над целевыми данными и удаление первого сохраненного идентификатора поколения из постоянного хранилища. Кроме того, в примерных вариантах, каждый из первого, второго и третьего идентификаторов поколения содержит по меньшей мере два подраздела, причем каждый из упомянутых по меньшей мере двух подразделов передает приоритет. Дополнительно, приоритет, передаваемый каждым из упомянутых по меньшей мере двух подразделов, может быть снабжен весовым коэффициентом так, что указание приоритета одним из упомянутых по меньшей мере двух подразделов имеет преимущество перед приоритетом, указываемым другим подразделом из упомянутых по меньшей мере двух подразделов.
[00150] Дополнительно описания в данном документе раскрывают системы и способы отправки первого запроса доступа касательно целевых данных в систему хранения, причем первый запрос доступа соотносится с первым идентификатором поколения и идентификатор первой рабочей нагрузки соотносится с выполнением первой рабочей нагрузки на первом узле; приема первого ответа на доступ, предоставляющего доступ к целевым данным; после приема первого ответа на доступ, отправки указания во второй узел о том, что доступ к целевым данным был предоставлен; приема второго идентификатора поколения для использования в последующих запросах доступа; отправки второго запроса доступа касательно целевых данных в систему хранения, причем второй запрос доступа соотносится со вторым идентификатором поколения и идентификатором первой рабочей нагрузки; и приема второго ответа на доступ, предоставляющего доступ к целевым данным. В дополнительных примерных вариантах системы и способы содержат отправку третьего запроса доступа касательно целевых данных в систему хранения, причем третий запрос доступа соотносится со вторым идентификатором поколения и идентификатором первой рабочей нагрузки; прием третьего ответа на доступ, отклоняющего доступ к целевым данным и содержащий указание того, что доступ к целевым данным для первой рабочей нагрузки был переназначен третьему узлу; и прекращение исполнения первой рабочей нагрузки на первом узле в результате принятого третьего ответа на доступ. Дополнительно, в примерных вариантах, первый запрос доступа содержит указание того, что первый запрос доступа является разрешающим. В других примерных вариантах третий ответ на доступ принимается после сбоя связи между первым узлом и вторым узлом.
[00151] Повсюду в данном описании делается ссылка на «один примерный вариант» или «примерный вариант», что означает, что конкретны описанный признак, структура или характеристика содержатся по меньшей мере в одном примерном варианте. Таким образом, использование таких фраз может ссылаться более чем только на один примерный вариант. Кроме того, описанные признаки, структуры или характеристики могут быть объединены любым подходящим образом в одном или более примерных вариантах.
[00152] Специалисту может быть понятно, однако, что такие примерные варианты могут быть применены на практике без одной или более из конкретных подробностей, либо с другими способами, ресурсами, материалами и т.д. В других примерных вариантах хорошо известные структуры, ресурсы или действия не были изображены или описаны подробно всего лишь, чтобы не затруднять восприятие аспектов данных примерных вариантов.
[00153] В то время как были изображены и описаны примерные варианты и варианты применения, следует понимать, что такие примерные варианты не ограничены точной конфигурацией и ресурсами, описанными выше. Различные модификации, изменения и разнообразия, очевидные для специалиста в уровне техники, могут быть выполнены с размещением, функционированием и подробностями способов и систем, раскрытых в данном документе, без отступления от объема заявляемых примерных вариантов.