BRPI1016200B1 - método para adicionar um nó a uma coleção de nós computacionais e método para a remoção de um nó de saída de uma coleção de nós de computação - Google Patents

método para adicionar um nó a uma coleção de nós computacionais e método para a remoção de um nó de saída de uma coleção de nós de computação Download PDF

Info

Publication number
BRPI1016200B1
BRPI1016200B1 BRPI1016200-3A BRPI1016200A BRPI1016200B1 BR PI1016200 B1 BRPI1016200 B1 BR PI1016200B1 BR PI1016200 A BRPI1016200 A BR PI1016200A BR PI1016200 B1 BRPI1016200 B1 BR PI1016200B1
Authority
BR
Brazil
Prior art keywords
node
nodes
key
collection
data
Prior art date
Application number
BRPI1016200-3A
Other languages
English (en)
Inventor
Jean Noel Moyne
Suresh Subramani
Tom M. Kim
Original Assignee
Tibco Software Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tibco Software Inc filed Critical Tibco Software Inc
Publication of BRPI1016200A2 publication Critical patent/BRPI1016200A2/pt
Publication of BRPI1016200B1 publication Critical patent/BRPI1016200B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

DISTRIBUIÇÃO DE ESTRUTURA DE ARMAZENAMENTO BASEADO EM DIRETIVA. O armazenamento e a remoção baseados em diretiva combinados a um algoritmo de distribuição resultam em uma distribuição automática e uniforme de estruturas de armazenamento baseado em diretiva por um conjunto de nós e hospedagem ou propriedade automatizado dinâmico de estruturas de armazenamento baseado em diretiva. Grandes números de estruturas de armazenamento baseado em diretivas podem ser distribuídos sem a administração manual, permitindo a criação e a destruição rápidas de estruturas de armazenamento. A carga geral pode ser distribuída e equilibrada pela pool de servidores. Múltiplas entradas que têm o mesmo valor de chave em uma base de dados- ou estrutura similar à tabela permitem a distribuição de armazenamento baseado em diretiva e a remoção por valor de chave e para semânticas de fila a serem utilizados por microfilas na base de dados grande ou estrutura similar a tabela.

Description

