BR112017001850B1 - Sistema e método implementado por computador de redesignação de carga de trabalho distribuída após falha de comunicação - Google Patents
Sistema e método implementado por computador de redesignação de carga de trabalho distribuída após falha de comunicação Download PDFInfo
- Publication number
- BR112017001850B1 BR112017001850B1 BR112017001850-0A BR112017001850A BR112017001850B1 BR 112017001850 B1 BR112017001850 B1 BR 112017001850B1 BR 112017001850 A BR112017001850 A BR 112017001850A BR 112017001850 B1 BR112017001850 B1 BR 112017001850B1
- Authority
- BR
- Brazil
- Prior art keywords
- node
- workload
- identifier
- generation identifier
- access request
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000004891 communication Methods 0.000 title claims description 34
- 238000003860 storage Methods 0.000 claims abstract description 152
- 238000012545 processing Methods 0.000 claims abstract description 57
- 230000002085 persistent effect Effects 0.000 claims description 22
- 230000015654 memory Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 15
- 230000008569 process Effects 0.000 description 12
- 230000005012 migration Effects 0.000 description 6
- 238000013508 migration Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2046—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/61—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/40—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1034—Reaction to server failures by a load balancer
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Small-Scale Networks (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
Abstract
A presente invenção refere-se a um identificador de geração que é empregado com vários sistemas e métodos de modo a identificar situações onde uma carga de trabalho foi reatribuída para um novo nó e onde uma carga de trabalho está ainda sendo processada por um antigo nó durante uma falha entre nós. Um nó mestre pode atribuir uma carga de trabalho para um nó trabalhador. O nó trabalhador envia uma solicitação para acessar os dados alvo. A solicitação pode estar associada com um identificador de geração e um identificador de carga de trabalho que identifica o nó e a carga de trabalho. Em algum ponto, uma falha ocorre entre o nó mestre e o nó trabalhador. O nó mestre reatribui a carga de trabalho para outro nó trabalhador. O novo nó trabalhador acessa os dados alvo com um diferente identificador de geração, indicando para o sistema de armazenamento que a carga de trabalho foi reatribuída. O antigo nó trabalhador recebe uma indicação do sistema de armazenamento que a carga de trabalho foi reatribuída e para o processamento da carga de trabalho.
Description
[0001] Os ambientes agrupados, por exemplo, os ambientes onde as cargas de trabalho estão distribuídas através de múltiplas máquinas, são comumente utilizados para prover transferência automática por falha e processamento de alta disponibilidade de cargas de trabalho distribuídas. Os ambientes agrupados permitem que as cargas de trabalho sejam distribuídas para um ou mais nós que fazem parte do ambiente. Um ambiente agrupado pode atuar como um cliente, um servidor, ou ambos. Em um grupamento, uma carga de trabalho pode ser distribuída por nós mestres para nós trabalhadores que compõem o grupamento. Os nós trabalhadores podem emitir solicitações de acesso para dados-alvo que estão armazenados por um sistema de armazenamento. Se um erro ocorrer entre o nó mestre e o nó trabalhador, o nó trabalhador pode continuar a processar a carga de trabalho sem o conhecimento do nó mestre. Ainda, o nó mestre pode reatribuir a carga de trabalho para um diferente nó sem o conhecimento do nó trabalhador.
[0002] É com relação a estas e outras considerações que exemplos foram feitos. Também, apesar de problemas relativamente específicos terem sido discutidos, deve ser compreendido que os exemplos não devem ser limitados a resolver os problemas específicos identificados nos fundamentos.
[0003] Este sumário está provido para introduzir uma seleção de conceitos em uma forma simplificada que estão adicionalmente abaixo descritos na seção de Descrição Detalhada. Este sumário não pretende identificar características chave ou características essenciais do assunto reivindicado, nem pretende ser utilizado como um auxílio na determinação do escopo do assunto reivindicado.
[0004] Os sistemas e métodos aqui descritos proveem mecanismos para identificar situações onde uma carga de trabalho foi reatribuída para um novo nó e onde uma carga de trabalho está ainda sendo processada por um antigo nó. De acordo com alguns aspectos, um nó mestre atribui uma carga de trabalho para um nó trabalhador. O nó mestre pode comunicar um identificador de geração e um identificador de carga de trabalho com a carga de trabalho. Quando processando a carga de trabalho, o nó trabalhador envia uma solicitação de acesso para um nó em um grupamento de armazenamento para acessar dados-alvo. Em exemplos, o identificador de geração e o identificador de carga de trabalho são utilizados para identificar o nó e/ou carga de trabalho relativa solicitando um recurso. O identificador de geração e/ou identificador de carga de trabalho podem ser providos com a solicitação. Quando o nó acessa os dados-alvo, o identificador de geração e/ou identificador de carga de trabalho são armazenados em armazenamento persistente e associados com os dados-alvo solicitados.
[0005] Antes do nó completar a execução da carga de trabalho, uma falha pode ocorrer que faz com que o nó mestre perca a comunicação com o nó trabalhador. Por exemplo, um nó pode reiniciar, uma falha de hardware pode ocorrer, uma conexão de comunicações pode falhar, etc. Em tais circunstâncias, o nó mestre não está ciente do status do nó trabalhador. No entanto, o nó trabalhador pode ainda ter acesso ao sistema de armazenamento e pode continuar processando a carga de trabalho e emitindo solicitações de acesso de arquivo. Durante a falha, o nó mestre pode reatribuir a carga de trabalho para um novo nó trabalhador. Em some exemplos, o nó mestre pode também comunicar um diferente identificador de geração juntamente com o identificador de carga de trabalho e a carga de trabalho. Quando o novo nó trabalhador começa o processamento da carga de trabalho, este envia uma solicitação de acesso para um nó no grupamento de armazenamento para acessar dados-alvo. Em alguns exemplos, o novo identificador de geração e/ou identificador de carga de trabalho podem ser providos com a solicitação. O novo identificador de geração pode indicar uma prioridade mais alta do que o antigo identificador de geração. Quando o novo nó acessa os dados-alvo, o novo identificador de geração é armazenado no armazenamento persistente e associado com os dados-alvo solicitados. O identificador de geração permite que o sistema de armazenamento gerencie a solicitação para determinar que a carga de trabalho foi reatribuída para um novo nó. Fazendo isto permite que o sistema de armazenamento indique para o antigo nó que a carga de trabalho foi reatribuída. Como um resultado, o antigo nó pode parar o processamento da carga de trabalho. Ainda, o antigo nó é assegurado que a carga de trabalho não teria sido reatribuída se este não recebesse uma indicação de reatribuição do sistema de armazenamento.
[0006] Em outros exemplos, o novo identificador de geração pode indicar uma prioridade mais baixa do que o antigo identificador de geração, ou o novo nó pode emitir uma solicitação de acesso "permissiva". Em ambos os casos, o novo nó não inicia o processamento da carga de trabalho enquanto o antigo nó ainda está still processando a carga de trabalho. Ao invés, o novo nó pode receber uma indicação que o antigo nó está ainda trabalhando e, como um resultado, o novo nó pode periodicamente emitir solicitações de acesso subsequentes para finalmente obter acesso uma vez que o antigo nó terminou o processamento. Fazendo isto permite que o antigo nó continue o processamento de uma carga de trabalho ao invés de interromper uma operação e reiniciar a carga de trabalho no novo nó.
[0007] Exemplos podem ser implementados como um processo de computador, um sistema de computação, ou como um artigo de manufatura tal como um produto de programa de computador ou meio legível por computador. O produto de programa de computador pode ser um meio de armazenamento de computador legível por um sistema de computador e codificando um programa de computador de instruções para executar um processo de computador.
[0008] Exemplos não limitantes e não exaustivos estão descritos com referência às seguintes figuras.
[0009] Figura 1 ilustra um sistema que pode ser utilizado para implementar exemplos aqui descritos.
[00010] Figura 2 ilustra um sistema que pode ser utilizado para implementar exemplos aqui descritos.
[00011] Figura 3 é um fluxo operacional para um nó que comunica com um sistema de armazenamento.
[00012] Figura 4 é um fluxo operacional para um nó que atribui cargas de trabalho para outros nós.
[00013] Figura 5 é um fluxo operacional para um sistema de armazenamento que comunica com um nó.
[00014] Figura 6 é um diagrama de blocos que ilustra um exemplo de um dispositivo de computação com o qual aspectos da invenção podem ser praticados.
[00015] Figuras 7A e 7B são diagramas de blocos simplificados de um dispositivo de computação móvel com o qual aspectos da presente invenção podem ser praticados.
[00016] Figura 8 é um diagrama de blocos simplificado de um sistema de computação distribuído, no qual aspectos da presente invenção podem ser praticados.
[00017] Vários aspectos estão abaixo mais totalmente descritos com referência aos desenhos acompanhantes os quais formam uma sua parte, e os quais mostram aspectos exemplares específicos. No entanto, exemplos podem ser implementados em muitas diferentes formas e não devem ser considerados como limitados aos exemplos aqui apresentados. Consequentemente, os exemplos podem tomar a forma de uma implementação em hardware, ou como inteiramente em uma implementação de software, ou uma implementação que combina aspectos de software e hardware. A descrição detalhada seguinte, portanto, não deve ser tomada em um sentido limitante.
[00018] Exemplos da presente descrição estão relacionados com prover um processamento de alta disponibilidade de cargas de trabalho distribuídas permitindo que um sistema de armazenamento notifique um nó quando a sua carga de trabalho foi reatribuída. Em exemplos, um sistema de armazenamento pode ser um dispositivo local, um dispositivo de armazenamento anexado a uma rede, um servidor de arquivo distribuído, ou qualquer outro tipo de sistema de armazenamento em um ambiente de computação. Os nós podem fazer parte de um grupamento no qual os nós "trabalhadores" processam cargas de trabalho que são atribuídas por nós "mestres". Em alguns exemplos, um grupamento pode ser compreendido de múltiplas fileiras, em que os nós trabalhadores de fileira mais baixa recebem atribuições de carga de trabalho de nós mestres de fileira mais alta. Em outros exemplos, um grupamento pode ter somente uma fileira, na qual cada nó pode se comportar como um nó trabalhador, um nó mestre, ou ambos.
[00019] Em um exemplo, um nó trabalhador pode ser atribuído uma carga de trabalho de um nó mestre. O nó trabalhador por sua vez pode atuar como um nó mestre para nós trabalhadores subordinados e, como um resultado, pode ainda distribuir a carga de trabalho para um de seus nós trabalhadores subordinados. Os nós podem estar conectados através de uma rede. Alguém versado na técnica apreciará que os sistemas e métodos aqui descritos podem ser empregados em qualquer outro tipo de ambiente, tal como, mas não limitado a uma rede virtual.
[00020] Os dados podem ser compartilhados entre uma pluralidade de solicitantes. Como aqui utilizado, um solicitante pode compreender qualquer nó, aplicação, carga de trabalho, encadeamento, ou outro processo ou entidade que solicita acesso a dados-alvo. Apesar de exemplos aqui descritos poderem ser descritos com relação a uma "aplicação" ou "cliente" ou "nó" ou "carga de trabalho" atuando como um solicitante, a presente descrição não está assim limitada. Quando o solicitante acessa dados-alvo, os dados-alvo podem ser travados, por meio disto proibindo outros solicitantes de acessá-los até que a trava seja liberada. O travamento dos dados-alvo pode ser empregado para proteger contra um conflito - isto é, para proteger contra uma modificação dos dados-alvo pode outro solicitante antes do solicitante que acessa ter executado as suas operações. Tipicamente, quando uma trava é concedida, a trava pode ser adquirida por outro solicitante em alguns exemplos. Por exemplo, o sistema de armazenamento pode manter a trava utilizando um identificador de carga de trabalho apresentado, ou referido, pelo solicitante em uma solicitação de acesso.
[00021] Em alguns casos, quando uma falha ocorre afetando uma comunicação de nó mestre com um nó trabalhador, o nó mestre pode não tornar-se ciente do status do nó trabalhador. Por exemplo, a falha pode ser o resultado de um problema de comunicação entre o nó mestre e o nó trabalhador, ou o resultado de reiniciação do nó trabalhador. Como um resultado, o nó trabalhador pode estar executando normalmente e está, portanto, ainda processando a carga de trabalho, ou o nó trabalhador pode ter experimentado uma falha e a carga de trabalho não está mais sendo processada. Ainda, o nó trabalhador pode ainda ter acesso a informações de arquivo armazenadas por um sistema de armazenamento. Por exemplo, o sistema de armazenamento pode ser acessível através de um diferente percurso de rede do que o nó mestre.
[00022] Devido à falha, o nó mestre pode reatribuir a carga de trabalho para outro nó trabalhador. Como um resultado, o novo nó trabalhador pode solicitar acesso a dados que estão ou estavam previamente travados pelo antigo nó trabalhador. Em alguns exemplos, o sistema de armazenamento pode determinar que o identificador de carga de trabalho associado com a solicitação de acesso do novo nó corresponde à trava colocada nos dados-alvo pelo antigo nó. O sistema de armazenamento então rompe a trava antiga e coloca uma nova trava nos dados-alvo.
[00023] No entanto, se o antigo nó estiver ainda processando a carga de trabalho, uma solicitação de acesso do antigo nó para os dados-alvo resultará no mesmo comportamento acima descrito. O sistema de armazenamento determinará que a solicitação de acesso do nó antigo está associada com o identificador de carga de trabalho, romperá a trava do novo nó, e colocará outra trava nos dados-alvo para o antigo nó. Como um resultado, os dois nós podem continuar a readquirir uma trava para os mesmos dados-alvo, sem consciência da presença do outro nó. Isto pode negativamente impactar o desempenho do grupamento. Por exemplo, isto pode resultar em um processamento retardo de cargas de trabalho ou interrupções que requerem um processamento de carga de trabalho para reiniciar ao invés de permitir que o antigo nó termine o processamento, por exemplo, interrompendo uma carga de trabalho de codificação de vídeo o que então deve reiniciar o processamento de codificação. Os sistemas e métodos aqui descritos proveem mecanismos para identificar situações onde uma carga de trabalho foi reatribuída para um novo nó e onde uma carga de trabalho está ainda sendo processada por um antigo nó, por meio disto mitigando o impacto sobre o processamento de carga de trabalho após uma falha.
[00024] A Figura 1 ilustra um sistema 100 pode ser utilizado para implementar alguns exemplos. Sistema 100 inclui os nós 102, 104, e 106, assim como o sistema de armazenamento 108. No exemplo ilustrado, o nó 102 atua como um nó mestre para os nós 104 e 106. Os nós 104 e 106 atuam como nós trabalhadores e processam as cargas de trabalho atribuídas a estes pelo nó 102. O sistema de armazenamento 108 armazena informações que são acessadas pelos nós 104 e 106. Apesar de que na Figura 1 somente os nós 104 e 106 estão mostrados comunicando com o sistema de armazenamento 108, em outros exemplos podem existir mais do que dois nós que atuam como nós trabalhadores e acessam informações do sistema de armazenamento 108. Além disso, apesar de que na Figura 1 somente o nó 102 está mostrado como atuando como um nó mestre em relação aos nós 104 e 106, em outros exemplos podem existir mais do que um nó mestre que atribui cargas de trabalho para os nós trabalhadores.
[00025] De acordo com um exemplo, os nós 102, 104, e 106 são utilizados para prover um processamento de alta disponibilidade de cargas de trabalho distribuídas. Isto é feito utilizando os componentes sobre os nós 102, 104, e 106 e o sistema de armazenamento 108 para dividir as cargas de trabalho e redistribuir o trabalho entre vários nós no caso de uma falha entre o nó mestre 102 e os nós trabalhadores 104 e 106. Como abaixo descrito em maiores detalhes, as notificações de reatribuição providas para um nó quando a sua carga de trabalho é reatribuída permite que o grupamento de nós provenha uma manipulação de alta disponibilidade de cargas de trabalho distribuídas. Em exemplos, os nós 104 e 106 podem comunicar com o sistema de armazenamento 108 utilizando o protocolo de Bloco de Mensagem de Servidor (SMB) 2.0/3.0.
[00026] Para ilustrar um exemplo, o nó 102 pode atribuir uma primeira carga de trabalho para o nó 106. A primeira carga de trabalho pode estar associada com um primeiro identificador de geração e/ou um primeiro identificador de carga de trabalho, o qual pode ser comunicado para o nó 106 juntamente com a primeira carga de trabalho. O nó 106 começa o processamento da primeira carga de trabalho, enviando solicitações de acesso de arquivo para dados-alvo armazenados por um sistema de armazenamento 108 conforme necessário. As solicitações de acesso de arquivo podem incluir ou referir a um identificador de geração e/ou um identificador de carga de trabalho, tal como o primeiro identificador de geração e o primeiro identificador de carga de trabalho.
[00027] O sistema de armazenamento 108 recebe as solicitações de acesso para dados-alvo. Em alguns exemplos, o sistema de armazenamento 108 pode determinar se os dados-alvo estão travados e, portanto, associados com um diferente identificador de geração e/ou identificador de carga de trabalho. Se os dados-alvo estiverem travados, o sistema de armazenamento 108 pode negar a solicitação de acesso de arquivo, pode romper o travamento, ou pode tomar outra ação dependendo do protocolo sendo empregado.
[00028] Quando determinando que a solicitação deve ser concedida, o identificador de geração e/ou identificador de carga de trabalho pode ser armazenado pelo sistema de armazenamento 108 no armazenamento persistente. Quando o identificador de geração e/ou identificador de carga de trabalho estão armazenados no armazenamento persistente, estes podem ser aqui referidos como um identificador de geração armazenado e um identificador de carga de trabalho armazenado. Em alguns exemplos, os dados-alvo podem ser travados antes de, ou após, conceder a solicitação de acesso. Ainda, a trava pode ser configurada para ser liberada (por meio disto permitindo que outros nós tenham acesso aos dados-alvo) quando todas as operações na solicitação são completadas. A trava pode expirar após um período de tempo especificado ou quando o mais curto do período de tempo especificado e o tempo no qual todas as operações na solicitação são completadas. Em alguns outros exemplos, a trava pode prover o acesso exclusivo de nó aos dados-alvo até que o cliente libere a trava ou até que um evento ocorra rompendo a trava. Por exemplo, em conformidade com o protocolo SMB, um OpLock exclusivo do sistema de armazenamento 108 pode ser provido para o nó 106. O nó 106 pode assumir que este é o único nó com acesso aos dados-alvo, e o nó 106 pode colocar em cache todos os dados-alvo localmente, assim como colocar em cache todas as mudanças para os dados-alvo antes de consignar as mudanças para o sistema de armazenamento 108. Se outro nó/carga de trabalho tentar abrir os mesmos dados-alvo, o sistema de armazenamento 108 envia uma mensagem para o nó 106 (denominada uma ruptura ou revocação), a qual invalida o OpLock exclusivo previamente dado ao nó 106. O nó 106 então esvazia todas as mudanças para os dados-alvo e consigna- os para o sistema de armazenamento 108.
[00029] Em algum ponto, o nó 102 pode experimentar uma falha de comunicação com o nó 106. A falha pode resultar, em alguns exemplos, de uma desconexão, uma falha de hardware, ou uma reiniciação, etc. Como um resultado da falha, o nó 102 reatribui a primeira carga de trabalho para o nó 104 gerando um segundo identificador de geração. O segundo identificador de geração, o primeiro identificador de carga de trabalho, e a primeira carga de trabalho são comunicados para o nó 104. Em alguns exemplos, o nó 102 pode aguardar uma quantidade de tempo predeterminada antes de reatribuir a primeira carga de trabalho para o nó 104.
[00030] O nó 104 começa o processamento da primeira carga de trabalho, enviando solicitações de acesso de arquivo para dados-alvo armazenados pelo sistema de armazenamento 108 conforme necessário. Uma solicitação de acesso de arquivo pode incluir ou referir a um identificador de geração e/ou um identificador de carga de trabalho, tal como o segundo identificador de geração e o primeiro identificador de carga de trabalho.
[00031] O sistema de armazenamento 108 recebe as solicitações de acesso de arquivo. Se os dados-alvo estiverem travados (por exemplo, pelo nó 106 utilizando o mesmo identificador de carga de trabalho), o sistema de armazenamento 108 determina se o segundo identificador de geração denota uma prioridade mais alta do que o identificador de geração armazenado. Se o segundo identificador de geração indicar uma prioridade mais alta do que o identificador de geração armazenado, o sistema de armazenamento 108 rompe a trava colocada sobre os dados-alvo pelo nó 106, trava os dados-alvo para o nó 104, e concede a solicitação de acesso. Se o segundo identificador de geração não indicar uma prioridade mais alta, o sistema de armazenamento 108 pode indicar para o nó 104 que os dados-alvo estão travados. Ainda, a indicação pode também informar o nó 104 que os dados-alvo estão travados pelo nó 106. Se o segundo identificador de geração indicar uma prioridade mais alta do que o identificador de geração armazenado, o sistema de armazenamento 108 recoloca o identificador de geração armazenado com o segundo identificador de geração.
[00032] Em alguns exemplos, as solicitações de acesso emitidas pelo nó 104 podem ser permissivas, significando que ao invés de esperar o sistema de armazenamento 108 romper uma trava de prioridade mais baixa sobre os dados-alvo, o nó 104 indica que uma solicitação de acesso de prioridade mais alta não deve ser concedida enquanto os dados-alvo estão travados ou em uso. Por exemplo, ao invés de romper a trava do nó 106 sobre os dados-alvo, o sistema de armazenamento 108 nega a solicitação de acesso permissiva do nó 104 e ao invés provê uma notificação que o nó 106 está ainda processando a primeira carga de trabalho. Apesar do nó 106 ser incapaz de comunicar com o nó 102, o nó 106 continua o processamento da carga de trabalho enquanto o nó 106 for capaz de comunicar com o sistema de armazenamento 108. Como um resultado, a execução da carga de trabalho não é interrompida pelo nó 104. O nó 104 pode então periodicamente enviar solicitações de acesso permissivas subsequentes para o sistema de armazenamento 108 para obter acesso aos dados-alvo uma vez que nó 106 terminou. O primeiro identificador de geração pode ser retido pelo sistema de armazenamento 108 como o identificador de geração armazenado até que uma solicitação de acesso de arquivo de prioridade mais alta do nó 104 seja concedida, após o que o segundo identificador de geração pode ser armazenado como o identificador de geração armazenado.
[00033] Em outros exemplos, o segundo identificador de geração gerado pelo nó 102 pode indicar uma prioridade mais baixa do que o primeiro identificador de geração. Como um resultado, as solicitações de acesso de arquivo enviadas pelo nó 104 são negadas enquanto os dados-alvo permanecem em utilização pelo nó 106. Se o nó 106 estiver processamento a carga de trabalho e ainda tiver acesso ao sistema de armazenamento 108, o identificador de geração de prioridade mais baixa permite que o nó 106 continue processando a carga de trabalho sem ser interrompido pelo nó 104. O nó 104 pode continuar enviando solicitações de acesso periódicas para o sistema de armazenamento 108. Quando finalmente obtendo acesso aos dados-alvo, o nó 104 pode indicar o seu sucesso para o nó 102. O nó 102 então gera um terceiro identificador de geração qual indica uma prioridade mais alta do que o primeiro identificador de geração e comunica o terceiro identificador de geração para o nó 104. O nó 104 pode então utilizar o terceiro identificador de geração ao invés do segundo identificador de geração em subsequentes solicitações de acesso de arquivo. Após o nó 104 acessar com sucesso dos dadosalvo utilizando o terceiro identificador de geração, o sistema de armazenamento 108 pode reter o terceiro identificador de geração como o identificador de geração armazenado.
[00034] Apesar da falha de comunicação entre os nós 102 e 106, o nó 106 pode continuar o processamento da primeira carga de trabalho. Após a primeira carga de trabalho ter sido reatribuída para o nó 104 e ao nó 104 foi concedido acesso aos dados-alvo pelo sistema de armazenamento 108, o nó 106 pode fazer uma solicitação de acesso de arquivo para os dados-alvo. A solicitação de acesso de arquivo pode incluir ou referir ao primeiro identificador de geração. Quando recebendo a solicitação de acesso de arquivo, o sistema de armazenamento 108 avalia o identificador de geração associado com a solicitação de acesso de arquivo. O sistema de armazenamento 108 determina que o primeiro identificador de geração associado com a solicitação de acesso de arquivo indica uma prioridade mais baixa do que o identificador de geração armazenado. Como um resultado, o sistema de armazenamento 108 nega a solicitação de acesso de arquivo e indica para o nó 106 que a sua carga de trabalho foi reatribuída para outro nó. Em alguns exemplos, a indicação pode informar que o nó 106 que a carga de trabalho foi reatribuída para o nó 104. O nó 106 pode então parar o processamento da primeira carga de trabalho.
[00035] Em outros exemplos, o nó 104, enquanto atuando como um nó trabalhador, pode também atuar como um nó mestre. O nó 104 pode atribuir uma segunda carga de trabalho para outro nó dentro de sua fileira, por exemplo, o nó 106. A segunda carga de trabalho pode estar associada com um segundo identificador de carga de trabalho e um quarto identificador de geração. Neste exemplo, o quarto identificador de geração, o segundo identificador de carga de trabalho, e segunda carga de trabalho são comunicados para o nó 106. O nó 106 começa o processamento da segunda carga de trabalho, enviando solicitações de acesso de arquivo para dados-alvo armazenados pelo sistema de armazenamento 108 conforme necessário. Uma solicitação de acesso de arquivo pode incluir ou referir a um identificador de geração e/ou um identificador de carga de trabalho, tal como o quarto identificador de geração e o segundo identificador de carga de trabalho. Como acima discutido, o sistema de armazenamento 108 armazena o quarto identificador de geração no armazenamento persistente e concede as solicitações de acesso.
[00036] Em algum ponto, o nó 104 pode experimentar uma falha de comunicação com o nó 106. Como um resultado da falha, o nó 104 reatribui a segunda carga de trabalho para um novo nó (não ilustrado) dentro de sua fileira gerando um quinto identificador de geração. O quinto identificador de geração, o segundo identificador de carga de trabalho, e a segunda carga de trabalho são então comunicados para o novo nó. O novo nó começa o processamento para a segunda carga de trabalho.
[00037] Como acima discutido, a reatribuição pode ser permissiva, ou provendo um quinto identificador de geração de prioridade mais baixa ou emitindo solicitações de acesso de arquivo juntamente com uma indicação que solicita um comportamento permissivo. Em ambos os exemplos, o nó 106 é capaz de terminar o processamento da segunda carga de trabalho no caso em que este está operando normalmente, mas é incapaz de comunicar com o nó 104. Portanto, se a reatribuição for permissiva, o novo nó pode somente obter acesso aos dados-alvo se o nó 106 não estiver acessando os dados-alvo, por exemplo, se o nó 106 terminou o processamento, perdeu conectividade com o sistema de armazenamento 108, ou experimentou uma falha além da falha de comunicação com o nó 104. No caso em que o quinto identificador de geração não indicou uma prioridade mais alta do que o identificador de geração armazenado, uma vez que o novo nó obtém acesso aos dados-alvo, o novo nó pode receber um sexto identificador de geração de prioridade mais alta do nó 104. O identificador de geração de prioridade mais alta pode então ser armazenado pelo sistema de armazenamento 108.
[00038] Apesar da falha de comunicação entre os nós 104 e 106, o nó 106 pode continuar o processamento da segunda carga de trabalho. Após a segunda carga de trabalho ter sido reatribuída para o novo nó e o novo nó foi concedido acesso para os dados-alvo pelo sistema de armazenamento 108, o nó 106 pode fazer uma solicitação de acesso de arquivo para os dados-alvo. A solicitação de acesso de arquivo pode incluir ou referir ao quarto identificador de geração. Quando recebendo a solicitação de acesso de arquivo, o sistema de armazenamento 108 avalia o identificador de geração associado com a solicitação de acesso de arquivo. O sistema de armazenamento 108 determina que o quarto identificador de geração associado com a solicitação de acesso de arquivo indica uma prioridade mais baixa do que o identificador de geração armazenado. Como um resultado, o sistema de armazenamento 108 nega a solicitação de acesso de arquivo e indica para o nó 106 que a sua carga de trabalho foi reatribuída para outro nó. Em alguns exemplos, a indicação pode informar o nó 106 que a carga de trabalho foi reatribuída para o novo nó. O nó 106 pode então parar o processamento da segunda carga de trabalho.
[00039] Em exemplos adicionais, o nó 102 pode migrar uma terceira carga de trabalho que está sendo processada pelo nó 106 do nó 106 para o nó 104. A terceira carga de trabalho pode estar associada com um terceiro identificador de carga de trabalho. Ainda, a terceira carga de trabalho já pode estar associada com um sétimo identificador de geração que é utilizado pelo nó 106 quando emitindo solicitações de acesso de arquivo para o sistema de armazenamento 108. O nó 102 gera um oitavo identificador de geração. O oitavo identificador de geração pode indicar uma prioridade mais alta do que o sétimo identificador de geração. O oitavo identificador de geração, o terceiro identificador de carga de trabalho, e a terceira carga de trabalho são então comunicados para o nó 104. Em algum ponto durante a operação de migração, uma falha pode ocorrer entre os nós 102 e 104. Como um resultado, o nó 102 não está ciente se a operação de migração completou com sucesso e se o nó 104 iniciou o processamento da terceira carga de trabalho. O nó 102 é, portanto, incapaz de determinar qual ação o nó 106 deve tomar, por exemplo, se este deve parar ou continuar o processamento da terceira carga de trabalho.
[00040] No entanto, se a operação de migração completou com sucesso, o nó 104 começará o processamento da terceira carga de trabalho, emitindo solicitações de acesso de arquivo para o sistema de armazenamento 108 conforme necessário. Como um resultado, o sistema de armazenamento 108 armazena o oitavo identificador de geração associado e concede as solicitações de acesso de arquivo como acima descrito. Quando recebendo uma subsequente solicitação de acesso de arquivo do nó 106, o sistema de armazenamento 108 determina que o sétimo identificador de geração associado indica uma prioridade mais baixa do que o identificador de geração armazenado e provê uma indicação que a carga de trabalho foi reatribuída. A indicação pode informar o nó 106 que a carga de trabalho foi migrada para o nó 104.
[00041] Se a operação de migração não completou com sucesso, o nó 106 continua processamento da terceira carga de trabalho. O identificador de geração permite o grupamento assegurar que a terceira carga de trabalho é continuamente processada por um nó dentro do grupamento, independentemente se a operação de migração falhar. Ainda, este provê um canal de notificação alternativo através do sistema de armazenamento 108 no caso de uma migração com sucesso onde o nó 102 é incapaz de notificar o nó 106 que a carga de trabalho foi migrada para um diferente nó.
[00042] A descrição acima é meramente um exemplo de como o exemplo mostrado na Figura 1 pode operar. Como abaixo descrito em maiores detalhes, os exemplos podem envolver diferente etapas ou operações. Estas podem ser implementadas utilizando qualquer componente ou módulo de software ou hardware apropriado.
[00043] A Figura 2 ilustra um sistema 200 que pode ser utilizado para implementar alguns exemplos. O sistema 200 inclui os nós 202, 204, 206, 208, 210, 212, e 214. O Nó 202 atua como um nó mestre para os nós 204 e 206. Os nós 204 e 206 podem atuar como nós trabalhadores e processar cargas de trabalho atribuídas a estes pelo nó 202. Ainda, o nó 204 atua como um nó mestre para os nós 208 e 210, e o nó 206 atua como um nó mestre para 212 e 214. Os nós 204 e 206 podem atuar tanto como nós mestres quanto nós trabalhadores. Os nós 208 e 210 atuam como nós trabalhadores e processam cargas de trabalho atribuídas a estes pelo nó 204. Similarmente, os nós 212 e 214 atuam como nós trabalhadores e processam cargas de trabalho atribuídas a estes pelo nó 206. O sistema de armazenamento 216 armazena informações que são acessadas pelos nós 208, 210, 212, e 214 através da rede 230. Apesar de que na Figura 2 somente os nós 208, 210, 212, e 214 estão mostrados comunicando o sistema de armazenamento 216, em outros exemplos podem existir mais (ou menos) do que quatro nós que acessam as informações de arquivo armazenadas pelo sistema de armazenamento 216, incluindo os nós 202, 204, e 206.
[00044] Como mostrado na Figura 2, o sistema de armazenamento 216 inclui os nós 216A e 216B, os quais proveem tanto alta disponibilidade quanto redundância para servidor de arquivo escalável 218. Em exemplos, o sistema de armazenamento 216 provê um servidor de arquivo escalável 218 que é acessado pelos nós 208, 210, 212, e 214. O servidor de arquivo escalável 218 pode compreender múltiplos servidores agrupados que podem cooperar para prover informações de arquivo do sistema de arquivo distribuído 220. O sistema de arquivo distribuído 220 compreende informações de arquivo que são armazenadas no armazenamento físico 228. O sistema de arquivo 226 do armazenamento físico 228 está montado no nó 216B. Em alguns exemplos, o formato do sistema de arquivo 226 pode ser Sistema de Arquivo de Nova Tecnologia (NTFS) ou Sistema de Arquivo Resiliente (ReFS). O nó 216B atua como o coordenador do sistema de arquivo distribuído 220 e transfere operações de arquivo, por exemplo, operações de leitura, escrita, e metadados, do sistema de arquivo distribuído 220 para o sistema de arquivo 226. Em alguns exemplos, o nó 216A pode executar operações de arquivo diretamente no armazenamento físico 228, apesar de que o nó 216B pode ter um exclusivo acesso de escrita de modo que as solicitações de escrita sejam transferidas pelo nó 216A para o nó 216B ao invés de serem diretamente enviadas para o armazenamento físico 228. Além disso, um filtro de identificador de geração 222 associa as solicitações de acesso com os identificadores de geração que são então armazenados no armazenamento persistente 224. Por exemplo, o armazenamento persistente 224 pode compreender um banco de dados de filtro de identificador de geração utilizado por um filtro de identificador de geração anexado a um sistema de arquivo NTFS. Apesar de dois nós serem mostrados na Figura 2, em outros exemplos o sistema de armazenamento 216 pode incluir mais do que dois nós, ou menos do que dois nós.
[00045] A Figura 2 ilustra três "fileiras" de nós e múltiplos subgrupos. O nó 202 compreende uma fileira de mestre global. Os nós 204 e 206 compreendem fileira de mestre local, e os nós 208, 210, 212, e 214 compreendem uma fileira de trabalhador local. Os nós na fileira de mestre global podem distribuir trabalho para os nós na fileira de mestre local. Os nós na fileira de mestre local podem distribuir trabalho para os nós na fileira de trabalhador local. Ainda, os nós 204, 208, e 210 compreende um subgrupo, enquanto que os nós 206, 212, e 214 pode compreender outro subgrupo. Como um resultado, o nó 204 pode distribuir cargas de trabalho entre os nós 208 e 210, e o nó 206 pode distribuir cargas de trabalho entre os nós 212 e 214. No entanto, o nó 202, como o nó mais superior, é responsável pela distribuição de carga de trabalho total e pode distribuir cargas de trabalho independente de decisões de distribuição feitas pelos nós 204 e 206. Por exemplo, o nó 202 pode reatribuir uma carga de trabalho dentro da fileira de mestre local do nó 204 para o nó 206, independentemente se o nó 204 adicionalmente distribui a carga de trabalho para nós na fileira de trabalhador local (por exemplo, para os nós 208 ou 210). Apesar da Figura 2 somente mostrar três fileiras de nós, em outros exemplos podem existir mais (ou menos) do que três fileiras nas quais os nós em fileiras mais altas podem atribuir cargas de trabalho para nós em fileiras mais baixas. Apesar da Figura 2 apresentar um número específico de nós em cada fileira, uma fileira pode conter um número variável de nós.
[00046] A criação de identificador de geração pode capturar a estrutura de decisão hierárquica que está presente entre os nós 202, 204, 206, 208, 210, 212, e 214. Em um exemplo, o identificador de geração pode ser um identificador de 128 bits que é então subdividido em duas subpartes, de modo que os primeiros 64 bits denotam um identificador maior e os últimos 64 bits denotam um identificador menor. O identificador maior é alterado quando atribuindo as cargas de trabalho entre os nós que compreendem a segunda fileira (por exemplo, os nós 204 e 206). Similarmente, o identificador menor é alterado quando atribuindo as cargas de trabalho entre os nós que compreendem a terceira fileira, por exemplo, os nós 208, 210, 212, e 214. Como um resultado, as subpartes de um identificador de geração podem ser avaliadas diferentemente quando considerando a prioridade de um identificador de geração versus outro identificador de geração. Um identificador de geração que tem identificador maior de prioridade mais alta em relação ao identificador maior de outro identificador de geração pode ser determinado ter uma prioridade mais alta independentemente da prioridade indicada pelos identificadores menores. Similarmente, a relação de prioridade de dois identificadores de geração com identificadores maiores que indicam uma prioridade similar pode ser determinada comparando as prioridades que são indicadas pelos identificadores menores. Em outros exemplos, um identificador de geração pode ter um diferente comprimento e pode estar subdividido em mais, ou menos, do que duas partes de modo a representar a estrutura de decisão hierárquica.
[00047] Se a prioridade indicada por uma subparte de um identificador de geração atingir o valor codificado possível máximo, um identificador de geração de prioridade mais alta subsequente pode ser obtido enviando uma solicitação para um identificador de geração de prioridade mais alta para um nó mestre. Por exemplo, se o nó 204 exaurir todos os possíveis valores codificados para a subparte de identificador menor de um identificador de geração, o nó 204 pode indicar para o nó 202 que todos os possíveis identificadores menores foram exauridos para um dado identificador maior. O nó 202 então responde com um novo identificador de geração compreendido de um identificador maior de prioridade mais alta e um identificador menor. O nó 204 pode então continuar a alterar a subparte de identificador menor do novo identificador de geração de modo a prover subsequentes identificadores de geração de prioridade mais alta.
[00048] Em outros exemplos, o identificador de geração de prioridade mais alta pode ser gerado "rolando" a subparte exaurida do valor codificado possível máximo de volta para um valor de partida (por exemplo, o valor codificado possível mínimo). Por exemplo, se um identificador menor for representado por um inteiro sem sinal, o identificador menor "rola" do valor codificado possível máximo para zero. O identificador maior está inalterado. Quando comparando dois identificadores, uma determinação de prioridade é feita subtraindo o último valor válido para cada respectiva subparte do identificador de geração da subparte equivalente de outro identificador de geração. A operação de subtração pode utilizar uma matemática de complemento de dois, de modo que subtraindo o valor codificado possível máximo de um valor rolado resulte em um valor positivo. Um valor negativo que resulta da operação de subtração indica uma prioridade mais baixa, enquanto que um valor positivo indica uma prioridade mais alta. A relação de prioridade dos identificadores de geração é então avaliada avaliando as subpartes individuais dos identificadores de geração como acima descrito.
[00049] De acordo com exemplos, os nós 202, 204, 206, 208, 210, 212, e 214 são utilizados para prover um processamento de alta disponibilidade de cargas de trabalho distribuídas. Isto é feito utilizando componentes sobre os nós e o sistema de armazenamento 216 para dividir as cargas de trabalho e redistribuir o trabalho entre vários nós no caso de uma falha entre um nó mestre e um nó trabalhador. Como abaixo descrito em maiores detalhes, as notificações de reatribuição providas para o nó quando a sua carga de trabalho é reatribuída para permitir que o de grupamento nós provenha uma manipulação de alta disponibilidade de cargas de trabalho distribuídas.
[00050] O nó 202, em exemplos, é responsável por dividir e atribuir uma carga de trabalho distribuída para os nós trabalhadores. O nó 202 pode atribuir uma primeira carga de trabalho para o nó 204. O nó 204 pode ainda distribuir a carga de trabalho para um de seus nós trabalhadores, por exemplo, o nó 210. A primeira carga de trabalho pode estar associada com um primeiro identificador de geração compreendido de um primeiro número maior e um primeiro número menor. A primeira carga de trabalho pode também estar associada com um primeiro identificador de carga de trabalho. O primeiro identificador de geração, o primeiro identificador de carga de trabalho, e a primeira carga de trabalho podem ser comunicados para o nó 210.
[00051] O nó 210 começa o processamento da primeira carga de trabalho, enviando solicitações de acesso de arquivo para dados-alvo para o nó 216A conforme necessário. Uma solicitação de acesso pode estar associada com ou incluir um identificador de geração e/ou um identificador de carga de trabalho. Por exemplo, quando uma nova carga de trabalho é iniciada, uma indicação do identificador de geração pode ser comunicada para o nó 216A. A solicitação de acesso para dados-alvo pode incluir um número de operações de arquivo para executar nos dados-alvo. As operações podem ser, por exemplo, aberturas para dados de leitura/escrita, enumerar atributos, arrendar solicitações para permitir colocar em cache os dados localmente, ou outras operações de acesso de arquivo.
[00052] Em um exemplo, o identificador de geração pode estar armazenado em uma estrutura _NETWORK_APP_INSTANCE_VER- SION_ ECP_CONTEXT. A estrutura _NETWORK_APP_INSTAN- CE_VERSION_ ECP_CONTEXT pode ser definida como segue:
[00053] typedef struct _NETWORK_APP_INSTANCE_VERSION_ ECP_CONTEXT {
[00054] USHORT Size;
[00055] USHORT Reserved;
[00056] UINT64 VersionHigh;
[00057] UINT64 VersionLow;
[00058] } NETWORK_APP_INSTANCE_VERSION_ECP_CON- TEXT, *PNETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT;
[00059] Em tais exemplos, o tamanho variável pode armazenar informações relativas ao tamanho da estrutura, a variável VersionHigh pode ser um identificador maior, e a variável VersionLow pode ser um identificador menor. Em alguns exemplos, o _NETWORK_APP_INS- TANCE_VERSION_ECP_CONTEXT, ou outro objeto ou variável que contém o identificador de geração pode estar armazenado no armazenamento persistente 224. Em exemplos, a estrutura _NETWORK_ APP_INSTANCE_VERSION_ECP_CONTEXT pode ser enviada de um nó para um sistema de armazenamento em associação com uma solicitação para acessar um recurso (por exemplo, uma solicitação de criar ou abrir). Em um exemplo, o identificador de geração pode estar armazenado por um nó que está processando uma carga de trabalho ou distribuindo cargas de trabalho, por exemplo, um nó mestre ou um nó trabalhador. Em outro exemplo, apesar de não mostrado na Figura 2, o grupamento de nós pode ter um repositório central que armazena identificadores de geração. Em tal exemplo, múltiplos nós no grupamento podem acessar o repositório centralizado. Em ainda outro exemplo, os identificadores de geração podem estar armazenados através de múltiplos repositórios. Em tais exemplos, o grupamento de nós pode empregar um algoritmo de replicação para assegurar que os múltiplos repositórios contenham os mesmos identificadores de geração.
[00060] O nó 216A recebe a solicitação de acesso para dados-alvo. Quando determinando que a solicitação deve ser concedida, o filtro de identificador de geração 222 armazena o identificador de geração incluído, ou associado, com a solicitação de acesso do nó 210 no armazenamento persistente 224. Em alguns exemplos, os dados-alvo podem então ser travados.
[00061] Em algum ponto, nó 210 pode experimentar uma falha de comunicação com o nó 204. A falha pode resultar de, por exemplo, uma desconexão, uma falha de hardware, ou uma reiniciação. Como um resultado da falha, o nó 204 reatribui a primeira carga de trabalho para o nó 208 gerando um segundo identificador de geração que compreende o primeiro identificador maior e um segundo identificador menor. O segundo identificador de geração, o primeiro identificador de carga de trabalho, e a primeira carga de trabalho podem ser comunicados para o nó 208.
[00062] O nó 208 começa o processamento da primeira carga de trabalho, enviando uma solicitação de acesso de arquivo para os dados-alvo para o nó 216A conforme necessário. Uma solicitação de acesso de arquivo pode incluir ou referir a um identificador de geração e/ou um identificador de carga de trabalho, tal como o segundo identificador de geração e o primeiro identificador de carga de trabalho.
[00063] O nó 216A recebe a solicitação de acesso de arquivo. Se os dados-alvo estiverem travados (por exemplo, pelo nó 210 utilizando o mesmo identificador de carga de trabalho), o servidor de arquivo escalável 218 determina se o segundo identificador de geração denota uma prioridade mais alta do que o identificador de geração armazenado. Os identificadores maiores de tanto o segundo identificador de geração quanto o identificador de geração armazenado indicam a mesma prioridade, assim o servidor de arquivo escalável 218 compara os identificadores menores. Se o identificador menor do segundo identificador de geração indicar uma prioridade mais alta do que o identificador menor do identificador de geração armazenado, o nó 216A rompe a trava do nó 210 sobre os dados-alvo, trava os dados-alvo para o nó 208, e concede a solicitação de acesso. Se o identificador menor do segundo identificador de geração não indicar uma prioridade mais alta, o nó 216A pode indicar para o nó 208 que os dados-alvo estão travados. Ainda, a indicação pode também informar o nó 208 que os dados-alvo estão travados pelo nó 210. Se o segundo identificador de geração indicar uma prioridade mais alta do que o identificador de geração armazenado, o identificador de geração armazenado no armazenamento persistente 224 é substituído pelo segundo identificador de geração, o qual torna-se o identificador de geração armazenado.
[00064] O nó 208 pode também emitir solicitações de acesso permissivas como acima discutido, ou o identificador menor do segundo identificador de geração pode indicar uma prioridade mais baixa do que o identificador menor do identificador de geração armazenado. Em ambos estes exemplos, o nó 210 é capaz de terminar o processamento da carga de trabalho no caso em que este esteja operando normalmente, mas é incapaz de comunicar com o nó 204. Portanto, o nó 208 pode somente obter acesso aos dados-alvo se o nó 210 não estiver mais acessando os dados-alvo, por exemplo, se o nó 210 terminou o processamento, perdeu conectividade com o sistema de armazenamento 216, ou experimentou uma falha além da falha de comunicação com o nó 204. No caso em que o segundo identificador de geração não indicou uma prioridade mais alta do que o identificador de geração armazenado, uma vez que o nó 208 obtém acesso aos dados-alvo, o nó 208 pode receber um terceiro identificador de geração de prioridade mais alta do nó 204. O identificador de geração de prioridade mais alta pode então ser armazenado no armazenamento persistente 224.
[00065] Apesar da falha de comunicação entre nós 204 e 210, o nó 210 pode continuar o processamento da primeira carga de trabalho. Após a primeira carga de trabalho ter sido reatribuída para o nó 208 e ao nó 208 foi concedido acesso aos dados-alvo pelo nó 216A, o nó 210 pode enviar uma solicitação de acesso de arquivo para o nó 216A. A solicitação de acesso de arquivo pode incluir ou referir ao primeiro identificador de geração. Quando recebendo a solicitação de acesso, o servidor de arquivo escalável 218 avalia o identificador de geração associado com a solicitação de acesso de arquivo. O servidor de arquivo escalável 218 determinará que o primeiro identificador de geração associado com a solicitação de acesso de arquivo indica uma prioridade mais baixa do que o identificador de geração armazenado. Como um resultado, o nó 216A nega a solicitação de acesso de arquivo e indica para o nó 210 que a carga de trabalho foi reatribuída para outro nó. Em alguns exemplos, a indicação pode informar o nó 210 que a carga de trabalho foi reatribuída para o nó 208. O nó 210 pode então parar o processamento da primeira carga de trabalho.
[00066] Eventualmente, o nó 204 pode experimentar uma falha de comunicação com o nó 202. Como um resultado da falha, o nó 202 reatribui a primeira carga de trabalho para o nó 206 gerando um quarto identificador de geração que compreende um segundo identificador maior e um terceiro identificador menor. O terceiro identificador menor pode indicar uma prioridade similar ao primeiro ou segundo identificadores menores, ou este pode indicar uma diferente prioridade no total. O quarto identificador de geração, o primeiro identificador de carga de trabalho, e a primeira carga de trabalho podem ser comunicados para o nó 206. O nó 206 pode então ainda distribuir a carga de trabalho para um de seus nós trabalhadores, por exemplo, o nó 212. Como um resultado, o quarto identificador de geração, o primeiro identificador de carga de trabalho, e a primeira carga de trabalho para o nó 212 podem ser comunicados para o nó 212.
[00067] O nó 212 começa o processamento da primeira carga de trabalho, enviando uma solicitação de acesso para dados-alvo para o nó 216B conforme necessário. Uma solicitação de acesso de arquivo pode estar associada com ou incluir um identificador de geração e/ou um identificador de carga de trabalho, tal como o quarto identificador de geração e o primeiro identificador de carga de trabalho.
[00068] O nó 216B recebe as solicitações de acesso de arquivo. Se os dados-alvo estiverem travados (por exemplo, pelo nó 210 utilizando o mesmo identificador de carga de trabalho), o servidor de arquivo escalável 218 determina se o quarto identificador de geração denota uma prioridade mais alta do que o identificador de geração armazenado. Se o identificador maior do quarto identificador de geração indicar uma prioridade mais alta do que o identificador maior do identificador de geração armazenado, o nó 216B rompe a trava do nó 208 sobre os dados-alvo, trava os dados-alvo para o nó 212, e concede a solicitação de acesso. O servidor de arquivo escalável 218 pode ignorar o identificador menor quando determinando que o identificador maior indica uma prioridade mais alta. Além disso, o identificador de geração armazenado no armazenamento persistente 224 pode ser substituído pelo quarto identificador de geração de prioridade mais alta. Se o identificador maior do quarto identificador de geração não indicar uma prioridade mais alta, o nó 216B pode indicar para o nó 212 que os dados-alvo estão travados. Ainda, a indicação pode também informar o nó 212 que os dados-alvo estão travados pelo nó 208. Em exemplos, o nó 212 pode comunicar tais informações para o nó 202.
[00069] O nó 212 pode também emitir solicitações de acesso permissivas como acima discutido, ou o quarto identificador de geração pode indicar uma prioridade mais baixa do que o identificador de geração armazenado. Em ambos estes exemplos, o nó 212 somente obtém acesso aos dados-alvo uma vez que nó 208 terminou a sua solicitação de acesso e/ou, em alguns exemplos, liberou a sua trava. No caso em que o quarto identificador de geração não indicou uma prioridade mais alta do que o identificador de geração armazenado, uma vez que nó 212 obtém acesso aos dados-alvo, o nó 212 pode receber um quinto identificador de geração de prioridade mais alta do nó 202. O identificador de geração de prioridade mais alta está armazenado no armazenamento persistente 224. Isto impede que o nó 208 recupere o acesso utilizando seu identificador de geração de prioridade mais baixa uma vez que o nó 212 obtém acesso aos dadosalvo.
[00070] Apesar da falha de comunicação entre os nós 204 e 202, o nó 208 pode continuar o processamento da primeira carga de trabalho. Após a primeira carga de trabalho ter sido reatribuída ao nó 212 e ao nó 212 foi concedido acesso aos dados-alvo pelo nó 216B, o nó 208 pode enviar uma solicitação de acesso de arquivo para o nó 216A. A solicitação de acesso de arquivo pode incluir ou referir a um sexto identificador de geração compreendido do primeiro identificador maior e um quarto identificador menor. O quarto identificador menor pode indicar uma prioridade similar ao primeiro, segundo, ou terceiro identificadores menores, ou este pode indicar uma a diferente prioridade no todo. Quando recebendo a solicitação de acesso, o servidor de arquivo escalável 218 avalia o identificador de geração associado com a solicitação de acesso de arquivo. O servidor de arquivo escalável 218 determina que o identificador maior do sexto identificador de geração associado com a solicitação de acesso de arquivo indica uma prioridade mais baixa do que o identificador maior do identificador de geração armazenado. Em exemplos, a indicação de prioridade do identificador menor pode ser ignorada porque uma determinação de prioridade mais alta já foi feita com base na prioridade indicada pelos identificadores maiores dos identificadores de geração. Como um resultado, o nó 216A nega a solicitação de acesso de arquivo e indica para o nó 208 que a carga de trabalho foi reatribuída para outro nó. Em alguns exemplos, a indicação pode informar o nó 208 que a carga de trabalho foi reatribuída para o nó 212. O nó 208 pode então parar o processamento da primeira carga de trabalho.
[00071] Como pode ser apreciado, a descrição acima do sistema 200 não pretende limitar os exemplos aqui descritos. A Figura 2 e sua descrição são meramente destinadas a ilustrar a implementação de alguns exemplos. Assim, os exemplos não estão limitados ao que está mostrado e descrito na Figura 2.
[00072] As Figuras 3, 4, e 5 ilustram fluxos operacionais 300, 400, e 500 de acordo com exemplos. Os fluxos operacionais 300, 400, e 500 podem ser executados em qualquer ambiente de computação adequado. Por exemplo, os fluxos operacionais podem ser executados por ambientes tais como ilustrados nas Figuras 1 e 2. Portanto, a descrição dos fluxos operacionais 300, 400, e 500 pode se referir a pelo menos um dos componentes das Figuras 1 e 2. No entanto, deve ser compreendido que as implementações das Figuras 1 e 2 são ambientes não limitantes para os fluxos de operações 300, 400, e 500.
[00073] Mais ainda, apesar dos fluxos operacionais 300, 400, e 500 serem ilustrados e descritos sequencialmente em uma ordem específica, em outros exemplos, as operações podem ser executadas em diferentes ordens, múltiplas vezes, e/ou em paralelo. Ainda, uma ou mais operações podem ser omitidas ou combinadas em alguns exemplos. Além disso, deve ser compreendido que ordinais tais como "primeiro" não pretendem implicar uma ordem ou sequência, a menos que de outro modo especificado, e são utilizados para distinguir entre elementos similares. Por exemplo, um "primeiro identificador de geração" não precisa ser um identificador de geração inicial, mas deve ser lido como sendo diferente de um "segundo identificador de geração".
[00074] O fluxo operacional 300 ilustra as operações, por exemplo, para um nó que está comunicando com um sistema de armazenamento. Em exemplos, fluxo 300 ilustrado na Figura 3 pode ser executado por um nó que está processando uma carga de trabalho, por exemplo, o nó 210 (Figura 2).
[00075] O fluxo 300 começa na operação 302, onde uma solicitação de acesso para dados-alvo é enviada sent. A solicitação de acesso pode estar associada com um primeiro identificador de geração, um primeiro identificador de carga de trabalho, e uma primeira carga de trabalho. Em um exemplo, o primeiro identificador de geração pode ser enviado em uma mensagem transmitida através de uma rede. O identificador de geração pode ser transmitido na mesma mensagem que contém a solicitação na operação 302, ou pode ser transmitido em uma diferente mensagem. Em tais exemplos, um objeto que contém o identificador de geração, tal como, mas não limitado a _NET WORK_APP_INSTANCE_VERSION_ECP_CONTEXT, pode ser enviado na operação 302.
[00076] Em um exemplo, uma interface pode ser utilizada para enviar o identificador de geração na operação 302. A interface pode ser uma interface de nível de núcleo localizada em um nó ou disponível para um nó que opera em um ambiente agrupado. Em exemplos, a interface de nível de núcleo pode ser utilizada por um nó para enviar um identificador de geração para um sistema de armazenamento. O seguinte é um exemplo não limitante de uma interface de nível de núcleo que pode ser empregada na operação 302 para enviar um identificador de instância de aplicação:
[00077] //
[00078] // ECP context for an application to provide its instance ID.
[00079] //
[00080] typedef struct _NETWORK_APP_INSTANCE_VERSION_ ECP_CONTEXT {
[00081] //
[00082] // This must be set para o size of this structure.
[00083] //
[00084] USHORT Size;
[00085] //
[00086] // This must be set to zero.
[0087] //
[0088] USHORT Reserved;
[0089] //
[0090] // The ccaller places the major version e minor version.
[0091] // This ECP must accompany a NETWORK_APP_INS- TANCE_ECP to be
[0092] // valid.
[0093] //
[0094] UINT64 VersionHigh;
[0095] UINT64 VersionLow;
[00087] }NETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT , *PNETWORK_APP_INSTANCE_VERSION_ECP_CONTEXT;
[00088] //
[00089] // The GUID used for the NETWORK_APP_INSTAN- CE_ECP_CONTEXT structure.
[00090] // {6AA6BC45-A7EF-4af7-9008-FA462E144D74}
[00091] //
[00092] DEFINE_GUID(GUID_ECP_NETWORK_APP_INSTANCE_ VERSION, 0xb7d082b9, 0x563b, 0x4f07, 0xa0, 0x7b, 0x52, 0x4a, 0x81, 0x16, 0xa0, 0x10);
[00093] Apesar de uma interface de nível de núcleo específica ser provida, alguém versado na técnica apreciará que outras interfaces podem ser empregadas na operação 302 para enviar o identificador de geração.
[00094] O fluxo então continua para a operação 304, onde uma resposta de acesso é recebida. Na decisão 306, uma determinação é feita se o acesso aos dados-alvo foi concedido. O acesso pode não ser concedido porque, por exemplo, os dados-alvo estão travados ou em uso por uma diferente carga de trabalho como indicado pelo identificador de carga de trabalho, ou o identificador de carga de trabalho indica uma mesma carga de trabalho, mas o primeiro identificador de geração indica uma prioridade mais baixa do que o identificador que está inicialmente associado com outra solicitação de acesso para os dados-alvo. Em outros exemplos, o acesso pode ser negado porque a primeira solicitação de acesso indicou que uma trava preexistente sobre os dados-alvo não devia ser rompida se os dadosalvo estivessem ainda em uso.
[00095] Se, na decisão 306, o cesso aos dados-alvo foi concedido, o fluxo passa para a operação 308, onde a execução da primeira carga de trabalho continua. Após a operação 308, o fluxo operacional termina.
[00096] Se, na decisão 306, o cesso aos dados-alvo não foi concedido, o fluxo continua para a decisão 310, onde uma determinação é feita referente a se a resposta de acesso indica que a carga de trabalho foi reatribuída.
[00097] Se, na decisão 310, uma indicação foi recebida que a carga de trabalho foi reatribuída, o fluxo move para a operação 312 onde execução da primeira carga de trabalho é parada como um resultado da indicação recebida. Em alguns exemplos, a resposta de acesso pode também indicar o nó para o qual a carga de trabalho foi atribuída. Após a operação 312, o fluxo operacional termina.
[00098] Se, na decisão 310, uma indicação não foi recebida que a carga de trabalho foi reatribuída, o fluxo continua para a operação 314 onde a solicitação de acesso pode ser novamente tentada periodicamente, retornando para a operação 302 após um período de tempo.
[00099] O fluxo operacional 400 ilustra as operações, por exemplo, para um nó que está atribuindo cargas de trabalho para outros nós. Em exemplos, o fluxo 400 pode ser executado por um nó que está distribuindo trabalho, por exemplo, o nó 202 (Figura 2).
[000100] O fluxo 400 começa na operação 402, onde um primeiro identificador de geração e um primeiro identificador de carga de trabalho estão associados com uma primeira carga de trabalho. Na operação 404, o primeiro identificador de geração, o primeiro identificador de carga de trabalho, e a primeira carga de trabalho são comunicados para um primeiro nó.
[000101] O fluxo então passa para a operação 406, na qual uma falha ocorre. A falha pode resultar, por exemplo, de uma interrupção de conexão, uma falha de hardware, ou uma reiniciação, etc. Na decisão 408, uma determinação é feita se solicitações permissivas estão habilitadas. Em exemplos, as solicitações permissivas permitem que o primeiro nó continue o processamento da primeira carga de trabalho no caso em que o primeiro nó é um nó trabalhador que está operando normalmente, mas parou de comunicar com o seu nó mestre, e a primeira carga de trabalho é reatribuída pelo nó mestre. Como discutido, existem dois métodos pelos quais as solicitações permissivas podem ser habilitadas, e o comportamento do trabalho de atribuição do nó mestre para os nós trabalhadores é afetado por tanto (a) se as solicitações permissivas estão habilitadas; quanto (b) se uma indicação positiva de solicitação permissiva (por exemplo, um sinalizador permissivo) é habilitada. Se nenhuma solicitação permissiva for habilitada (por exemplo, o nó mestre não as suporta), então o nó mestre irá como padrão prover um segundo nó com um segundo identificador de geração que tem uma prioridade mais alta do que o primeiro identificador de geração. Se as solicitações permissivas forem habilitadas, mas sinalizadores permissivos não são suportados (ou pelo segundo nó ou pelo sistema de armazenamento), então o nó mestre pode prover um segundo nó com um segundo identificador de geração com uma prioridade mais baixa do que o primeiro identificador de geração (de modo que quando apresentado para o sistema de armazenamento, o segundo identificador de geração não interromperá qualquer trabalho ativo que está sendo feito pelo primeiro nó sobre os dados-alvo). Se sinalizadores permissivos forem habilitados, no entanto, o nó mestre pode gerar e prover para o segundo nó um identificador de geração de prioridade mais alta, mas com um sinalizador permissivo ajustado dentro deste (ou instruções para o segundo nó ajustar tal sinalizador) de modo que o sistema de armazenamento ignorará o identificador de geração de prioridade mais alta enquanto qualquer trabalho ativo estiver ainda sendo feito pelo primeiro nó sobre os dados-alvo. Isto está adicionalmente abaixo discutido.
[000102] Se, na decisão 408, for determinado que as solicitações permissivas não estão habilitadas, o fluxo continua para a operação 410 onde um segundo identificador de geração que indica uma prioridade mais alta do que o primeiro identificador de geração é gerado e associado com a primeira carga de trabalho. Na operação 412, o segundo identificador de geração, o primeiro identificador de carga de trabalho, e a primeira carga de trabalho são comunicados para um segundo nó. o fluxo operacional termina na operação 412.
[000103] Se, na decisão 408, for determinado que as solicitações permissivas estão habilitadas, o fluxo passa para a decisão 414 onde a determinação é feita se os sinalizadores permissivos estão habilitados. Em alguns exemplos, os sinalizadores permissivos podem ser habilitados e utilizados por um nó trabalhador para indicar para um sistema de armazenamento que uma solicitação de acesso de arquivo não deve ser concedida se os dados-alvo estiverem em uso ou travados, mesmo se a solicitação de acesso de arquivo estiver associada com um identificador de geração que indica uma prioridade mais alta.
[000104] Se, na decisão 414, for determinado que os sinalizadores permissivos estão habilitados, o fluxo continua para a operação 416 onde um terceiro identificador de geração que indica uma prioridade mais alta do que o primeiro identificador de geração é gerado e associado com a primeira carga de trabalho. Na operação 418, o terceiro identificador de geração, o primeiro identificador de carga de trabalho, e a primeira carga de trabalho são comunicados para um segundo nó, juntamente com um sinalizador permissivo ou uma indicação que o segundo nó deve ajustar um sinalizador permissivo quando fazendo uma solicitação de acesso para o sistema de armazenamento. Após a operação 418, fluxo operacional termina.
[000105] Se, na decisão 414, for determinado que os sinalizadores permissivos não estão habilitados, o fluxo continua para a operação 420 onde um quarto identificador de geração que indica uma prioridade mais baixa do que o primeiro identificador de geração é gerado e associado com a primeira carga de trabalho. Na operação 422, o quarto identificador de geração, o primeiro identificador de carga de trabalho, e a primeira carga de trabalho são comunicados para um segundo nó. O fluxo continua para a operação 424 onde uma notificação que indica que os dados-alvo foram acessados com sucesso é finalmente recebida do segundo nó. O fluxo então continua para a operação 426, onde um quinto identificador de geração que indica uma prioridade mais alta do que o primeiro identificador de geração é gerado e associado com a primeira carga de trabalho. Na operação 428, o quinto identificador de geração é comunicado para segundo nó. Após a operação 428, o fluxo operacional 400 termina.
[000106] O fluxo operacional 500 ilustra operações, por exemplo, para um sistema de armazenamento comunicar com um nó. Em exemplos, o fluxo 500 pode ser executado por um sistema de armazenamento, tal como um ou mais servidores de arquivo, por exemplo, o nó 216A e/ou nó 216B (Figura 2).
[000107] O fluxo 500 começa com a operação 502, onde uma primeira solicitação de acesso para dados-alvo é recebida. A primeira solicitação de acesso está associada com um primeiro identificador de geração e um primeiro identificador de carga de trabalho. Em alguns exemplos, o primeiro identificador de geração e/ou o primeiro identificador de carga de trabalho podem ser incluídos como parte da primeira solicitação de acesso. A solicitação de acesso para dadosalvo pode incluir um número de operações de arquivo para executar sobre os dados-alvo. As operações podem ser, por exemplo, aberturas para dados de leitura/escrita, enumerar atributos, arrendar solicitações para permitir a colocação em dados em cache localmente, ou outras operações de acesso de arquivo. Após a operação 502, o fluxo 500 passa para a operação 504 onde o primeiro identificador de geração e o primeiro identificador de carga de trabalho estão armazenados no armazenamento persistente.
[000108] Na operação 506, os dados-alvo são travados para utilização e associados com o primeiro identificador de geração. Os dados-alvo podem também estar associados com o primeiro identificador de carga de trabalho. O fluxo passa para a operação 508, onde o acesso aos dados-alvo é concedido. Continuando para a operação 510, uma segunda solicitação de acesso para dados-alvo é recebida. A segunda solicitação de acesso pode estar associada com, ou referir a, um segundo identificador de geração e/ou o primeiro identificador de carga de trabalho.
[000109] Na decisão 512, uma determinação é feita se o segundo identificador de geração tem uma prioridade mais alta do que o identificador armazenado. Em alguns exemplos, a determinação pode estar baseada na comparação da prioridade indicada por várias subpartes do identificador de geração, por exemplo, uma subparte de identificador maior e uma subparte de identificador menor.
[000110] Se, na decisão 512, for determinado que o segundo identificador de geração does não indica uma prioridade mais alta, o fluxo continua para a operação 514 onde a solicitação de acesso é negada e uma indicação é feita que os dados-alvo estão em uso. Em exemplos, tal indicação pode incluir uma indicação que os dados-alvo estão em uso por um nó específico. Após a operação 514, o fluxo operacional termina.
[000111] Se, na decisão 512, for determinado que o segundo identificador de geração tem uma prioridade mais alta, o fluxo continua para a decisão 516 onde uma determinação é feita se a segunda solicitação de acesso é permissiva. Se, na decisão 516, for determinado que a segunda solicitação de acesso é permissiva, o fluxo continua para a operação 518 onde a solicitação de acesso é negada e uma indicação é feita que os dados-alvo estão em uso. Após a operação 518, o fluxo operacional termina. Em exemplos, um nó que faz a segunda solicitação de acesso tentaria a segunda solicitação de acesso até que os dados-alvo não estejam mais travados.
[000112] Se, na decisão 516, for determinado que a segunda solicitação de acesso não é permissiva, o fluxo operacional 500 progride para a operação 520 onde o segundo identificador de geração está armazenado no lugar do primeiro identificador de geração em armazenamento persistente. Na operação 522, a trava associada com o primeiro identificador de geração sobre os dados-alvo é rompida, e uma trava é colocada sobre os dados-alvo, os quais podem estar associados com o segundo identificador de geração. Continuando para a operação 524, a solicitação de acesso é concedida.
[000113] Na operação 526, uma terceira solicitação de acesso é recebida. A terceira solicitação de acesso pode estar associada com, ou referir a, o primeiro identificador de geração e o primeiro identificador de carga de trabalho. O fluxo progride para a operação 528, onde a terceira solicitação de acesso é negada porque o primeiro identificador de geração não indica uma prioridade mais alta do que o identificador de geração armazenado. Ainda, uma indicação é feita que os dados-alvo foram reatribuídos. O fluxo operacional 500 então conclui.
[000114] As Figuras 6-8 e as descrições associadas proveem uma discussão de uma variedade de ambientes de operação nos quais exemplos da invenção podem ser praticados. No entanto, os dispositivos e sistemas ilustrados e discutidos com relação às Figuras 6-8 são para propósitos de exemplo e ilustração e não são limitantes de um vasto número de configurações de dispositivos de computação que podem ser utilizadas para praticar os exemplos da invenção, aqui descrita.
[000115] A Figura 6 é um diagrama de blocos ilustra componentes físicos de um dispositivo de computação 602, por exemplo, os nós 202, 204, 206, 208, 210, 212, 214, 216A, e 216B, com os quais os exemplos da presente descrição podem ser praticados. Os componentes de dispositivo de computação abaixo descritos podem ser adequados para os dispositivos de computação acima descritos. Em uma configuração básica, o dispositivo de computação 602 pode incluir pelo menos uma unidade de processamento 604 e uma memória de sistema 606. Dependendo da configuração e tipo de dispositivo de computação, a memória de sistema 606 pode compreender, mas não está limitada a armazenamento volátil (por exemplo, memória de acesso randômico), armazenamento não volátil (por exemplo, memória somente de leitura), memória instantânea, ou qualquer combinação de tais memórias. A memória de sistema 606 pode incluir um sistema de operação 607 e um ou mais módulos de programa 608 adequados para executar aplicações de software 620 tal como a carga de trabalho 624 associada com o identificador de geração 626. O sistema de operação 607, por exemplo, pode ser adequado para controlar a operação do dispositivo de computação 602. Mais ainda, exemplos da invenção podem ser praticados em conjunto com uma biblioteca gráfica, outros sistemas de operação, ou qualquer outro programa de aplicação e não estão limitados a nenhuma aplicação ou sistema específico. Esta configuração básica está ilustrada na Figura 6 por aqueles componentes dentro de uma linha tracejada 622. O dispositivo de computação 602 pode ter características ou funcionalidades adicionais. Por exemplo, o dispositivo de computação 602 pode também incluir dispositivos de armazenamento de dados adicionais (removíveis e/ou não removíveis) tais como, por exemplo, discos magnéticos, discos óticos, ou fita. Tal armazenamento adicional está ilustrado na Figura 6 por um dispositivo de armazenamento removível 609 e um dispositivo de armazenamento não removível 610.
[000116] Como acima declarado, um número de módulos de programa e arquivos de dados podem estar armazenados na memória de sistema 606. Enquanto executando na unidade de processamento 604, os módulos de programa 608 (por exemplo, carga de trabalho 624 associada com identificador de geração 626) podem executar processos que incluem, mas não limitados a um ou mais dos estágios dos fluxos operacionais 300, 400, e 500 ilustrados nas Figuras 3, 4, e 5. Outros módulos de programa que podem ser utilizados de acordo com exemplos da presente invenção podem incluir aplicações de correio eletrônico e contatos, aplicações de processamento de palavra, aplicações de planilha, aplicações de banco de dados, aplicações de apresentação de slides, programas de aplicação de desenho ou auxiliados por computador, etc.
[000117] Mais ainda, os exemplos da invenção podem ser praticados em um circuito elétrico que compreende elementos eletrônicos discretos, chips eletrônicos empacotados ou integrados que contêm portas lógicas, um circuito que utiliza um microprocessador, ou em um único chip que contém elementos eletrônicos ou microprocessadores. Por exemplo, exemplos da invenção podem ser praticados através de um sistema em um chip (SOC) onde cada ou muitos dos componentes ilustrados na Figura 6 podem estar integrados em um único circuito integrado. Tal dispositivo de SOC pode incluir uma ou mais unidades de processamento, unidades gráficas, unidades de comunicações, unidades de virtualização de sistema e várias funcionalidades de aplicação todas as quais estão integradas (ou "queimadas") por sobre o substrato de chip como um único circuito integrado. Quando operando através de um SOC, a funcionalidade aqui descrita pode ser operada através de uma lógica específica de aplicação integrada com outros componentes do dispositivo de computação 602 sobre o único circuito integrado (chip). Exemplos da presente descrição podem também ser praticados utilizando outras tecnologias capazes de executar operações lógicas tais como, por exemplo, E, OU, e NÃO, incluindo, mas não limitado a tecnologias mecânicas, óticas, fluídicas, e de quantum. Além disso, exemplos da invenção podem ser praticados dentro de um computador de uso geral ou em quaisquer outros circuitos ou sistemas.
[000118] O dispositivo de computação 602 pode também ter um ou mais dispositivo(s) de entrada 612 tal como um teclado, um mouse, uma caneta, um dispositivo de entrada de som, um dispositivo de entrada de toque, etc. O(s) dispositivo(s) de saída 614 tal como um display, alto-falantes, uma impressora, etc. podem também estar incluídos. Os dispositivos acima mencionados são exemplos e outros podem ser utilizados. O dispositivo de computação 602 pode incluir uma ou mais conexões de comunicação 616 que permitem comunicações com outros dispositivos de computação 618. Exemplos de conexões de comunicação adequadas 616 incluem, mas não estão limitados a um circuito de transmissor de RF, de receptor, e/ou de transceptor; barramento serial universal (USB), e portas paralelas, e/ou seriais.
[000119] O termo meio legível por computador como aqui utilizado pode incluir um meio de armazenamento de computador. O meio de armazenamento de computador pode incluir volátil e não volátil, removível e não removível implementado em qualquer método ou tecnologia para armazenamento de informações, tal como instruções legíveis por computador, estruturas de dados, ou módulos de programa. A memória de sistema 606, o dispositivo de armazenamento removível 609, e o dispositivo de armazenamento não removível 610 são todos exemplos de meio de armazenamento de computador (isto é, armazenamento de memória). O meio de armazenamento de computador pode incluir uma RAM, ROM, memória somente de leitura eletricamente apagável (EEPROM), memória instantânea ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento ótico, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro artigo de manufatura o qual possa ser utilizado para armazenar informações e o qual pode ser acessado pelo dispositivo de computação 602. Qualquer tal meio de armazenamento de computador pode fazer parte do dispositivo de computação 602. O meio de armazenamento de computador não inclui uma onda portadora ou outro sinal de dados propagado ou modulado.
[000120] O meio de comunicação pode estar incorporado por instruções legíveis por computador, estruturas de dados, módulos de programa, ou outros dados em um sinal de dados modulado, tal como uma onda portadora ou outro mecanismo de transporte, e inclui qualquer meio de fornecimento de informações. O termo "sinal de dados modulado" pode descrever um sinal que tem uma ou mais características ajustadas ou mudadas de tal modo a codificar as informações no sinal. Como exemplo, e não limitação, o meio de comunicação pode incluir um meio com fio tal como uma rede com fio ou conexão com fio direta, e um meio sem fio tal como um meio acústico, de frequência de rádio (RF), infravermelho, e outros meios sem fio.
[000121] As Figuras 7A e 7B ilustram um dispositivo de computação móvel 700, por exemplo, um telefone móvel, um smartphone, um computador pessoal tablet, um computador laptop, e similares, com os quais os da invenção podem ser praticados. Por exemplo, o dispositivo de computação móvel 700 pode ser utilizado para implementar os nós 202, 204, 206, 208, 210, 212, e 214. Com referência à Figura 7A, um exemplo de um dispositivo de computação móvel 700 para implementar os exemplos está ilustrado. Em uma configuração básica, o dispositivo de computação móvel 700 é um computador portátil que tem tanto elementos de entrada e elementos de saída. O dispositivo de computação móvel 700 tipicamente inclui um display 705 e um ou mais botões de entrada 710 que permitem o usuário inserir informações no dispositivo de computação móvel 700. O display 705 do dispositivo de computação móvel 700 pode também funcionar como um dispositivo de entrada (por exemplo, um display de tela de toque). Se incluído, um elemento de entrada lateral opcional 715 permite uma entrada de usuário adicional. O elemento de entrada lateral 715 pode ser uma chave rotativa, um botão, ou qualquer outro tipo de elemento de entrada manual. Em exemplos alternativos, o dispositivo de computação móvel 700 pode incorporar mais ou menos elementos de entrada. Por exemplo, o display 705 pode não ser uma tela de toque em alguns exemplos. Em ainda outro exemplo alternativo, o dispositivo de computação móvel 700 é um sistema de telefone portátil, tal como um telefone celular. O dispositivo de computação móvel 700 pode também incluir um teclado opcional 735. O teclado opcional 735 pode ser um teclado físico ou um teclado "soft" gerado no display de tela de toque. Em vários exemplos, os elementos de saída incluem o display 705 para mostrar uma interface de usuário gráfica (GUI), um indicador visual 720 (por exemplo, um diodo de emissão de luz), e/ou um transdutor de áudio 725 (por exemplo, um alto-falante). Em alguns exemplos, o dispositivo de computação móvel 700 incorpora um transdutor de vibração para prover o usuário com um retorno táctil. Em ainda outro exemplo, o dispositivo de computação móvel 700 incorpora portas de entrada e/ou saída, tal como uma entrada de áudio (por exemplo, um conector de microfone), uma saída de áudio (por exemplo, um conector de fone de ouvido), e uma saída de vídeo (por exemplo, uma porta HDMI) para enviar sinais para ou receber sinais de um dispositivo externo.
[000122] A Figura 7B é um diagrama de blocos que ilustra a arquitetura de um exemplo de um dispositivo de computação móvel. Isto é, o dispositivo de computação móvel 700 pode incorporar um sistema (isto é, uma arquitetura) 702 para implementar alguns exemplos. Em um exemplo, o sistema 702 está implementado como um "smartphone" capaz de executar uma ou mais aplicações (por exemplo, browser, e-mail, agenda, gerenciadores de contato, clientes de mensagens, jogos, e clientes/jogadores de mídia). Em alguns exemplos, o sistema 702 está integrado como um dispositivo de computação, tal como um assistente digital pessoal integrado (PDA) e telefone sem fio.
[000123] Um ou mais programas de aplicação 766 podem estar carregados na memória 762 e executados no ou em associação com o sistema de operação 764. Exemplos dos programas de aplicação incluem programas de discador de telefone, programas de e-mail, programas de gerenciamento de informações pessoais (PIM), programas de processamento de palavra, programas de planilha, programas de browser de Internet, programas de mensagens, e assim por diante. O sistema 702 também inclui uma área de armazenamento não volátil 768 dentro da memória 762. A área de armazenamento não volátil 768 pode ser utilizada para armazenar informações persistentes que não devem ser perdidas se o sistema 702 for desligado. Os programas de aplicação 766 podem utilizar e armazenar informações na área de armazenamento não volátil 768, tal como e-mail ou outras mensagens utilizadas por uma aplicação de e-mail, e similares. Uma aplicação de sincronização (não mostrada) também reside no sistema 702 e está programada para interagir com uma aplicação de sincronização correspondente residente em um computador hospedeiro para manter as informações armazenadas na área de armazenamento não volátil 768 sincronizadas com informações correspondentes armazenadas no computador hospedeiro. Como deve ser apreciado, outras aplicações podem ser carregadas na memória 762 e executadas no dispositivo de computação móvel 700, incluindo a carga de trabalho 780 associada com o identificador de geração 782 aqui descritos.
[000124] O sistema 702 tem uma fonte de alimentação 770, a qual pode ser implementada como uma ou mais baterias. A fonte de alimentação 770 poderia ainda incluir uma fonte de energia externa, tal como um adaptador CA ou um berço de doca alimentado que suplementa ou recarrega as baterias.
[000125] O sistema 702 pode incluir uma porta de dispositivo periférico 778 que executa a função de facilitar a conectividade entre o sistema 702 e um ou mais dispositivos periféricos. As transmissões para a e da porta de dispositivo periférico 778 são conduzidas sob controle do sistema de operação 764. Em outras palavras, as comunicações recebidas pela porta de dispositivo periférico 778 podem ser disseminadas para os programas de aplicação 766 através do sistema de operação 764, e vice-versa.
[000126] O sistema 702 pode também incluir um rádio 772 que executa a função de transmitir e receber comunicações de frequência de rádio. O rádio 772 facilita conectividade sem fio entre o sistema 702 e o "mundo exterior", através de uma portadora de comunicações ou provedor de serviço. As transmissões para o e do rádio 772 são conduzidas sob controle do sistema de operação 764. Em outras palavras, as comunicações recebidas pelo rádio 772 podem ser disseminadas para os programas de aplicação 766 através do sistema de operação 764, e vice-versa.
[000127] O indicador visual 720 pode ser utilizado para prover notificações visuais, e/ou uma interface de áudio 774 pode ser utilizada para produzir notificações audíveis através do transdutor de rádio 725. No exemplo ilustrado, o indicador visual 720 é um diodo de emissão de luz (LED) e o transdutor de rádio 725 é um alto-falante. Estes dispositivos podem estar diretamente acoplados na fonte de alimentação 770 de modo que quando ativados, estes permanecem ligados por uma duração ditada pelo mecanismo de notificação mesmo que o processor 760 e outros componentes poderiam desligar para conservar energia de bateria. O LED pode estar programado para permanecer ligado indefinidamente até que o usuário toma a ação para indicar o status ligado do dispositivo. A interface de áudio 774 é utilizada para prover sinais audíveis para o e receber sinais audíveis do usuário. Por exemplo, além de ser acoplada no transdutor de rádio 725, a interface de áudio 774 pode também estar acoplada a um microfone par receber uma entrada audível, tal como para facilitar uma conversação telefônica. De acordo com exemplos da presente invenção, o microfone pode também servir como um sensor de rádio para facilitar o controle de notificações, como será abaixo descrito. O sistema 702 pode ainda incluir uma interface de vídeo 776 que permite uma operação de uma câmera a bordo 730 para gravar imagens paradas, fluxo de vídeo, e similares.
[000128] Um dispositivo de computação móvel 700 que implementa o sistema 702 pode ter características ou funcionalidades adicionais. Por exemplo, o dispositivo de computação móvel 700 pode também incluir dispositivos de armazenamento de dados adicionais (removíveis e/ou não removíveis) tais como, discos magnéticos, discos óticos, ou fita. Tal armazenamento adicional está ilustrado na Figura 7B pela área de armazenamento não volátil 768.
[000129] Dados/informações gerados ou capturados pelo dispositivo de computação móvel 700 e armazenados através do sistema 702 podem ser armazenados localmente no dispositivo de computação móvel 700, como acima descrito, ou os dados podem ser armazenados em qualquer número de meios de armazenamento que podem ser acessados pelo dispositivo através do rádio 772 ou através de uma conexão com fio entre o dispositivo de computação móvel 700 e um dispositivo de computação separado associado com o dispositivo de computação móvel 700, por exemplo, um computador servidor em uma rede de computação distribuída, tal como a Internet. Como deve ser apreciado tais dados/informações podem ser acessados através do dispositivo de computação móvel 700 através do rádio 772 ou através de uma rede de computação distribuída. Similarmente, tais dados/informações podem ser prontamente transferidos entre dispositivos de computação para armazenamento e utilização de acordo com meios de transferência e armazenamento de dados/informações, incluindo correio eletrônico e sistemas de compartilhamento de dados/informações colaborativos.
[000130] A Figura 8 ilustra um exemplo da arquitetura de um sistema para prover um grupamento que processa cargas de trabalho distribuídas e manipula falhas para um ou mais dispositivos de cliente, como acima descrito. Os dados-alvo acessados, interagidos, ou editados em associação com os nós 202, 204, 206, 208, 210, 212, ou 214 podem estar armazenados em diferentes canais de comunicação ou outros tipos de armazenamento. Por exemplo, vários documentos podem ser armazenados utilizando um serviço de diretório 822, um portal da web 824, um serviço de caixa de correio 826, um armazenamento de mensagens instantâneas 828, ou um site de rede social 830. Um nó processando uma carga de trabalho, por exemplo, o nó 210, pode utilizar qualquer um destes tipos de sistemas ou similares para permitir a utilização de dados, como aqui descrito. Um servidor 820 pode prover um sistema de armazenamento 216 para utilização pelos nós 208, 210, 212, e 214 que operam no dispositivo de computação geral 602 e dispositivo(s) móvel(is) 700 através da rede 815. Como exemplo, a rede 815 pode compreender a Internet ou qualquer outro tipo de rede de área local ou ampla, e os nós 202, 204, 206, 208, 210, 212, e 214 podem ser implementados como um dispositivo de computação 602 incorporado em um computador, um dispositivo de computação tablet, e/ou por um dispositivo de computação móvel 700 (por exemplo, um smartphone). Qualquer uma destas modalidades do dispositivo de computação de cliente 602 ou 700 pode obter conteúdo do armazenamento 816.
[000131] A presente descrição inclui um sistema que inclui pelo menos um processor; uma memória, operativamente conectada no pelo menos um processor e que contém instruções que, quando executadas por pelo menos um processador, executam um método, o método compreendendo: associar um primeiro identificador de geração e um primeiro identificador de carga de trabalho com uma primeira carga de trabalho; comunicar o primeiro identificador de geração, o primeiro identificador de carga de trabalho, e a primeira carga de trabalho a um primeiro nó; e durante uma falha de comunicação com o primeiro nó, gerar um segundo identificador de geração, associar o segundo identificador de geração com a primeira carga de trabalho, e comunicar o segundo identificador de geração, o primeiro identificador de carga de trabalho, e a primeira carga de trabalho para um segundo nó, em que o segundo identificador de geração comunica uma prioridade diferente do primeiro identificador de geração. Em exemplos, a falha de comunicação compreende pelo menos um de: uma desconexão, uma falha de hardware, ou uma reinicialização de um nó. Além disso, o segundo identificador de geração pode comunicar uma prioridade mais alta do que o primeiro identificador de geração. Em outros exemplos, o segundo identificador de geração pode comunicar uma prioridade mais baixa do que o primeiro identificador de geração. Em exemplos adicionais, os sistemas e métodos compreendem receber uma indicação de sucesso do segundo nó; gerar um terceiro identificador de geração que comunica uma prioridade mais alta do que o primeiro identificador de geração; associar o terceiro identificador de geração com a primeira carga de trabalho; e comunicar o terceiro identificador de geração para o segundo nó. Ainda, comunicar o segundo identificador de geração pode compreender enviar uma indicação que o segundo nó não deve interromper o primeiro nó se for determinado que o primeiro nó está ainda processando a primeira carga de trabalho. Além disso, em exemplos, os primeiro e segundo identificadores de geração estão, cada um, compreendidos de pelo menos duas subpartes, cada uma das pelo menos duas subpartes comunicando uma prioridade. Ainda, em exemplos, a prioridade comunicada por cada uma das pelo menos duas subpartes é ponderada de modo que uma indicação de prioridade por uma das pelo menos duas subpartes previne a prioridade indicada por outra subparte de pelo menos duas subpartes.
[000132] Entre outros exemplos, a presente descrição apresenta sistemas e métodos para receber uma primeira solicitação de acesso para dados-alvo, os dados-alvo armazenados por um sistema de armazenamento, e a primeira solicitação de acesso associada com um primeiro identificador de geração e um primeiro identificador de carga de trabalho; armazenar o primeiro identificador de geração e o primeiro identificador de carga de trabalho em um armazenamento persistente como um primeiro identificador de geração armazenado e um primeiro identificador de carga de trabalho armazenado; conceder a primeira solicitação de acesso para os dados-alvo; receber uma segunda solicitação de acesso para os dados-alvo, a segunda solicitação de acesso associada com um segundo identificador de geração e o primeiro identificador de carga de trabalho; comparar o segundo identificador de geração com o primeiro identificador de geração armazenado e o primeiro identificador de carga de trabalho com o primeiro identificador de carga de trabalho armazenado; determinar que o segundo identificador de geração indica uma prioridade mais alta do que o primeiro identificador de geração armazenado, e que o primeiro identificador de carga de trabalho coincide com o primeiro identificador de carga de trabalho armazenado; armazenar o segundo identificador de geração em armazenamento persistente como um segundo identificador de geração armazenado; conceder a segunda solicitação de acesso para os dados-alvo; receber uma terceira solicitação de acesso para os dados-alvo, a terceira solicitação de acesso associada com o primeiro identificador de geração e o primeiro identificador de carga de trabalho; determinar que o primeiro identificador de geração indica uma prioridade mais baixa do que o segundo identificador de geração armazenado e que o primeiro identificador de carga de trabalho coincide com o primeiro identificador de carga de trabalho armazenado; e negar a terceira solicitação de acesso para os dados-alvo. Em exemplos, a primeira solicitação de acesso e a terceira solicitação de acesso são recebidas de um primeiro nó e a segunda solicitação de acesso é recebida de um segundo nó, e negar a terceira solicitação de acesso para os dadosalvo compreende prover uma indicação para o primeiro nó que a primeira carga de trabalho foi reatribuída para o segundo nó. Em exemplos adicionais, negar a terceira solicitação de acesso compreende prover uma indicação que o primeiro identificador de geração indica uma prioridade mais baixa do que o segundo identificador de geração armazenado. Em exemplos adicionais, os sistemas e métodos compreendem receber uma quarta solicitação de acesso para os dados-alvo de um segundo nó, a quarta solicitação de acesso associada com um terceiro identificador de geração e o primeiro identificador de carga de trabalho, e compreendendo uma indicação que a solicitação é permissiva; determinar que o terceiro identificador de geração indica uma prioridade mais alta do que o segundo identificador de geração armazenado; determinar que o sistema de armazenamento pode ainda comunicar com o primeiro nó; e negar a quarta solicitação de acesso para os dados-alvo. Ainda, em exemplos, negar a quarta solicitação de acesso compreende prover uma indicação para o segundo nó que o sistema de armazenamento pode ainda comunicar com o primeiro nó. Em outros exemplos, os sistemas e métodos compreendem travar os dados-alvo quando concedendo a primeira solicitação de acesso; e após a conceder a segunda solicitação de acesso, liberar a trava sobre os dados-alvo e remover o primeiro identificador de geração armazenado do armazenamento persistente. Além disso, em exemplos, os primeiro, segundo, e terceiro identificadores de geração estão, cada um, compreendidos de pelo menos duas subpartes, cada uma das pelo menos duas subpartes comunicando uma prioridade. Ainda, a prioridade comunicada por cada uma das pelo menos duas subpartes pode ser ponderada de modo que uma indicação de prioridade por uma das pelo menos duas subpartes previne a prioridade indicada por outra subparte das pelo menos duas subpartes.
[000133] Descrições adicionais aqui descrevem sistemas e métodos para enviar uma primeira solicitação de acesso para dados-alvo para o sistema de armazenamento, a primeira solicitação de acesso associada com um primeiro identificador de geração e um primeiro identificador de carga de trabalho associada com uma primeira carga de trabalho que executa em um primeiro nó; receber uma primeira resposta de acesso que concede acesso para o dados-alvo; após receber a primeira resposta de acesso, enviar uma indicação para um segundo nó que o acesso aos dados-alvo foi concedido; receber um segundo identificador de geração para utilização em solicitações de acesso subsequentes; enviar uma segunda solicitação de acesso para dados-alvo para o sistema de armazenamento, a segunda solicitação de acesso associada com o segundo identificador de geração e o primeiro identificador de carga de trabalho; e receber uma segunda resposta de acesso que concede acesso para os dados-alvo. Em exemplos adicionais, os sistemas e métodos compreendem enviar uma terceira solicitação de acesso para dados-alvo para o sistema de armazenamento, a terceira solicitação de acesso associada com o segundo identificador de geração e o primeiro identificador de carga de trabalho; receber uma terceira resposta de acesso negando acesso aos dados-alvo e compreendendo uma indicação que o acesso aos dados-alvo para a primeira carga de trabalho foi reatribuído para um terceiro nó; e parar a execução da primeira carga de trabalho no primeiro nó como um resultado da terceira resposta de acesso recebida. Ainda, em exemplos, a primeira solicitação de acesso compreende uma indicação que a primeira solicitação de acesso é permissiva. Em outros exemplos, a terceira resposta de acesso é recebida após uma falha de comunicação entre o primeiro nó e o segundo nó.
[000134] Referência foi feita através de todo este relatório a "um exemplo" ou "o exemplo”, significando que um aspecto, estrutura, ou característica específico está incluído em pelo menos um exemplo. Assim, a utilização de tais frases pode referir a mais do que apenas um exemplo. Mais ainda, os aspectos, estruturas, ou características descritas podem ser combinados em qualquer modo adequado em um ou mais exemplos.
[000135] Alguém versado na técnica relevante pode reconhecer, no entanto, que os exemplos podem ser praticados sem um ou mais dos detalhes específicos, ou com outros métodos, recursos, materiais, etc. Em outros casos, estruturas, recursos, ou operações bem conhecidos não foram mostrados ou descritos em detalhes meramente para observar obscurecer aspectos dos exemplos.
Claims (20)
1. Sistema de redesignação de carga de trabalho distribuída após falha de comunicação caracterizado pelo fato de que compreende: pelo menos um processador; memória, conectada operativamente ao pelo menos um processador e contendo instruções que, quando executadas pelo processador, executa um método, o método compreendendo as etapas de: associar, por um nó mestre, um primeiro identificador de geração e um primeiro identificador de carga de trabalho com uma primeira carga de trabalho, em que o primeiro identificador de geração comunica uma prioridade inicial associada com um primeiro nó trabalhador; comunicar o primeiro identificador de geração, o primeiro identificador de carga de trabalho e a primeira carga de trabalho para o primeiro nó trabalhador; e durante uma falha de comunicação com o primeiro nó trabalhador, gerar um segundo identificador de geração, associar o segundo identificador de geração com a primeira carga de trabalho, e comunicar o segundo identificador de geração, o primeiro identificador de carga de trabalho e a primeira carga de trabalho para um segundo nó trabalhador, em que o segundo identificador de geração comunica uma prioridade diferente do primeiro identificador de geração.
2. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que a falha de comunicação compreende pelo menos um dentre: uma desconexão, uma falha de hardware ou uma reiniciação de um nó.
3. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que o segundo identificador de geração comunica uma prioridade mais alta que o primeiro identificador de geração.
4. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que o segundo identificador de geração comunica uma prioridade mais baixa que o primeiro identificador de geração.
5. Sistema, de acordo com a reivindicação 4, caracterizado pelo fato de que ainda compreende: receber uma indicação de sucesso do segundo nó trabalhador; gerar um terceiro identificador de geração comunicando uma prioridade mais alta que o primeiro identificador de geração; associar o terceiro identificador de geração com a primeira carga de trabalho; e comunicar o terceiro identificador de geração para o segundo nó trabalhador.
6. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que comunicar o segundo identificador de geração compreende enviar uma indicação de que o segundo nó trabalhador não deve interromper o primeiro nó trabalhador se for determinado que o primeiro nó trabalhador ainda está processando a primeira carga de trabalho.
7. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que os primeiro e segundo identificadores de geração são, cada um, compostos de pelo menos duas subpartes, cada uma das pelo menos duas subpartes comunicando uma prioridade.
8. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de que a prioridade comunicada por cada uma das pelo menos duas subpartes é ponderada de modo que uma indicação de prioridade por uma das pelo menos duas subpartes previna prioridade indicada por outra subparte dentre as pelo menos duas subpartes.
9. Método implementado por computador de redesignação de carga de trabalho distribuída após falha de comunicação caracterizado pelo fato de que compreende as etapas de: receber uma primeira solicitação de acesso para dadosalvo, os dados-alvo armazenados por um sistema de armazenamento, e a primeira solicitação de acesso associada com um primeiro identificador de geração e um primeiro identificador de carga de trabalho; armazenar o primeiro identificador de geração e o primeiro identificador de carga de trabalho no armazenamento persistente como um primeiro identificador de geração armazenado e um primeiro identificador de carga de trabalho armazenado; conceder a primeira solicitação de acesso para os dadosalvo; receber uma segunda solicitação de acesso para os dadosalvo, a segunda solicitação de acesso associada com um segundo identificador de geração e o primeiro identificador de carga de trabalho; comparar o segundo identificador de geração com o primeiro identificador de geração armazenado e o primeiro identificador de carga de trabalho com o primeiro identificador de carga de trabalho armazenado; determinar que o segundo identificador de geração indica uma prioridade mais alta do que o primeiro identificador de geração armazenado, e que o primeiro identificador de carga de trabalho coincide com o primeiro identificador de carga de trabalho armazenado; armazenar o segundo identificador de geração em armazenamento persistente como um segundo identificador de geração armazenado; conceder a segunda solicitação de acesso para os dados- alvo; receber uma terceira solicitação de acesso para os dadosalvo, a terceira solicitação de acesso associada com o primeiro identificador de geração e o primeiro identificador de carga de trabalho; determinar que o primeiro identificador de geração indica uma prioridade mais baixa do que o segundo identificador de geração armazenado e que o primeiro identificador de carga de trabalho coincide com o primeiro identificador de carga de trabalho armazenado; e negar a terceira solicitação de acesso para os dados-alvo.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que a primeira solicitação de acesso e a terceira solicitação de acesso são recebidas de um primeiro nó e a segunda solicitação de acesso é recebida de um segundo nó, e negar a terceira solicitação de acesso para os dados-alvo compreende fornecer uma indicação ao primeiro nó de que a primeira carga de trabalho foi reatribuída ao segundo nó.
11. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que negar a terceira solicitação de acesso compreende fornecer uma indicação de que o primeiro identificador de geração indica uma prioridade mais baixa que o segundo identificador de geração armazenado.
12. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que a terceira solicitação de acesso é recebida de um primeiro nó, e que o método compreende ainda: receber uma quarta solicitação de acesso para os dadosalvo de um segundo nó, a quarta solicitação de acesso associada com um terceiro identificador de geração e o primeiro identificador de carga de trabalho, e que compreende uma indicação de que a solicitação é permissiva; determinar que o terceiro identificador de geração indica uma prioridade mais alta do que o segundo identificador de geração armazenado; determinar que o sistema de armazenamento pode ainda comunicar com o primeiro nó; e negar a quarta solicitação de acesso para os dados-alvo.
13. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que negar a quarta solicitação de acesso compreende fornecer uma indicação ao segundo nó de que o sistema de armazenamento ainda pode comunicar com o primeiro nó.
14. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que ainda compreende: travar os dados-alvo quando concedida a primeira solicitação de acesso; e após conceder a segunda solicitação de acesso, liberar a trava sobre os dados-alvo e remover o primeiro identificador de geração armazenado do armazenamento persistente.
15. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que os primeiro, segundo, e terceiro identificadores de geração estão cada um compreendidos das pelo menos duas subpartes, cada uma das pelo menos duas subpartes comunicando uma prioridade.
16. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que a prioridade comunicada por cada uma das pelo menos duas subpartes é ponderada de modo que uma indicação de prioridade por uma das pelo menos duas subpartes previna a prioridade indicada por outra subparte das pelo menos duas subpartes.
17. Método implementado por computador de redesignação de carga de trabalho distribuída após falha de comunicação caracterizado pelo fato de que compreende as etapas de: enviar uma primeira solicitação de acesso para os dadosalvo a um sistema de armazenamento, a primeira solicitação de acesso associada com um primeiro identificador de geração e um primeiro identificador de carga de trabalho associado com uma primeira carga de trabalho executando em um primeiro nó; receber uma primeira resposta de acesso concedendo acesso aos dados-alvo; após receber a primeira resposta de acesso, enviar uma indicação a um segundo nó de que acesso aos dados-alvo foi concedido; receber um segundo identificador de geração para uso em solicitações de acesso subsequentes; enviar uma segunda solicitação de acesso para dados-alvo ao sistema de armazenamento, a segunda solicitação de acesso associada com um segundo identificador de geração e uma primeira carga de trabalho; e receber uma segunda resposta de acesso concedendo acesso aos dados-alvo.
18. Método, de acordo com a reivindicação 17, caracterizado pelo fato de que ainda compreende as etapas de: enviar uma terceira solicitação de acesso para dados-alvo ao sistema de armazenamento, a terceira solicitação de acesso associada com um segundo identificador de geração e um primeiro identificador de carga de trabalho; receber uma terceira resposta de acesso negando acesso aos dados-alvo e compreendendo uma indicação de que acesso aos dados-alvo para a primeira carga de trabalho foi reatribuído a um terceiro nó; e parar a execução da primeira carga de trabalho no primeiro nó como resultado da terceira resposta de acesso recebida.
19. Método, de acordo com a reivindicação 18, caracterizado pelo fato de que a terceira resposta de acesso é recebida após uma falha de comunicação entre o primeiro nó e o segundo nó
20. Método, de acordo com a reivindicação 17, caracterizado pelo fato de que a primeira solicitação de acesso compreende uma indicação de que a primeira solicitação de acesso é permissiva.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/457,842 | 2014-08-12 | ||
US14/457,842 US9847918B2 (en) | 2014-08-12 | 2014-08-12 | Distributed workload reassignment following communication failure |
PCT/US2015/044404 WO2016025354A1 (en) | 2014-08-12 | 2015-08-10 | Distributed workload reassignment following communication failure |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112017001850A2 BR112017001850A2 (pt) | 2017-11-21 |
BR112017001850B1 true BR112017001850B1 (pt) | 2023-04-11 |
Family
ID=53836912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112017001850-0A BR112017001850B1 (pt) | 2014-08-12 | 2015-08-10 | Sistema e método implementado por computador de redesignação de carga de trabalho distribuída após falha de comunicação |
Country Status (7)
Country | Link |
---|---|
US (4) | US9847918B2 (pt) |
EP (1) | EP3180694B1 (pt) |
JP (1) | JP6654183B2 (pt) |
CN (1) | CN106575245B (pt) |
BR (1) | BR112017001850B1 (pt) |
RU (1) | RU2701094C2 (pt) |
WO (1) | WO2016025354A1 (pt) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9665432B2 (en) | 2014-08-07 | 2017-05-30 | Microsoft Technology Licensing, Llc | Safe data access following storage failure |
US9847918B2 (en) | 2014-08-12 | 2017-12-19 | Microsoft Technology Licensing, Llc | Distributed workload reassignment following communication failure |
US9703830B2 (en) * | 2014-10-09 | 2017-07-11 | International Business Machines Corporation | Translation of a SPARQL query to a SQL query |
US10055164B2 (en) * | 2016-09-07 | 2018-08-21 | Sandisk Technologies Llc | Data storage at an access device |
US10069597B2 (en) * | 2016-09-07 | 2018-09-04 | Western Digital Technologies, Inc. | Aggregated metadata transfer at a data storage device |
US11054887B2 (en) * | 2017-12-28 | 2021-07-06 | Advanced Micro Devices, Inc. | System-wide low power management |
CN110324375B (zh) * | 2018-03-29 | 2020-12-04 | 华为技术有限公司 | 一种信息备份方法及相关设备 |
CN110119400B (zh) * | 2019-04-04 | 2021-07-20 | 上海易点时空网络有限公司 | 适用于逻辑运算的唯一标识生成方法及装置 |
US11847012B2 (en) * | 2019-06-28 | 2023-12-19 | Intel Corporation | Method and apparatus to provide an improved fail-safe system for critical and non-critical workloads of a computer-assisted or autonomous driving vehicle |
US20230169483A1 (en) * | 2021-11-26 | 2023-06-01 | Paypal, Inc. | Decentralized transaction processing |
US12056035B2 (en) * | 2022-01-13 | 2024-08-06 | Dell Products L.P. | System and method for enhanced container deployment |
CN114826905A (zh) * | 2022-03-31 | 2022-07-29 | 西安超越申泰信息科技有限公司 | 一种下层节点切换管理服务的方法、系统、设备及介质 |
US20240022609A1 (en) * | 2023-03-31 | 2024-01-18 | Ned M. Smith | Security and resiliency for cloud to edge deployments |
Family Cites Families (140)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1229091A (en) | 1916-08-30 | 1917-06-05 | X Ray Incubator Company | Gas and smoke sealing device for incubators. |
JPH04271454A (ja) | 1991-02-27 | 1992-09-28 | Toshiba Corp | 疎結合計算機システム |
JPH06301655A (ja) | 1993-04-14 | 1994-10-28 | Hitachi Ltd | 分散処理システム |
US5625817A (en) | 1995-02-28 | 1997-04-29 | Bmc Software, Inc. | Method of identifying DB2 objects to be recovered from an unavailable DASD volume without need to access the DASD volume itself and without need for pre-failure preparation |
JPH10133971A (ja) | 1996-10-25 | 1998-05-22 | Nec Corp | ファイル転送処理方式 |
US6442533B1 (en) * | 1997-10-29 | 2002-08-27 | William H. Hinkle | Multi-processing financial transaction processing system |
US6178529B1 (en) * | 1997-11-03 | 2001-01-23 | Microsoft Corporation | Method and system for resource monitoring of disparate resources in a server cluster |
JP4040178B2 (ja) | 1998-07-21 | 2008-01-30 | キヤノン株式会社 | 通信制御装置、通信制御方法、および、記憶媒体 |
US6301676B1 (en) | 1999-01-22 | 2001-10-09 | Sun Microsystems, Inc. | Robust and recoverable interprocess locks |
US6757289B1 (en) * | 1999-04-23 | 2004-06-29 | Nortel Networks Limited | Apparatus and method for managing communication between a failed application and other executing applications |
US6539446B1 (en) | 1999-05-07 | 2003-03-25 | Oracle Corporation | Resource locking approach |
US6574749B1 (en) | 1999-10-29 | 2003-06-03 | Nortel Networks Limited | Reliable distributed shared memory |
US7587327B2 (en) * | 2000-03-31 | 2009-09-08 | Ventyx Software Srl. | Order scheduling system and method for scheduling appointments over multiple days |
WO2001077844A1 (fr) | 2000-04-10 | 2001-10-18 | Fujitsu Limited | Systeme de traitement d'informations et serveur associe |
US6564229B1 (en) | 2000-06-08 | 2003-05-13 | International Business Machines Corporation | System and method for pausing and resuming move/copy operations |
FR2820874B1 (fr) | 2001-02-13 | 2003-05-30 | St Microelectronics Sa | Procede de gestion a acces aleatoire et rapide d'une memoire dram |
WO2002001838A2 (en) * | 2000-06-26 | 2002-01-03 | Kpmg Consulting, Inc. | Using a pseudo-clec to test operational support systems of an incumbent local exchange carrier |
US6990606B2 (en) | 2000-07-28 | 2006-01-24 | International Business Machines Corporation | Cascading failover of a data management application for shared disk file systems in loosely coupled node clusters |
US7120697B2 (en) * | 2001-05-22 | 2006-10-10 | International Business Machines Corporation | Methods, systems and computer program products for port assignments of multiple application instances using the same source IP address |
US7191442B2 (en) * | 2000-10-30 | 2007-03-13 | Research Investment Network, Inc. | BCA writer serialization management |
US7711831B2 (en) * | 2001-05-22 | 2010-05-04 | International Business Machines Corporation | Methods, systems and computer program products for source address selection |
US6839662B2 (en) * | 2001-08-17 | 2005-01-04 | Lockheed Martin Corporation | Command and control system architecture for convenient upgrading |
US7093004B2 (en) * | 2002-02-04 | 2006-08-15 | Datasynapse, Inc. | Using execution statistics to select tasks for redundant assignment in a distributed computing platform |
US7904360B2 (en) * | 2002-02-04 | 2011-03-08 | Alexander William EVANS | System and method for verification, authentication, and notification of a transaction |
JP4176359B2 (ja) | 2002-03-01 | 2008-11-05 | 株式会社エヌ・ティ・ティ・ドコモ | データ取得方法、中継装置、プログラムおよび記録媒体 |
US6732171B2 (en) | 2002-05-31 | 2004-05-04 | Lefthand Networks, Inc. | Distributed network storage system with virtualization |
US20050144189A1 (en) * | 2002-07-19 | 2005-06-30 | Keay Edwards | Electronic item management and archival system and method of operating the same |
US7159211B2 (en) * | 2002-08-29 | 2007-01-02 | Indian Institute Of Information Technology | Method for executing a sequential program in parallel with automatic fault tolerance |
US7254687B1 (en) | 2002-12-16 | 2007-08-07 | Cisco Technology, Inc. | Memory controller that tracks queue operations to detect race conditions |
US7284151B2 (en) | 2003-07-21 | 2007-10-16 | Oracle International Corporation | Conditional data access after database system failure |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
US20050165881A1 (en) * | 2004-01-23 | 2005-07-28 | Pipelinefx, L.L.C. | Event-driven queuing system and method |
US8543781B2 (en) | 2004-02-06 | 2013-09-24 | Vmware, Inc. | Hybrid locking using network and on-disk based schemes |
US7818444B2 (en) * | 2004-04-30 | 2010-10-19 | Move Networks, Inc. | Apparatus, system, and method for multi-bitrate content streaming |
JP4633735B2 (ja) | 2004-05-13 | 2011-02-16 | パナソニック株式会社 | 情報処理装置、集積回路、データ転送制御方法、データ転送制御用プログラム、プログラム記録媒体、プログラム伝送媒体、及びデータ記録媒体 |
US20050268300A1 (en) * | 2004-05-14 | 2005-12-01 | Microsoft Corporation | Distributed task scheduler for computing environments |
US7145450B2 (en) * | 2004-05-28 | 2006-12-05 | Brown William J | Compactor service and monitoring system |
US11049349B2 (en) * | 2004-06-01 | 2021-06-29 | Daniel William Onischuk | Computerized voting system |
US8023417B2 (en) * | 2004-08-30 | 2011-09-20 | International Business Machines Corporation | Failover mechanisms in RDMA operations |
US7979862B2 (en) * | 2004-12-21 | 2011-07-12 | Hewlett-Packard Development Company, L.P. | System and method for replacing an inoperable master workload management process |
US7962915B2 (en) | 2005-03-18 | 2011-06-14 | International Business Machines Corporation | System and method for preserving state for a cluster of data servers in the presence of load-balancing, failover, and fail-back events |
CA2504333A1 (en) * | 2005-04-15 | 2006-10-15 | Symbium Corporation | Programming and development infrastructure for an autonomic element |
US9418040B2 (en) * | 2005-07-07 | 2016-08-16 | Sciencelogic, Inc. | Dynamically deployable self configuring distributed network management system |
US7688794B2 (en) * | 2005-12-13 | 2010-03-30 | Xerox Corporation | System and method for diverting a printing job to a proximal networked device |
US20110010518A1 (en) * | 2005-12-19 | 2011-01-13 | Srinivas Kavuri | Systems and Methods for Migrating Components in a Hierarchical Storage Network |
TWI386846B (zh) | 2006-03-30 | 2013-02-21 | Silicon Image Inc | 利用共享式非揮發性記憶體初始化多個處理元件之方法、系統及快閃記憶體元件 |
EP2097874A4 (en) * | 2006-11-15 | 2011-05-04 | Depth Analysis Pty Ltd | SYSTEMS AND METHODS FOR MANAGING THE PRODUCTION OF ANIMATION BASED ON FREE-VIEWING VIDEO |
US7444459B2 (en) * | 2006-12-12 | 2008-10-28 | Lsi Logic Corporation | Methods and systems for load balancing of virtual machines in clustered processors using storage related load information |
JP5018133B2 (ja) * | 2007-02-27 | 2012-09-05 | 富士通株式会社 | ジョブ管理装置、クラスタシステム、およびジョブ管理プログラム |
US8453142B2 (en) | 2007-04-26 | 2013-05-28 | Hewlett-Packard Development Company, L.P. | Virtual machine control |
US8180747B2 (en) | 2007-11-12 | 2012-05-15 | F5 Networks, Inc. | Load sharing cluster file systems |
US8326910B2 (en) * | 2007-12-28 | 2012-12-04 | International Business Machines Corporation | Programmatic validation in an information technology environment |
US8365185B2 (en) * | 2007-12-28 | 2013-01-29 | International Business Machines Corporation | Preventing execution of processes responsive to changes in the environment |
US20090234643A1 (en) * | 2008-03-14 | 2009-09-17 | Afifi Sammy S | Transcription system and method |
US8259910B2 (en) * | 2008-03-14 | 2012-09-04 | Voicecloud | Method and system for transcribing audio messages |
US10372924B2 (en) * | 2008-05-12 | 2019-08-06 | George Madathilparambil George | Master device for controlling application security environments |
US7840730B2 (en) | 2008-06-27 | 2010-11-23 | Microsoft Corporation | Cluster shared volumes |
US8281023B2 (en) * | 2008-11-14 | 2012-10-02 | Qualcomm Incorporated | Systems and methods for data authorization in distributed storage networks |
JP5223707B2 (ja) * | 2009-02-05 | 2013-06-26 | 富士通株式会社 | ソフトウェア更新指示プログラム、ソフトウェア更新指示方法、および情報処理装置 |
US8914511B1 (en) | 2009-06-26 | 2014-12-16 | VMTurbo, Inc. | Managing resources in virtualization systems |
US9021158B2 (en) | 2009-09-09 | 2015-04-28 | SanDisk Technologies, Inc. | Program suspend/resume for memory |
US8458500B2 (en) | 2009-11-30 | 2013-06-04 | International Business Machines Corporation | Server allocation to workload based on energy profiles |
US8355713B1 (en) | 2010-01-21 | 2013-01-15 | Sprint Spectrum L.P. | Use of femtocell to control wireless communication device priorities |
US8572612B2 (en) | 2010-04-14 | 2013-10-29 | International Business Machines Corporation | Autonomic scaling of virtual machines in a cloud computing environment |
JP4951092B2 (ja) | 2010-06-03 | 2012-06-13 | 株式会社東芝 | アクセス制御プログラム及び装置 |
US9329947B2 (en) | 2010-06-22 | 2016-05-03 | Red Hat Israel, Ltd. | Resuming a paused virtual machine without restarting the virtual machine |
US8566640B2 (en) | 2010-07-19 | 2013-10-22 | Veeam Software Ag | Systems, methods, and computer program products for instant recovery of image level backups |
US8631277B2 (en) | 2010-12-10 | 2014-01-14 | Microsoft Corporation | Providing transparent failover in a file system |
US8879382B2 (en) | 2010-12-30 | 2014-11-04 | Juniper Networks, Inc. | Partial failure messaging |
US8713365B2 (en) | 2011-01-28 | 2014-04-29 | Microsoft Corporation | Re-establishing push notification channels via user identifiers |
US8364888B2 (en) | 2011-02-03 | 2013-01-29 | Stec, Inc. | Erase-suspend system and method |
US9003104B2 (en) * | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US10108630B2 (en) | 2011-04-07 | 2018-10-23 | Microsoft Technology Licensing, Llc | Cluster unique identifier |
US8745434B2 (en) * | 2011-05-16 | 2014-06-03 | Microsoft Corporation | Platform for continuous mobile-cloud services |
US20120303654A1 (en) | 2011-05-26 | 2012-11-29 | James Michael Ferris | Methods and systems to automatically extract and transport data associated with workload migrations to cloud networks |
US8769537B1 (en) * | 2011-06-08 | 2014-07-01 | Workday, Inc. | System for partitioning batch processes |
US8856582B2 (en) | 2011-06-30 | 2014-10-07 | Microsoft Corporation | Transparent failover |
US8490092B2 (en) | 2011-07-06 | 2013-07-16 | Microsoft Corporation | Combined live migration and storage migration using file shares and mirroring |
KR20130022091A (ko) | 2011-08-24 | 2013-03-06 | 주식회사 케이티 | 클라우드 컴퓨팅 서버 시스템의 가상머신 제어 장치 및 방법 |
US20130067095A1 (en) | 2011-09-09 | 2013-03-14 | Microsoft Corporation | Smb2 scaleout |
US8788579B2 (en) | 2011-09-09 | 2014-07-22 | Microsoft Corporation | Clustered client failover |
US20130066674A1 (en) * | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Marketplace for timely event data distribution |
US8595322B2 (en) * | 2011-09-12 | 2013-11-26 | Microsoft Corporation | Target subscription for a notification distribution system |
US20130067024A1 (en) * | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Distributing multi-source push notifications to multiple targets |
US8694462B2 (en) * | 2011-09-12 | 2014-04-08 | Microsoft Corporation | Scale-out system to acquire event data |
US9208476B2 (en) * | 2011-09-12 | 2015-12-08 | Microsoft Technology Licensing, Llc | Counting and resetting broadcast system badge counters |
US9804928B2 (en) * | 2011-11-14 | 2017-10-31 | Panzura, Inc. | Restoring an archived file in a distributed filesystem |
US20130159487A1 (en) * | 2011-12-14 | 2013-06-20 | Microsoft Corporation | Migration of Virtual IP Addresses in a Failover Cluster |
US9154367B1 (en) * | 2011-12-27 | 2015-10-06 | Google Inc. | Load balancing and content preservation |
ES2827192T3 (es) * | 2012-02-08 | 2021-05-20 | Omron Tateisi Electronics Co | Sistema de gestión de tareas para una flota de robots móviles autónomos |
JP5948933B2 (ja) * | 2012-02-17 | 2016-07-06 | 日本電気株式会社 | ジョブ継続管理装置、ジョブ継続管理方法、及び、ジョブ継続管理プログラム |
US9405005B1 (en) * | 2012-04-24 | 2016-08-02 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Automatic dependent surveillance broadcast (ADS-B) system for ownership and traffic situational awareness |
US8918672B2 (en) | 2012-05-31 | 2014-12-23 | International Business Machines Corporation | Maximizing use of storage in a data replication environment |
US9223626B2 (en) * | 2012-08-30 | 2015-12-29 | International Business Machines Corporation | Task execution and management in a clustered computing environment |
CA2883659C (en) | 2012-08-31 | 2020-06-23 | Bce Inc. | Ip mpls pop virtualization and fault tolerant virtual router |
US9304878B2 (en) | 2012-10-11 | 2016-04-05 | Vmware, Inc. | Providing multiple IO paths in a virtualized environment to support for high availability of virtual machines |
US9135049B2 (en) | 2012-10-16 | 2015-09-15 | Red Hat Israel, Ltd. | Performing thin-provisioning operations on virtual disk images using native features of the storage domain |
US9635088B2 (en) * | 2012-11-26 | 2017-04-25 | Accenture Global Services Limited | Method and system for managing user state for applications deployed on platform as a service (PaaS) clouds |
US9355060B1 (en) * | 2012-12-14 | 2016-05-31 | Amazon Technologies, Inc. | Storage service lifecycle policy transition management |
US9658983B1 (en) * | 2012-12-14 | 2017-05-23 | Amazon Technologies, Inc. | Lifecycle support for storage objects having multiple durability levels specifying different numbers of versions |
US9727522B1 (en) * | 2012-12-14 | 2017-08-08 | Amazon Technologies, Inc. | Multi-tenant storage service object lifecycle management using transition job objects |
RU2543316C2 (ru) * | 2012-12-25 | 2015-02-27 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ отказоустойчивого выполнения задач по расписанию в распределенных средах |
US20140201292A1 (en) | 2013-01-17 | 2014-07-17 | Icon.me, LLC | Digital business card system performing social networking commonality comparisions, professional profile curation and personal brand management |
US20140214801A1 (en) * | 2013-01-29 | 2014-07-31 | Vito Anthony Ciliberti, III | System and Method for Enterprise Asset Management and Failure Reporting |
US9779038B2 (en) | 2013-01-31 | 2017-10-03 | Apple Inc. | Efficient suspend-resume operation in memory devices |
US9071677B2 (en) * | 2013-02-12 | 2015-06-30 | Unify Square, Inc. | Enhanced data capture, analysis, and reporting for unified communications |
US9338055B2 (en) * | 2013-03-15 | 2016-05-10 | Cisco Technology, Inc. | Virtual router upgrade via graceful restart |
US9202591B2 (en) | 2013-05-10 | 2015-12-01 | Omnivision Technologies, Inc. | On-line memory testing systems and methods |
US8706798B1 (en) * | 2013-06-28 | 2014-04-22 | Pepperdata, Inc. | Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system |
US10310903B2 (en) * | 2014-01-17 | 2019-06-04 | Red Hat, Inc. | Resilient scheduling of broker jobs for asynchronous tasks in a multi-tenant platform-as-a-service (PaaS) system |
US9813516B2 (en) * | 2014-02-18 | 2017-11-07 | Salesforce.Com, Inc. | Transparent sharding of traffic across messaging brokers |
US20150263900A1 (en) * | 2014-03-11 | 2015-09-17 | Schlumberger Technology Corporation | High performance distributed computing environment particularly suited for reservoir modeling and simulation |
US9495478B2 (en) * | 2014-03-31 | 2016-11-15 | Amazon Technologies, Inc. | Namespace management in distributed storage systems |
US9482683B2 (en) * | 2014-04-22 | 2016-11-01 | Wipro Limited | System and method for sequential testing across multiple devices |
US10608784B2 (en) * | 2016-03-15 | 2020-03-31 | ClineHair Commercial Endeavors | Distributed storage system data management and security |
US9665432B2 (en) | 2014-08-07 | 2017-05-30 | Microsoft Technology Licensing, Llc | Safe data access following storage failure |
US9847918B2 (en) * | 2014-08-12 | 2017-12-19 | Microsoft Technology Licensing, Llc | Distributed workload reassignment following communication failure |
US11290524B2 (en) * | 2014-08-13 | 2022-03-29 | Microsoft Technology Licensing, Llc | Scalable fault resilient communications within distributed clusters |
US10102086B2 (en) * | 2014-12-19 | 2018-10-16 | Futurewei Technologies, Inc. | Replicated database distribution for workload balancing after cluster reconfiguration |
JP6413789B2 (ja) * | 2015-01-22 | 2018-10-31 | 富士通株式会社 | ジョブ管理プログラム、ジョブ管理方法及びジョブ管理装置 |
US9692729B1 (en) * | 2015-02-18 | 2017-06-27 | Amazon Technologies, Inc. | Graceful migration of isolated virtual network traffic |
US9563514B2 (en) * | 2015-06-19 | 2017-02-07 | Commvault Systems, Inc. | Assignment of proxies for virtual-machine secondary copy operations including streaming backup jobs |
US10084873B2 (en) * | 2015-06-19 | 2018-09-25 | Commvault Systems, Inc. | Assignment of data agent proxies for executing virtual-machine secondary copy operations including streaming backup jobs |
WO2017023259A1 (en) * | 2015-07-31 | 2017-02-09 | AppDynamics, Inc. | Quorum based distributed anomaly detection and repair |
US9928108B1 (en) * | 2015-09-29 | 2018-03-27 | Amazon Technologies, Inc. | Metaevent handling for on-demand code execution environments |
US11831682B2 (en) * | 2015-10-28 | 2023-11-28 | Qomplx Llc | Highly scalable distributed connection interface for data capture from multiple network service and cloud-based sources |
US10140206B2 (en) * | 2015-11-17 | 2018-11-27 | Proov Systems Ltd. | Computerized method and end-to-end “pilot as a service” system for controlling start-up/enterprise interactions |
US9952942B2 (en) * | 2016-02-12 | 2018-04-24 | Bank Of America Corporation | System for distributed data processing with auto-recovery |
US10067869B2 (en) * | 2016-02-12 | 2018-09-04 | Bank Of America Corporation | System for distributed data processing with automatic caching at various system levels |
US10402728B2 (en) * | 2016-04-08 | 2019-09-03 | The Aerospace Corporation | Systems and methods for multi-objective heuristics with conditional genes |
US11218418B2 (en) * | 2016-05-20 | 2022-01-04 | Nutanix, Inc. | Scalable leadership election in a multi-processing computing environment |
WO2018170276A2 (en) * | 2017-03-15 | 2018-09-20 | Fauna, Inc. | Methods and systems for a database |
US20190089773A1 (en) * | 2017-09-20 | 2019-03-21 | Illumio, Inc. | Segmentation server cluster for managing a segmentation policy |
US10754720B2 (en) * | 2018-09-26 | 2020-08-25 | International Business Machines Corporation | Health check diagnostics of resources by instantiating workloads in disaggregated data centers |
US11042416B2 (en) * | 2019-03-06 | 2021-06-22 | Google Llc | Reconfigurable computing pods using optical networks |
US11122347B2 (en) * | 2019-07-01 | 2021-09-14 | Google Llc | Reconfigurable computing pods using optical networks with one-to-many optical switches |
US20210014177A1 (en) * | 2020-09-26 | 2021-01-14 | Intel Corporation | Deterministic packet scheduling and dma for time sensitive networking |
US20220108167A1 (en) * | 2020-10-07 | 2022-04-07 | Commvault Systems, Inc. | Artificial intelligence-based information management system performance metric prediction |
US20220276901A1 (en) * | 2021-02-26 | 2022-09-01 | Capital One Services, Llc | Batch processing management |
US11645215B2 (en) * | 2021-06-11 | 2023-05-09 | International Business Machines Corporation | Efficient selection of a particular processor thread for handling an interrupt |
-
2014
- 2014-08-12 US US14/457,842 patent/US9847918B2/en active Active
-
2015
- 2015-08-10 WO PCT/US2015/044404 patent/WO2016025354A1/en active Application Filing
- 2015-08-10 CN CN201580043214.XA patent/CN106575245B/zh active Active
- 2015-08-10 EP EP15750601.5A patent/EP3180694B1/en active Active
- 2015-08-10 JP JP2017503008A patent/JP6654183B2/ja active Active
- 2015-08-10 BR BR112017001850-0A patent/BR112017001850B1/pt active IP Right Grant
- 2015-08-10 RU RU2017104219A patent/RU2701094C2/ru active
-
2017
- 2017-12-04 US US15/831,238 patent/US11228510B2/en active Active
-
2021
- 2021-12-07 US US17/544,170 patent/US11882011B2/en active Active
-
2024
- 2024-01-02 US US18/402,400 patent/US20240137295A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US9847918B2 (en) | 2017-12-19 |
JP6654183B2 (ja) | 2020-02-26 |
EP3180694A1 (en) | 2017-06-21 |
US20180198691A1 (en) | 2018-07-12 |
CN106575245A (zh) | 2017-04-19 |
US20220166690A1 (en) | 2022-05-26 |
US11228510B2 (en) | 2022-01-18 |
US20160050294A1 (en) | 2016-02-18 |
RU2701094C2 (ru) | 2019-09-24 |
US20240137295A1 (en) | 2024-04-25 |
EP3180694B1 (en) | 2021-06-09 |
JP2017530437A (ja) | 2017-10-12 |
US11882011B2 (en) | 2024-01-23 |
CN106575245B (zh) | 2020-12-08 |
BR112017001850A2 (pt) | 2017-11-21 |
WO2016025354A1 (en) | 2016-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112017001850B1 (pt) | Sistema e método implementado por computador de redesignação de carga de trabalho distribuída após falha de comunicação | |
US10545831B2 (en) | Safe data access following storage failure | |
AU2012304549B2 (en) | Clustered client failover | |
US7536426B2 (en) | Hybrid object placement in a distributed storage system | |
US20090328180A1 (en) | Granting Least Privilege Access For Computing Processes | |
US9372879B1 (en) | Balanced append tree data structure | |
WO2018120810A1 (zh) | 一种解决数据冲突的方法和系统 | |
US9590839B2 (en) | Controlling access to a shared storage system | |
US12032857B2 (en) | System and method for shallow copy |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B06A | Patent application procedure suspended [chapter 6.1 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 10/08/2015, OBSERVADAS AS CONDICOES LEGAIS |