CAMPO TÉCNICO ANTECEDENTES
[0001] As modalidades reveladas se referem de forma geral a estruturas de armazenamento de distribuição e, mais especificamente, a estruturas de armazenamento baseadas em diretiva de distribuição através de múltiplos servidores.
ANTECEDENTES
[0002] Uma base de dados consiste de uma quantidade de linhas de dados com cada linha dividida em colunas ou campos. Um campo, tipicamente, e designado como o campo chave. Em uma estrutura de base de dados, cada chave deve ser única. As chaves podem ser geradas automaticamente pela base de dados conforme novos dados são inseridos por um usuário, mas o usuário também gera chaves e as inclui com os dados inseridos. Se um usuário tentar adicionar dados específicos a uma chave já em uso, resulta em um erro. Por exemplo, os novos dados podem sobrescrever os dados já associados com aquela chave.
[0003] Com as abordagens tradicionais, distribuição de dados em uma base de dados sobre um conjunto de servidores é feita manualmente ou a mão. Por exemplo, em um contexto bancário, uma base de dados pode incluir dados bancários, transações pendentes, e outras informações bancárias. Os clientes de um banco têm uma conta bancária com um número de conta bancaria. A qualquer momento, inúmeras operações podem ser realizadas em cada conta. Cada parte dos dados, cada transação a ser realizada ou cada operação pendente é associada a um número de conta (uma chave). Se essas operações forem armazenadas em uma estrutura de base de Petição 870190123250, de 25/11/2019, pág. 9/14 dados normal, com uso do número de conta como a chave, somente uma parte das informações poderia ser associada àquele número de conta em qualquer momento. Devido ao fato de que somente uma entrada por chave é permitida em uma base de dados, quando múltiplas transações estão pendentes para o mesmo número de conta, um problema surge e pode resultar em erros. Se mais que uma operação estiver sendo realizada em uma conta, então uma fila pode ser mantida para aquele número de conta. Com um grande número de contas, um único servidor pode não ser capaz de lidar com todos os dados e filas para cada conta. Como resultado, as contas e filas de conta devem ser distribuídas sobre um conjunto de servidores. Tal tarefa é dificil e enfadonha de gerenciar. Adicionar ou retirar servidores somente adicionar complexidade de gerenciamento, já que as filas e dados devem ser rebalanceados pelo conjunto de servidores. Isto pode equivaler a centenas de milhares de filas que precisam ser manualmente balanceadas ou alojadas por um conjunto de servidores de mensagem. Em qualquer contexto (bancário ou outro) que inclui uma grande base de dados com múltiplas entradas potenciais, transações ou operações por chave, filas podem ser criadas para cada chave tendo múltiplas entradas. Tal sistema é dificil de gerenciais já que é dificil manualmente programar tal número grande de filas. A programação não é mecanizada e é ineficiente. Em adição, quando os servidores entram ou saem os agrupamento de servidor, ainda mais complexidade é introduzida, já que um gerenciador deve então recalcular e redistribuir os dados e transações pendentes por um novo conjunto de servidores.
BREVE SUMÁRIO
Esta revelação se refere a uma estrutura de dados que permite múltiplas entradas por chave. Em uma modalidade, a estrutura de dados pode parecer uma tabela de pequenas filas ou uma tabela de microfilas em que cada entrada de microfila tem a mesma chave.
Esta revelação também se refere à distribuição mecanizada de filas por um conjunto de servidores por mapeamento de certos valores de chave para certos nós ou agrupamentos de servidor. Em uma modalidade, espalhamento consistente é usado para determinar a distribuição de filas pelo conjunto de servidores.
Esta revelação também se refere à adição e remoção mecanizada e eficiente de nós de um conjunto de servidores. Em uma modalidade, o espalhamento consistente pode ser usado para adicionar e remover nós de um conjunto de servidores.
Esta revelação também se refere a implantar arquitetura de armazenamento tolerante a falhas distribuída. Em uma modalidade, o espalhamento consistente pode ser usado para fornecer tolerância a falhas distribuída paralela.
BREVE DESCRIÇÃO DOS DESENHOS
As modalidades são ilustradas por meio de exemplos nas figuras anexas, em que números de referência similares indicam partes similares e em que: A FIGURA 1 é um diagrama esquemático que ilustra um algoritmo de espalhamento consistente, em concordância com a presente revelação; As figuras 2A-2E são diagramas esquemáticos que ilustram espaços e estruturas de dados, de acordo com a presente descrição; A figura 3 é um diagrama esquemático que ilustra a distribuição mecanizada de filas, de acordo com a presente descrição; A figura 4 é um diagrama esquemático que ilustra o uso de um algoritmo de espalhamento consistente para a distribuição mecanizada de filas, de acordo com a presente descrição; A figura 5 A é um diagrama esquemático que ilustra a adição de um servidor ou nó, de acordo com a presente descrição; A figura 5B é um diagrama esquemático que ilustra a remoção de um servidor ou nó, de acordo com a presente descrição; A figura 5C é uma tabela que ilustra a remoção de situações de servidor ou nó, de acordo com a presente descrição; A figura 6 A é um diagrama esquemático que ilustra a replicação de dados, de acordo com a presente descrição; A figura 6B é um diagrama esquemático que ilustra a tolerância a falhas distribuída, de acordo com a presente descrição; A figura 7 é um diagrama esquemático que ilustra um armazenamento de dados localizado em um sistema de computador, de acordo com a presente descrição; e As figuras 8a a 8C são diagramas esquemáticos que ilustram módulos para mapear nós e valores de chave.
DESCRIÇÃO DETALHADA
Esta descrição propõe um armazenamento e recuperação baseado em diretiva em combinação com um algoritmo de distribuição. O resultado permite distribuição automática e uniforme de estruturas de armazenamento baseado em diretiva através de um conjunto de nós. A presente descrição também permite hospedagem ou propriedade mecanizada, dinâmica de estruturas de armazenamento baseado em diretiva. Um vasto número de estruturas de armazenamento baseado em diretiva pode ser distribuído sem administração manual, permitindo criação e destruição rápida de estruturas de armazenamento. A carga em geral pode ser distribuída e equilibrada através do pool de servidores. Esta descrição também permite a distribuição sem uma lista centralizada para acompanhar a propriedade e sem um backup de tolerância de falhas de tal uma lista centralizada. Também, usuários das estruturas de armazenamento podem computar um espalhamento e acessar diretamente um servidor apropriado e consumidores podem não precisar contar com o roteamento através de múltiplos servidores. Assim, acesso mais rápido e menor sobrecarga de rede são realizados. Esta descrição permite distribuição de armazenamento e recuperação baseado em diretiva com distribuição uniforme, computação balanceada, redução de pontos de acesso, e fornecimento de escalabilidade.
ESPALHAMENTO CONSISTENTE
Espalhamento consistente é um esquema para fornecimento eficaz de armazenamento e recuperação de tabelas de espalhamento, ao mesmo tempo reduzindo os custos de adicionar e remover aberturas de tabelas de espalhamento - associado com implementações de espalhamento tradicionais. Espalhamento consistente foi inicialmente introduzido como um método escalonável, eficaz para distribuir solicitações entre uma população de mudança continua de servidores da web. 0 mesmo tem também sido usado como um método para construir uma tabela de espalhamento distribuída (ou DHT), na qual um espaço de chave (e os valores de dados associados) é distribuído através de uma coleção de nós de computação.
Quando um espalhamento consistente é usado, a adição ou remoção de um servidor da web ou nó de computação pode ser alcançada sem ter que re-mapear todo o espaço de chave ou cliente. Em geral, entradas k/n (onde k é o número de chaves e n é o número de nós) são remapeadas. Em adição, cada nó em uma implementação de espalhamento consistente pode usar informação local sobre a porção do espaço de chave que o mesmo gerencia, ao invés de ter uma visão global, reduzindo a sobrecarga de complexidade e comunicação. Estas vantagens fornecem eficácia em ambientes que devem responder a falhas e recuperações de sistemas, e solicitações de capacidade de mudança rápida que exigem adição e remoção de nós do pool.
Um algoritmo para espalhamento consistente pode ser mostrado ao assumir que um conjunto de chaves, k, é mapeado para um conjunto de nós, n. Uma função, f, é usada para espalhar em cada chave e o identificador de cada nó em um número inteiro na faixa de 0 a M. Os valores espalhados podem ser plotados em uma escala linear em torno de um circulo, com o valor 0 e M sobrepondo-se na posição doze horas e cada chave pode ser mapeada para o nó mais próximo no circulo. A Figura 1 é um diagrama esguemático que ilustra o mapeamento de valores de espalhamento consistentes de identificadores de chaves e nó em uma escala linear em volta de um circulo 100. O circulo 100 inclui uma escala linear com valores dentro da faixa a partir de 0 a M (por exemplo, 0, M/4, M/2, 3M/4, e M) . Uma função de espalhamento consistente, f, é usada para realizar o espalhamento dos valores de nó (por exemplo, f(nj , f(n2) , f(n3), e f(n4)). A função, f, é usada também para espalhar valores de chave (por exemplo, f(ka) e f(kb)). Os nós (por exemplo, nu n2, n3, e n4) e chaves (por exemplo, ka e kb) podem então ser plotados no circulo 100. Cada chave (por exemplo, ka e kb) podem ser designada ao nós mais próximo (por exemplo, ni, n2, n3, e n4) . Em uma modalidade, ka seria mapeado a n4, e kb seria mapeado a ni. A Figura 1 mostra os nós (por exemplo, n3, n2, n3, e n4) conforme se espalham em uma distribuição substancialmente uniforme em volta do círculo 100. Contudo, em uma modalidade, uma função de espalhamento pode resultar em uma distribuição não uniforme de nós. Para acomodar a possibilidade que os nós serão distribuídos de forma não uniforme, o algoritmo pode introduzir inúmeros pseudo nós para cada nó físico, e podem mapear qualquer designação de uma chave a um pseudo nó ao nó físico subjacente. Uma análise matemática rigorosa (omitida aqui) pode ser usada para determinar uma estimativa do balanço estimado da distribuição para qualquer número dado de nós e pseudo nós.
O espalhamento consistente foi desenvolvido inicialmente como um método para distribuir questionários pela rede por um conjunto de servidores. Isso permitiu que os servidores entrassem e saissem do pool de servidor com recalculação minima. Mais recentemente, o espalhamento consistente tem sido usado em matrizes de armazenamento para designar dados a um dispositivo de armazenamento especifico. Essa descrição se refere, em parte, ao uso de espalhamento consistente para armazenamento baseado em diretiva e recuperação para e a partir de estruturas de armazenamento, para a junção perfeita e abandono de servidores e/ou nós a partir de um grupo de servidores, e para tolerância a falha distribuída em um sistema de grupo de servidor. Apesar de o espalhamento consistente ser usado nessa descrição, uma pessoa versada na técnica poderia apreciar que qualquer algoritmo de distribuição (por exemplo, outros algoritmos de espalhamento, algoritmos de distribuição em sequência, etc.) capaz de distribuir automaticamente uma fileira de dados associados aos valores de chave a um servidor, grupo de servidores, nó ou agrupamento de nó poderia ser usado em vez do espalhamento consistente.
Uma tabela de espalhamento (algumas vezes também denominada como um "mapa") é uma implementação de um conceito de matriz associativa. Em uma matriz associativa, os dados podem ser armazenados na forma de uma chave e um valor associados ou conjunto de valores. No caso de uma tabela de espalhamento, somente um valor (ou conjunto de valores) é associado com cada chave. Então, se uma chave ki é associada a um valor Vi (ou um conjunto de valores Vi) e uma chave nova ki é inserida na tabela espalhamento com um valor V2 (ou um conjunto de valores v2) , e v2 irá sobrescrever Vi na tabela espalhamento. No presente documento foi proposta uma tabela espalhamento que permite a associação de mais do que um valor (por exemplo, Vx e V2) com uma chave (por exemplo, ki) e, adicionalmente, é capaz de permitir "semântica da fila" (por exemplo, FIFO ou prioridade) em todos os valores associados com uma chave especifica (por exemplo, ki) . Quando usada com um algoritmo de espalhamento consistente para distribuir automaticamente chaves sobre um conjunto de nós (e redistribui-los eficientemente quando o conjunto de nós muda), filas podem ser distribuídas facilmente e redistribuídas sobre um conjunto de nós.
ESTRUTURAS DE ARMAZENAMENTO E MICROFILAS
Como discutido acima, uma base de dados consiste em inúmeras fileiras de dados com cada fileira dividida em colunas ou campos com uma coluna ou campo designado como a chave. Em uma estrutura de base de dados, cada chave é única. Se um usuários tenta adicionar dados específico a uma chave já em uso, geralmente, resulta em um erro.
Algumas estruturas baseadas em diretiva não usam uma chave. Um exemplo de uma estrutura de armazenamento baseada em diretiva é uma fila. Uma fila é uma estrutura de dados lineares primeiro a entrar, primeiro a sair. Em uma estrutura de dados primeiro a entrar, primeiro a sair, o primeiro elemento adicionado a fila é o primeiro a ser removido. Um ou mais consumidores de uma fila podem detonar dados para dentro e para fora de uma fila. Uma fila é usada ao longo dessa descrição, mas uma pessoa versada na técnica iria apreciar que o uso de uma fila é apenas um exemplo, e não está limitando. Por exemplo, matrizes, listas vinculadas, pilhas, árvores, gráficos, ou qualquer outro tipo de estrutura de armazenamento baseada em diretiva podem ser usadas nas modalidades descritas abaixo.
A Figura 7 é um diagrama esquemático de um armazenamento de dados 700 localizado em um sistema 702 de um ou mais dispositivos de computação 704. Entradas de dados 710 estão localizadas dentro de um espaço 708. Cada entrada de dados contém campos 712. Um dos campos em cada entrada de dados é campo de chave 720. Um ou mais dispositivos de computação 704 pode(m) incluir computadores servidores e pode (m) ser configurado (s) em rede por uma rede 730. 0 armazenamento de dados pode incluir um código executável que fornece instruções para que o espaço 708 receba e armazene as entradas de dados 710. Admitindo-se que múltiplas fileiras (ou entradas de dados) 710 incluem o mesmo valor no campo de chave, o espaço 7 08 pode ser considerado como uma estrutura semelhante a base de dados ou tabela que contém múltiplas pequenas filas. Dessa, como será explicado abaixo, em uma modalidade, o espaço 708 compreende uma estrutura semelhante a base de dados ou tabela mesclada com uma estrutura de armazenamento baseado em diretiva.
Fileiras de informações (ou entradas de dados) 710 podem ser armazenadas em um espaço 708 e podem ser acessadas por meio da especificação de uma chave 720. Mais de uma entrada por chave pode ser permitida no espaço 720. A permissão de mais de uma entrada por chave resulta na criação de um grande número de "microfilas".
A Figura 2A é um diagrama esquemático que ilustra um espaço 200 que apresenta mais de uma entrada por chave. Em uma modalidade, o espaço 200 inclui dados de conta bancária e informações de transação (Conta, Nome, Alerta, Número do Seguro Social, Crédito, Débito etc.). No contexto bancário, em qualquer momento, múltiplas ações ou transações podem ocorrer na conta de qualquer pessoa. Um alerta pode precisar ser enviado a um usuário, a conta pode precisar ser debitada ou creditada etc. Dessa maneira, a permissão de múltiplas entradas por chave é vantajoso na medida em que transações e informações substancialmente simultâneas podem ser armazenadas no espaço 200 por chave.
Ainda em referência à Figura 2A, o valor de chave 101 apresenta quatro entradas 201 no espaço 200. O valor de chave 102 apresenta três entradas 202 no espaço 200. O valor de chave 103 apresenta uma entrada 203 no espaço 200. 0 valor de chave 104 apresenta quatro entradas 204 no espaço 200. Dessa maneira, no espaço 200, múltiplas entradas são permitidas para cada chave. Em uma modalidade, a permissão de repetições de valores de chave em um armazenamento de dados ou outra estrutura semelhante a base de dados permite uma representação de filas em uma estrutura semelhante a base de dados (microfilas). Dessa maneira, os agrupamentos de entradas 201, 202, 203, 204 etc. podem ser considerados como microfilas e a permissão de mais de uma entrada por chave resulta na criação de um grande número de microfilas 201, 202, 203, 204 etc. para um espaço 200.
As microfilas 201, 202, 203, 204 etc. podem ser automática e uniformemente distribuídas ao longo de um conjunto de nós ou participantes que fornecem armazenamento ou acesso aos dados. Em uma modalidade, os dados são distribuídos ao longo de um conjunto de nós de acordo com valores de chave, e as fileiras de informações podem ser distribuídas com o uso de um algoritmo de distribuição.
As Figuras 2B a 2E são diagramas esquemáticos que ilustram as microfilas 201, 202, 203 e 204. A Figura 2B ilustra a microfila 201, que inclui entradas do espaço 200 com o valor de chave 101. A Figura 2C ilustra a microfila 202, que inclui entradas do espaço 200 com o valor de chave 102. A Figura 2D ilustra a microfila 203, que inclui entradas do espaço 200 com o valor de chave 103. A Figura 2E ilustra a microfila 204, que inclui entradas do espaço 200 com o valor de chave 104.
Em referência às Figuras 2A a 2E, o aplicativo bancário é apenas um exemplo do tipo de dados e de transação ou informações de função que podem ser distribuídos por meio do espaço 200 e nas microfilas 201 a 204. Um elemento versado na técnica irá compreender que ter múltiplas entradas por valor de chave em um espaço 200 que resultam nas microfilas 201 a 204 pode ser vantajoso em inúmeros contextos.
Permitindo mais que uma entrada por chave em um espaço 200 também permite que os consumidores utilizem semânticas de fila através destas entradas. Se referindo novamente ao contexto bancário, uma estrutura similar a um banco de dados ou a uma tabela pode ter entradas múltiplas com o mesmo número de conta (por exemplo, operações pendentes). Tendo entradas múltiplas por chave permite que um consumidor utilize semânticas de fila através destas entradas. As semânticas de fila podem incluir ordenamento, classificação (por exemplo, de acordo como uma prioridade ou data), semânticas do tipo primeiro a entrar, primeiro a sair, ou tipo último a entrar, primeiro a sair através das entradas com o mesmo valor de chave. No contexto bancário, por exemplo, isto permite que cada consumidor classifique ou ordene suas operações e dados de acordo com usa preferência. Todas as entradas, dados, e operações podem ser adicionadas a estrutura similar a banco de dados independente das preferências do consumidor. Mas se um consumidor preferir receber os dados apresentados baseados em uma data de prioridade, é possivel pela classificação da microfila relacionada àquele consumidor baseado em uma data de prioridade. Outro consumidor pode desejar recuperar os dados de acordo com outra opção semântica de fila.
As microfilas podem ser distribuídas automaticamente e igualmente através de um conjunto de nós ou participantes fornecendo armazenamento ou acesso a dados. Em uma modalidade, permitindo repetições de valores de chave em uma estrutura similar a um banco de dados permite uma representação de filas em uma estrutura similar a um banco de dados.
DISTRIBUIÇÃO DE MICROFILAS
As linhas de informações podem ser distribuídas usando-se um algoritmo de distribuição. Em uma modalidade, as linhas associadas com o valor de chave 101 (microfila 201) podem ser distribuídas para um nó fornecendo armazenamento ou acesso a dados enquanto as linhas associadas com o valor de chave 102 (microfila 202) podem ser distribuídas para outro nó fornecendo armazenamento ou acesso a dados. De modo similar, uma microfila 203 pode ser distribuída para outro nó e a microfila 204 pode ser distribuída para ainda outro nó. Em outra modalidade, as microfilas 201 e 202 são distribuídas para o mesmo nó e microfilas 203 e 204 são distribuídas para outro nó. Alguém versado na técnica verificaria que a microfilas pode ser distribuída em uma variedade de maneiras de acordo com uma variedade de algoritmos de distribuição, enquanto as linhas de dados associadas com um valor de chave (isto é, microfilas) são distribuídas para o mesmo nó. Assim, se referindo novamente a FIGURA 2A, as entradas no espaço 200 são distribuídas de acordo com o valor de chave.
A FIGURA 3 é um diagrama esquemático 300 ilustrando a distribuição ou designando microfilas para os nós. Conforme discutido acima, as linhas de dados associadas com uma chave em particular, K, constituem uma microfila (por exemplo, K201) • No diagrama 300, as microfilas 301, 302, 303, 304, ... 310 são assinaladas com Kn, indicando que as microfilas estão associadas com os valores de chave bancárias mostrados nas FIGURAS de 2A a 2E. Apesar disto, alguém versado na técnica entenderia que a distribuição ilustrada na FIGURA 3 pode ser usada em aplicações não bancárias incluindo, mas não limitado a, qualquer aplicação na qual entradas múltiplas associadas com uma única chave em um espaço seria vantajoso.
Na FIGURA 3, as microfilas K20I (301) e K202 (302) são distribuídas para o nó Ni (351) . A microfila K203 (303) é distribuída para o nó N4 (354) . A microfila K204 (304) é distribuída para o nó N3 (353) . E a Microfila Kn (310) é distribuída para o nó Nm (360). Conforme discutido acima, alguém versado na técnica verificaria que as microfilas podem ser distribuídas de acordo com uma variedade de algoritmos de distribuição, enquanto as linhas de dados associadas com um valor de chave (isto é, microfilas) são distribuídas para o mesmo nó. As entradas múltiplas para cada chave podem, então, serem distribuídas através da pool de servidores com um algoritmo de distribuição, eliminando a necessidade para gerenciamento de filas manual pouco prático.
Por exemplo, se referindo novamente ao contexto bancário, um banco cria uma fila de entradas de operação para cada consumidor ativo. Isso pode somar centenas de milhares de filas que tem que ser equilibradas manualmente (ou hospedas) através de um conjunto de servidores de mensagens. Em uma modalidade, as filas podem ser distribuídas automaticamente igualmente através de um conjunto de nós usando um algoritmo de distribuição que equilibre a computação, reduza pontos de acesso e forneça escalabilidade.
Em uma modalidade, fileiras de dados são distribuídas usando um esquema de espalhamento.
Qualquer esquema que espalha as hospedagens de fila através da pool de servidores fornece um número de vantagens que inclui, mas não são limitadas a, estruturas de armazenamento baseado em diretiva dinâmica, hospedagem automática ou propriedade; a distribuição de grandes números de estruturas de armazenamento baseado em diretiva sem a administração manual permite a criação e destruição rápida de estruturas de armazenamento; distribuição e o balanceamento da carga total através da pool de servidores; distribuição sem a lista centralizada para rastrear a propriedade e sem uma recuperação de tolerância de falhas de uma lista; computação do espalhamento e acesso direto através dos usuários; e realização do acesso mais rápido e sobrecarga de rede inferior.
DISTRIBUIÇÃO DE MICROFILA USANDO ESPALHAMENTO CONSISTENTE
Em uma modalidade, as fileiras de dados são distribuídas usando espalhamento consistente.
Espalhamento consistente permite uma distribuição substancialmente igual das fileiras e/ou microfilas para um conjunto de participantes servidores em um grupo ou espaço. Através da combinação de espalhamento consistente com microfilas (permitindo múltiplas entradas por chave em uma estrutura como uma base de dados), espalhamento consistente, pode ser usado para distribuir estruturas de armazenamento baseado em diretiva de uma maneira substancialmente igual entre uma pool de servidores. Espalhamento consistentes são direcionados por conta própria sem um planejador. Espalhamento consistente pode automaticamente distribuir filas através dos servidores, conforme os servidores entram e deixam a pool de servidores. Como resultado, permitindo mais de um valor ou entrada por chave, o que fornece uma distribuição igual e automática de filas através de uma pool de servidores. Em uma modalidade, a distribuição igual e automática de estruturas de armazenamento baseado em diretiva é alcançada de forma dinâmica, por resiliência, e sem uma função de administração.
A FIGURA 4 é um diagrama esquemático que ilustra o mapeamento de valores de espalhamento consistente de microfilas e identificadores de nó em uma escala linear ao redor de um circulo 400. O circulo 400 inclui uma escala linear com valores que ficam na faixa de 0 a M (por exemplo, 0, M/4, M/2, 3M/4, e M) . Uma função de espalhamento consistente, f, pode ser usada para espalhar os valores de nó (por exemplo, f(ni), f(n2), f (ns) , e f (nt) ) . A função, f, também pode ser usada para espalhar valores de chaves (por exemplo, f(k2oi), 1(^202), £(^203), θ f(k204)) correspondentes as microfilas. O nós (por exemplo, m, U2, ns, e n-j) e chaves (por exemplo, k2oi, k-202, k203, θ k204 ) podem, então, ser plotados no circulo 400. Cada chave (por exemplo, k2oi, k202, k203, θ k204 ) pode ser atribuida ao nó mais próximo (por exemplo, ni, n2, ri3, e n<j) . Na pratica, todas as entradas que têm um certo valor de chave, são plotadas no circulo 400 em um lugar particular baseado na função f e depois, são atribuídas ao nó n mais próximo. Múltiplas entradas que têm o mesmo valor de chave (microfilas) são, então, atribuídas ao mesmo nó. Em uma modalidade, como mostrado, k2oi seria mapeado para n4, k202 θ k203 seriam mapeados para ni, e k204 seria mapeado para na-
A FIGURA 4 mostra os nós (por exemplo, nls n2, n3, e n4) se espalhando em uma distribuição substancialmente igual ao redor do círculo 400. Entretanto, em uma modalidade, uma função de espalhamento pode resultar em uma distribuição desigual de nós. Para acomodar a possibilidade dos nós serem distribuídos de maneira desigual, o algoritmo pode introduzir inúmeros pseudo nós para cada nó fisico, e pode mapear qualquer atribuição de uma chave para um pseudo nó para o nó fisico de base. Uma análise matemática rigorosa (omitida aqui) pode ser usada para determinar uma estimativa do equilíbrio esperado da distribuição para qualquer número de nós e pseudo nós.
Uma vantagem de usar o espalhamento consistente para implantar a distribuição de filas, em contraste com um algoritmo mais simples, como um round-robin, é aquela com espalhamento consistente, um registro central não é tipicamente usado, e deste modo não é necessário criar e manter um registro tolerante a falhas de uma tabela atribuida. Outra vantagem é que não há necessidade da presença de um 'planejador' atribuído, responsável por atribuir a distribuição das chaves para os nós (eliminando o risco de que o planejador poderia se tornar um ponto de falha ou engarrafamento).
Os algoritmos de distribuição, como espalhamento consistente, também podem ser usados, no contexto de servidores e/ou nós que se juntam a ou deixam um grupo de servidores e no contexto da tolerância de falha distribuída em um grupo servidor.
JUNÇÃO E SEPARAÇÃO DE PAR SEM EMENDA
Junção e separação de par sem emenda em um ambiente de espalhamento consistente pode ser utilizado em um ambiente, como discutido acima, em que espaços de chave ou microfilas (e seus valores de dados associados) são distribuídos através de uma coleção de nós de computação, ou em um ambiente distribuído de estrutura de armazenamento baseado em diretiva. Elementos versados na técnica avaliariam que outros algoritmos de distribuição podem ser utilizados para junção e separação de par sem emenda de nós. Utilizar um algoritmo resultante em conduta de "monotonia" - um em que, quando um novo nó é adicionado, os dados são trocados apenas entre os outros nós e o novo nó, mas não entre os outros nós no agrupamento - irá tipicamente resultar em redistribuição máxima e eficiente. Através do uso do método discutido abaixo, servidores podem ser adicionados ou removidos do pool de servidores utilizando espalhamento consistente com distúrbio mínimo ao serviço total.
Em uma coleção de nós de computação, ou em ambiente distribuído de estrutura de armazenamento baseado em diretiva, quando máquinas juntam ou separam o sistema, os dados armazenados nas máquinas devem ser redistribuídos para equilibrar a carga em cada máquina ou nó. Por exemplo, se o sistema inclui quatro máquinas e uma máquina deixa o sistema, então os dados armazenados na máquina separada devem ser redistribuídos às outras três máquinas restantes de forma que as três máquinas restantes tenham uma substancial quantidade uniforme de dados em relação à quantidade de espaço em cada máquina. Semelhantemente, se um maquina é adicionada a um sistema que tem quatro máquinas, então, os dados armazenados nas quatro máquinas originais serão redistribuídos de forma que as cinco máquinas atuais tenham uma substancial quantidade uniforme de dados em relação à quantidade de espaço em cada máquina.
A redistribuição de dados pode introduzir ineficiências porque de implantações básicas de algoritmos de redistribuição mantêm atualizações e questões de acontecimento no sistema durante a redistribuição. Como observado acima, uma das vantagens de utilizar espalhamento consistente é o custo baixo da adição e remoção de nós ao pool de espalhamento. Embora o número de chaves que pode ser migrado dos nós existentes a um novo nó seja reduzido a k/n (onde k é o número total de chaves, e n é o número de nós ativos), implantações padrões de espalhamento consistente também mantêm atualizações e questões de acontecimento no sistema durante a redistribuição. Um método para eficientemente adicionar ou remover um nó em um pool de espalhamento de máquinas com interrupção de serviço minimo será revelado abaixo.
A figura 5A é um fluxograma 500 que ilustra um método para adicionar um novo nó ou máquina a uma coleção de nós de computação, ou a um ambiente distribuído de estrutura de armazenamento baseado em diretiva. 0 método começa no bloco 501, termina no bloco 531, e é dividido em etapas de forma que a interrupção para serviço e o protocolo de rede inter-nó sejam minimizados juntos.
Na etapa 510, um novo nó se junta como um nó "parasita". O nó parasita é um nó que é capaz de interagir com nós pares, mas não é um nó par. Durante a etapa 510, o nó parasita obtém o espaço de chave de todos os outros nós ativos no sistema.
Na etapa 520, o nó parasita recebe de outros nós ativos no sistema, cópias dos valores associados com as chaves que ele irá possuir como um nó ativo. Durante a etapa 520, a reconciliação entre o nó parasita e seus pares é alcançada. 0 nó parasita também pode monitorar e gravar quaisquer novas chaves e quaisquer valores atualizados que foram processados durante o tempo de etapa 510 ou que foram modificados ou atualizados enquanto o nó parasita e os nós pares executavam a reconciliação.
E na etapa 530, o novo nó reativa uma nova junção sincronizada para promover seu estado em um par ativo e tomar posse de seu próprio espaço de chave. O novo nó participa em um protocolo sincronizado para se juntar como um par ativo e está de forma substancial, imediatamente pronto para iniciar distribuição de chaves e valores. A etapa 530 inclui uma suspensão temporária (vida curta) das operações no espaço. Um par ativo pode também ser referido como um nó "semeador".
Em uma modalidade, os nós semeadores existentes são sobrecarregados com uma leitura única de seus espaços- chave, e o novo nó ou nó parasita (que está desligado na etapa 520 até se juntar como um nó semeador ou par na etapa 530) é sobrecarregado com o cálculo de seu próprio espaço- chave. Permitir a preparação do novo nó desligado minimiza o tempo durante o qual as operações estão suspensas no espaço.
Em uma modalidade, durante a etapa 520, o nó parasita recebe entradas e está se tornando sincronizado. Logo antes da etapa 530, o nó parasita está substancialmente sincronizado por completo. Assim, na etapa 530, o nó parasita pode solicitar junção ao grupo de nós. Quando o novo nó se junta ao grupo, ele está substancialmente sincronizado por completo, o que resulta em uma junção rápida e perfeita.
Em uma modalidade, antes da etapa 510, algoritmos de espalhamento consistente podem ser usados (como discutido acima, na seção intitulada Distribuição de Microfila Usando Espalhamento Consistente) para determinar a distribuição de entradas ou chaves através dos nós no agrupamento (não incluindo o novo nó, porque o novo nó ainda não se juntou como um parasita antes da etapa 510) . Durante a etapa 520, algoritmos de espalhamento consistente podem ser usados para determinar a distribuição de entradas ou chaves através dos nós no agrupamento incluindo o novo nó, porque o novo nó em breve se juntará ao agrupamento. Assim, o novo nó sabe de quais entradas e chaves ele se "apropriará" uma vez que ele se tornar um nó semeador. Uma vez que o novo nó determina de quais entradas ele se "apropriará", uma vez que se tornar um nó semeador, o novo nó recebe de outros nós ativos no sistema cópias dos valores associados com as chaves de que ele se apropriará como um nó ativo durante a etapa 520. Assim, a reconciliação entre o nó parasita e seus pares é permitida usando espalhamento consistente com carga minima nos nós semeadores existentes.
A figura 5B é um diagrama de fluxo 550 que ilustra um método para um nó ou máquina que é removido de uma coleção de nós de computação, ou de um meio de estrutura de armazenamento baseado em diretiva distribuído. O método começa no bloco 551, termina no bloco 570 e é dividido em etapas, de modo que a interrupção do serviço e o protocolo entre os nós da rede são minimizados.
Na etapa 560, um nó no agrupamento sinaliza para os outros nós semeadores que ele quer sair do agrupamento. Na etapa 561, a máquina, ou o nó, que sai permanece uma máquina semeadora enquanto as máquinas semeadoras restantes, ou nós, estão lendo dados e recebendo cópias de valores associados a chaves de que se "apropriarão" após o nó sair do agrupamento. Durante a etapa 561, o agrupamento ainda está operando. Na etapa 562, o nó sai do agrupamento e os nós semeadores restantes tomam a propriedade das entradas e dados recebidos pelo nó que está saindo. As máquinas semeadoras restantes, ou nós, já pré-leram os dados ou entradas do nó que está saindo e, assim, quando este nó sai do grupo, os novos nós já estão substancialmente sincronizados por completo, o que resulta em uma saida rápida e perfeita.
O diagrama de fluxo ilustrado na figura 5B se refere a uma saida programada e o método para sair do agrupamento é, assim, um problema de sincronização semelhante ao problema de junção, mas algumas considerações adicionais para os nós que saem de um agrupamento são discutidas abaixo, em referência à figura 5C. A figura 5C é uma tabela 580 que ilustra tipos diferentes de saldas e tipos diferentes de replicação. A tabela ilustra as situações de saida programada 592 e saida não programada 594 comparadas com situações em que os dados não foram previamente replicados 582, foram replicados sincronicamente 584 e foram replicados de modo assincrônico 586.
No caso de uma partida programada 592 em um sistema sem replicação (582) ou com uma replicação sincrônica (586) - isto é, as situações 587 e 589 - o nó que está saindo pode responder consultas de sincronização a partir de seus nós pares, para auxiliar em valores de sincronização (do contrário, os nós restantes farão todo o espaço) . No caso de uma partida programada 592, se a replicação 584 tiver sido usada, os nós restantes podem recriar qualquer replicação deixada por realizar pelo nó que está saindo.
No caso de uma partida não programada 594 em um sistema sem réplica 582 - isto é, a situação 597 resultados de perda de dados. Dessa forma, em uma
modalidade, a réplica de dados sincrona é preferencial. No caso de uma partida não programada 594 em um sistema com réplica assíncrona 586 - isto é, a situação 599
resultados de possivel perda de dados e o sistema podem recuperar assincronicamente a réplica. No caso de uma partida não programada 594 em um sistema com réplica sincrona 584 - isto é, a situação 598 - o sistema recuperar assincronicamente a réplica.
Sincronizar os valores garante que os nós restantes no pool têm cópias válidas de valores para chaves apropriados anteriormente pelo nó de saida. Isto inclui uma suspensão de curta duração de operações no espaço. Recuperar assincronicamente a réplica permite que os nós restantes no pool instanciar a replica para chaves que foram anteriormente replicadas no nó que está saindo (ou saiu).
TOLERÂNCIA À FALHA DISTRIBUÍDA
Para evitar as situações de perda de dados 597 e 599 conforme discutido acima em relação à FIGURA 5C, os dados podem ser replicados em nós de apoio adicionais. Quando todos os dados são replicados pelo menos uma vez, o risco de perda de dados é muito reduzido.
Em uma modalidade, a réplica de dados é implantada usando um método de tolerância à falha distribuída implantado usando realização de espalhamento consistente. Um versado na técnica apreciaria que outros algoritmos de distribuição podem ser usados para distribuir os espaços de chaves ou microfilas através do ambiente de estrutura de armazenamento. Usando uma distribuição com comportamento "monotônico" - um em que quando um novo nó é adicionado, os dados são trocados somente entre os outros nós e o novo nó, mas não entre os outros nós no agrupamento - resultará tipicamente na réplica melhor e eficaz.
A tolerância à falha distribuída pode ser usada em um ambiente de realização de espalhamento consistente tipico em que os espaços de chave (e os valores de dados associados) são distribuídos através de uma coleção de nós de computação ou em um ambiente de estrutura de armazenamento baseado em diretriva. Em sua encarnação original, a realização de espalhamento distribuído era mais de um algoritmo de distribuição sem estado que um algoritmo de armazenamento "com estado". Conforme discutido acima, quando reusado para implantar tabelas de espalhamento distribuídas, o algoritmo diminui o custo de mudança do pool de nó e reduz as exigências para o compartilhamento de estado global.
Em uma modalidade, as implantações de realização de espalhamento consistente das tabelas de espalhamento distribuídas são estendidas para fornecer tolerância à falha distribuída paralela. Isto é realizado mapeando-se uma copia adicional de uma chave para o nó que é o próximo mais perto do círculo de consistente (veja, por exemplo, de consistente 400 mostrado na FIGURA 4) . O "próximo mais perto" é determinado pelo nó mais perto (e todos os seus pseudo nós) removido do cálculo.
A FIGURA 6A é um diagrama esquemático que ilustra a tolerância à falha distribuída que usa realização de espalhamento consistente. Uma copia primaria de uma chave 602 é mapeada para o nó considerado mais perto 608 pelo algoritmo de realização de espalhamento consistente. Este nó vai se tornar o nó propagador para a chave 602. Depois, a máquina propagadora é removida do cálculo e o algoritmo é reexecutado. O algoritmo irá, então, revelar o segundo nó ou máquina mais perto 610. Uma cópia réplica da chave 604 (ou secundária) é mapeada ao segundo nó mais perto 610 para propósitos de réplica. Isto pode ser repetido para copias adicionais da chave (por exemplo, uma segunda cópia réplica 606 pode ser mapeada ao terceiro nó mais perto 612), até um grau desejado de réplica limitada pelo número de nós no pool.
Esta técnica cria uma distribuição de apoio tolerante à falha distribuído que é ortogonal à primeira distribuição e, em situações de falha, retém as mesmas propriedades e eficácias. As copias de apoio das chaves para qualquer nó em particular no pool são inteiramente distribuídas sobre o resto dos nós no pool.
A Figura 6B ilustra replicação distribuída 600 de entradas sobre nós não-primários em um agrupamento. Com foco no Nó A 602 em seu papel primário, dados replicados do
Nó A 602 são distribuídos a uma pluralidade de nós não- primários. Os dados replicados do Nó A 602 podem ser distribuídos para Nó B 604, Nó Q 606, e Nó S 608, por exemplo. O Nó A 602 também pode guardar dados replicados (dados secundários ou outros níveis de replicação) de outros nós. Cada nó serve um conjunto de chaves como um primário, mas simultaneamente serve um conjunto de chaves replicadas como um secundário.
Com falha de nó, as entradas que foram "tomadas" pelo nó que falhou já são totalmente distribuídas pelos nós remanescentes no acervo. Quando um nó primário falha, os nós secundários para os dados daquele nó primário se torna o novo nó primário para os dados e começará a enviar dados que eles haviam replicado. Logo, uma falha não transfere simplesmente a carga um único nó de reserva. Recuperar-se de uma falha é simplesmente uma questão de ter o nó recentemente restaurado se reunir ao acervo, como descrito na seção anterior.
MÓDULOS DE MAPEAMENTO E DE DISTRIBUIÇÃO
As Figuras 8a a 8C são diagramas esquemáticos que ilustram módulos 800, 820, e 840 para nós de mapeamento e valores de chave. A Figura 8A é um módulo de mapeamento e de distribuição 800. O módulo de mapeamento e de distribuição 800 recebe informação com relação ao número de nós ou máquinas disponíveis em um agrupamento de máquinas (nír . . . nn) e informação com relação aos valores de chave (ki, ... km) associados com estruturas de armazenamento baseadas em diretiva em um espaço. O módulo de mapeamento e de distribuição 800 pode mapear os valores de chave aos nós ao utilizar um algoritmo de distribuição. Em uma modalidade, o módulo de mapeamento e de distribuição 800 utiliza um algoritmo de espalhamento consistente para mapear os valores de chave aos nós, como discutido acima com relação às Figuras 1 a 4. O módulo 800 pode ser qualquer dispositivo lógico adequado conhecido na técnica, e pode ser representado por hardware, software, ou uma combinação. 0 módulo 800 também pode ser armazenado em um meio lido por computador, como instruções para uma máquina. A Figura 8B é um módulo de mapeamento e de redistribuição 820. O módulo de mapeamento e de redistribuição 820 recebe informação que sempre muda com relação ao número de nós ou máquinas disponiveis em um agrupamento de máquinas (nlz . . . nn) , incluindo nós que estão saindo ou nós que estão se unindo ao agrupamento, assim como informação com relação aos valores de chave (ki, . . . km) associados com estruturas de armazenamento baseadas em diretiva em um espaço. 0 módulo de mapeamento e de redistribuição 820 é capaz de redistribuir valores de chave aos nós quando um nó está se unindo ou deixando o agrupamento ao utilizar um algoritmo de redistribuição. Em uma modalidade, o módulo de mapeamento e de redistribuição 820 utiliza um algoritmo de espalhamento consistente para redistribuir os valores de chave aos nós quando um nó se une ou deixa o agrupamento, como discutido acima com relação às Figuras 5A a 5C. O módulo 820 pode ser qualquer dispositivo lógico adequado conhecido na técnica, e pode ser representado por hardware, software, ou uma combinação. O módulo 820 também pode ser armazenado em um meio lido por computador, como instruções para uma máquina. A Figura 8C é um módulo de mapeamento e de mapeamento replicado 840. O módulo de mapeamento e de mapeamento replicado 840 recebe informação com relação ao número de nós ou máquinas disponíveis em um agrupamento de máquinas (ni, . . . nn) , assim como informação com relação aos valores de chave (ki, . . . km) associados com estruturas de armazenamento baseadas em diretiva em um espaço. O módulo de mapeamento e de mapeamento replicado 840 é capaz de mapear valores de chave para os nós e é capaz de mapear cópias de valores de chave para outros nós para propósitos de replicação. Em uma modalidade, o módulo de mapeamento e de mapeamento replicado 840 utiliza um algoritmo de espalhamento consistente para mapear valores de chave e valores replicados de chave para os nós, como discutido acima com relação às Figuras 6A e 6B. O módulo de mapeamento e de mapeamento replicado 840 pode ser qualquer dispositivo lógico adequado conhecido na técnica, e pode ser representado por hardware, software, ou uma combinação. 0 módulo de mapeamento e de mapeamento replicado 840 também pode ser armazenado em um meio lido por computador, como instruções para uma máquina.
Embora várias modalidades, de acordo com os princípios revelados, foram descritas acima, deve ser entendido que as mesmas foram apresentadas apenas a titulo de exemplo e não são limitadoras. Assim, a extensão e o escopo da(s) invenção(ões) não devem ficar limitados por nenhuma das modalidades exemplares acima descritas, mas devem ficar definidos de acordo com as reivindicações e seus equivalentes que são emitidos a partir desta revelação. Além do mais, as vantagens e atributos acima são fornecidos nas modalidades descritas, mas não limitam a aplicação das tais reivindicações emitidas a processos e estruturas realizando quaisquer ou todas as vantagens acima.
Além disso, os titulos de seção do presente documento são fornecidos para coerência com as sugestões conforme 37 C.F.R. 1.77 ou de outra forma para fornecer dicas de organização. Estes titulos não limitam ou caracterizam a(s) invenção(ões) estabelecida(s) em nenhuma das reivindicações que se possa emitir a partir desta revelação. Especificamente e a titulo de exemplo, embora os titulos se refiram a um "Campo da Técnica", tais reivindicações não devem ficar limitadas pela linguagem escolhida sob este titulo para descrever o assim chamado campo da técnica. Além disso, uma descrição de uma tecnologia nos "Antecedentes" não deve ser interpretada como uma admissão de que a tecnologia é técnica anterior a qualquer invenção(ões) nesta revelação. Nem o "Sumário" deve ser considerado como uma caracterização da(s) invenção (ões) exposta(s)nas reivindicações emitidas. Além do mais, qualquer referência nesta revelação a "invenção" no singular não deve ser utilizada para alegar que existe apenas um único ponto de inovação nesta revelação. Invenções múltiplas podem ser expostas de acordo com as limitações das reivindicações múltiplas que são emitidas a partir desta revelação, e tais reivindicações consequentemente definem a(s) invenção(ões) e seus equivalentes, que são protegidos desse modo. Em todas as instâncias, o escopo de tais reivindicações será considerado por seus próprios méritos à luz desta revelação, mas não deve ser restringido pelos titulos do presente documento.

Claims (11)

1. Método para adicionar um nó a uma coleção de nós computacionais, em que o método compreende: unir um novo nó à coleção de nós computacionais, sendo o referido nó conhecido como um nó parasita; receber, no nó parasita, informações de outros nós ativos na coleção de nós computacionais; sincronizar o nó parasita com base na informação recebida; e posteriormente, promover o nó parasita a um nó ativo na coleção de nós computacionais, caracterizado por a união do novo nó, como um nó parasita, compreender o nó parasita obter um espaço chave dos outros nós ativos na coleção de nós de computação, e em que a informação de recepção compreende receber cópias dos valores de chave dos a partir dos outros nós ativos, sendo que os valores de chave são valores de chave que o nó parasita possuirá quando o nó parasita se tornar um nó ativo.
2. Método, de acordo com a reivindicação 1, caracterizado por as informações de recepção compreenderem reconciliar e/ou atualizar as cópias dos dados dos valores de chave entre o nó parasita e os outros nós ativos na coleção de nós de computação.
3. Método, de acordo com a reivindicação 2, caracterizado por as informações de recepção compreenderem o nó parasita registrar os valores de chave atualizados onde os valores de chave foram modificados ao executar a reconciliação.
4. Método, de acordo com a reivindicação 1, caracterizado por as informações de recepção compreenderem, ainda, o cálculo, o uso de um algoritmo de espalhamento consistente, uma distribuição de valores de chave sobre a coleção de nós de computação, incluindo o novo nó.
5. Método para a remoção de um nó de saida de uma coleção de nós de computação caracterizado por compreender: o nó de saida sinalizar para os outros nós na coleção de nós de computação que está deixando a coleção; os outros nós receberem informações a partir do nó de saida; e o nó de saida sair da coleção de nós de computação e os outros nós tomarem propriedade dos dados associados aos valores de chave previamente apropriados pelo nó de saida, em que os outros nós que recebem informações compreendem os outros nós que recebem cópias dos dados associados aos valores de chave previamente apropriados pelo nó de saida, sendo que os dados relacionados aos valores de chave pelos quais cada um dos outros será responsável após a saida do nó de saida.
6. Método, de acordo com a reivindicação 5, caracterizado por compreender adicionalmente replicar valores de chave previamente replicados no nó de saida.
7. Método, de acordo com a reivindicação 5, caracterizado por as informações de leitura a partir do nó de saida compreenderem, ainda, o cálculo, o uso de um algoritmo de espalhamento consistente, uma distribuição de valores de chave sobre a coleção de nós de computação que excluem o nó de saida.
8. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado por compreender adicionalmente replicar dados em uma coleção de nós de computação, em que o método compreende: calcular um nó primário para armazenar uma estrutura de armazenamento baseada em diretiva com um valor de chave; calcular um nó secundário para armazenar uma replicação da estrutura de armazenamento baseado em diretiva; e replicar a estrutura de armazenamento baseada em diretiva armazenada no nó primário e armazenar a estrutura de armazenamento baseada em diretiva replicada no nó secundário.
9. Método, de acordo com a reivindicação 8, caracterizado por o cálculo do nó primário e o cálculo do nó secundário compreenderem o uso de um algoritmo de distribuição que tem um comportamento monótono.
10. Método, de acordo com a reivindicação 8, caracterizado por o cálculo do nó primário e o cálculo do nó secundário compreenderem o uso de um algoritmo de espalhamento consistente.
11. Método, de acordo com a reivindicação 8, caracterizado por o nó primário compreender o nó mais perto a um valor de chave mapeado associado a estrutura de armazenamento baseada em diretiva em uma escala de espalhamento consistente, e em que o nó secundário compreende o próximo nó mais próximo ao valor de chave mapeado associado a estrutura de armazenamento baseada em diretiva na escala de espalhamento consistente.
BRPI1016200-3A 2009-04-16 2010-04-16 método para adicionar um nó a uma coleção de nós computacionais e método para a remoção de um nó de saída de uma coleção de nós de computação BRPI1016200B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17007909P 2009-04-16 2009-04-16
US61/170,079 2009-04-16
PCT/US2010/031512 WO2010121218A2 (en) 2009-04-16 2010-04-16 Policy-based storage structure distribution

Publications (2)

Publication Number Publication Date
BRPI1016200A2 BRPI1016200A2 (pt) 2016-04-19
BRPI1016200B1 true BRPI1016200B1 (pt) 2020-10-20

Family

ID=42983180

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI1016200-3A BRPI1016200B1 (pt) 2009-04-16 2010-04-16 método para adicionar um nó a uma coleção de nós computacionais e método para a remoção de um nó de saída de uma coleção de nós de computação

Country Status (5)

Country Link
US (2) US9235623B2 (pt)
EP (1) EP2419845B1 (pt)
CN (2) CN102483768B (pt)
BR (1) BRPI1016200B1 (pt)
WO (1) WO2010121218A2 (pt)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9990110B1 (en) 2006-08-14 2018-06-05 Akamai Technologies, Inc. Private device cloud for global testing of mobile applications
US10929401B2 (en) * 2009-04-16 2021-02-23 Tibco Software Inc. Policy-based storage structure distribution
US20110153737A1 (en) * 2009-12-17 2011-06-23 Chu Thomas P Method and apparatus for decomposing a peer-to-peer network and using a decomposed peer-to-peer network
US10084856B2 (en) * 2009-12-17 2018-09-25 Wsou Investments, Llc Method and apparatus for locating services within peer-to-peer networks
US9251035B1 (en) 2010-07-19 2016-02-02 Soasta, Inc. Load test charts with standard deviation and percentile statistics
US9450834B2 (en) 2010-07-19 2016-09-20 Soasta, Inc. Animated globe showing real-time web user performance measurements
US9400799B2 (en) * 2010-10-04 2016-07-26 Dell Products L.P. Data block migration
US8776207B2 (en) * 2011-02-16 2014-07-08 Fortinet, Inc. Load balancing in a network with session information
US9112812B2 (en) * 2011-09-22 2015-08-18 Embrane, Inc. Distributed virtual appliance
US9165750B2 (en) 2012-01-23 2015-10-20 Jx Nippon Mining & Metals Corporation High purity copper—manganese alloy sputtering target
US20130263151A1 (en) * 2012-04-03 2013-10-03 Microsoft Corporation Consistent Hashing Table for Workload Distribution
US10601674B2 (en) 2014-02-04 2020-03-24 Akamai Technologies, Inc. Virtual user ramp controller for load test analytic dashboard
US9703788B1 (en) * 2014-03-31 2017-07-11 EMC IP Holding Company LLC Distributed metadata in a high performance computing environment
EP2947579A1 (en) * 2014-05-22 2015-11-25 Deutsche Telekom AG Method for generating a backup copy of a distributed data structure, system for generating a backup copy of a distributed data structure, program and computer program product
US20160191508A1 (en) * 2014-12-31 2016-06-30 Nexenta Systems, Inc. Methods and Systems for Block Sharding of Objects Stored in Distributed Storage System
US10346431B1 (en) * 2015-04-16 2019-07-09 Akamai Technologies, Inc. System and method for automated run-tme scaling of cloud-based data store
JP6241449B2 (ja) * 2015-05-21 2017-12-06 横河電機株式会社 データ管理システム及びデータ管理方法
JP6697158B2 (ja) * 2016-06-10 2020-05-20 富士通株式会社 情報管理プログラム、情報管理方法、及び情報管理装置
CN107908372B (zh) * 2017-12-14 2021-09-10 南京云创大数据科技股份有限公司 一种异地异构的多融合存储方法
US10540207B1 (en) 2018-07-18 2020-01-21 International Business Machines Corporation Fast, low memory, consistent hash using an initial distribution
US11429452B2 (en) 2020-04-16 2022-08-30 Paypal, Inc. Method for distributing keys using two auxiliary hashing functions
US11140220B1 (en) * 2020-12-11 2021-10-05 Amazon Technologies, Inc. Consistent hashing using the power of k choices in server placement
US11310309B1 (en) 2020-12-11 2022-04-19 Amazon Technologies, Inc. Arc jump: per-key selection of an alternative server when implemented bounded loads

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPR464601A0 (en) * 2001-04-30 2001-05-24 Commonwealth Of Australia, The Shapes vector
US6662198B2 (en) * 2001-08-30 2003-12-09 Zoteca Inc. Method and system for asynchronous transmission, backup, distribution of data and file sharing
US6993534B2 (en) * 2002-05-08 2006-01-31 International Business Machines Corporation Data store for knowledge-based data mining system
US6941310B2 (en) * 2002-07-17 2005-09-06 Oracle International Corp. System and method for caching data for a mobile application
US8200775B2 (en) 2005-02-01 2012-06-12 Newsilike Media Group, Inc Enhanced syndication
MXPA06004481A (es) * 2003-10-21 2006-07-10 United Parcel Service Inc Estructura de datos y sistema de administracion para un super conjunto de bases de datos relacionales.
US7493313B2 (en) * 2004-09-17 2009-02-17 Microsoft Corporation Durable storage of .NET data types and instances
US20060090003A1 (en) * 2004-10-22 2006-04-27 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US20060236386A1 (en) * 2005-03-31 2006-10-19 Popkin Laird A Method and apparatus for cooperative file distribution in the presence of firewalls
US7584205B2 (en) * 2005-06-27 2009-09-01 Ab Initio Technology Llc Aggregating data with complex operations
EP1802079B1 (en) * 2005-12-22 2010-03-31 Microsoft Corporation Connection management in peer-to-peer content distribution clouds
US7664107B2 (en) * 2006-04-05 2010-02-16 Microsoft Corporation Self-stabilizing and fast-convergent structured peer-to-peer overlays
ATE413765T1 (de) * 2006-07-07 2008-11-15 Alcatel Lucent Verteilter hashing-mechanismus für selbstorganisierende netzwerke
US8374086B2 (en) * 2007-06-06 2013-02-12 Sony Computer Entertainment Inc. Adaptive DHT node relay policies

Also Published As

Publication number Publication date
EP2419845A2 (en) 2012-02-22
WO2010121218A3 (en) 2011-02-24
US20160078117A1 (en) 2016-03-17
EP2419845B1 (en) 2018-03-28
BRPI1016200A2 (pt) 2016-04-19
EP2419845A4 (en) 2014-03-12
CN102483768A (zh) 2012-05-30
US20110066591A1 (en) 2011-03-17
CN105373613A (zh) 2016-03-02
US9235623B2 (en) 2016-01-12
CN102483768B (zh) 2015-12-16
WO2010121218A2 (en) 2010-10-21
US9367600B2 (en) 2016-06-14
CN105373613B (zh) 2019-05-14

Similar Documents

Publication Publication Date Title
BRPI1016200B1 (pt) método para adicionar um nó a uma coleção de nós computacionais e método para a remoção de um nó de saída de uma coleção de nós de computação
US11609914B2 (en) Policy-based storage structure distribution
Almeida et al. ChainReaction: a causal+ consistent datastore based on chain replication
US7546486B2 (en) Scalable distributed object management in a distributed fixed content storage system
EP2288997B1 (en) Distributed cache arrangement
KR101959153B1 (ko) 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템
CN104011701A (zh) 内容传送网络
KR102192442B1 (ko) 쿠버네티스 클러스터에서의 리더 분산 방법 및 리더 분산 시스템
Ghosh et al. Morphus: Supporting online reconfigurations in sharded nosql systems
US10515228B2 (en) Commit and rollback of data streams provided by partially trusted entities
Khan et al. Highly available Hadoop namenode architecture
Waqas et al. Transaction management techniques and practices in current cloud computing environments: A survey
EP3593243B1 (en) Replicating storage tables used to manage cloud-based resources to withstand storage account outage
Xiahou et al. Multi-datacenter cloud storage service selection strategy based on AHP and backward cloud generator model
Shi et al. GIRAFFE: A scalable distributed coordination service for large-scale systems
CN107547657A (zh) 一种基于云存储系统中单点数据编号的方法、装置以及存储介质
US8762664B2 (en) Replicating cache nodes in a cluster
Chakraborty et al. A proposal for high availability of HDFS architecture based on threshold limit and saturation limit of the namenode
Prasad et al. A Comparative Study of NoSQL Databases.
CN107734008A (zh) 一种数据存储系统中的故障处理的方法、装置、节点设备以及存储介质
KR101654969B1 (ko) 가상화 클러스터 환경에서 네임 노드를 할당하는 방법 및 장치
Alshammari et al. Hadoop based enhanced cloud architecture for bioinformatic algorithms
Alimjon Problems of data replication in distribution systems
Lin et al. An optimized multi-Paxos protocol with centralized failover mechanism for cloud storage applications
Das et al. Clouded Data: Comprehending Scalable Data Management Systems

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 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: 10 (DEZ) ANOS CONTADOS A PARTIR DE 20/10/2020, OBSERVADAS AS CONDICOES LEGAIS.

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE A 14A ANUIDADE.

B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2770 DE 06-02-2024 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.