• Nenhum resultado encontrado

7.2 Projeto do middleware OppStore

7.2.1 Armazenamento e recuperação de dados

Aplicações e usuários da grade acessam o OppStore através de uma biblioteca denominada access

broker, que funciona como um intermediador de acesso ao sistema e esconde do usuário os detalhes dos

protocolos utilizados internamente pelo OppStore. Esta biblioteca possui uma interface com métodos que permitem o armazenamento e recuperação de arquivos. Diversos tipos de dados podem ser armazenados num sistema de grade, com cada tipo de dados possuindo diferentes requisitos. OppStore permite que aplicações clientes escolham entre dois métodos de armazenamento para os arquivos: (1) armazenamento perene e (2) armazenamento efêmero.

Armazenamento perene

O armazenamento perene é utilizado para dados que serão armazenados por longos períodos. Neste modo, o arquivo é codificado em fragmentos redundantes que são distribuídos pelos aglomerados da grade. A Figura 7.2 mostra o processo de armazenamento perene de um arquivo na ausência de falhas, que é realizado em vários passos:

1. O access broker codifica o arquivo em fragmentos redundantes, utilizando um algoritmo de dis- persão de informação (IDA) [37, 101]. Após o término da codificação, o access broker atribui um identificador a cada fragmento aplicando uma função de espalhamento segura de sentido único, a SHA-1 [44], sobre o conteúdo destes fragmentos.

2. O access broker envia a lista de identificadores de fragmentos ao CDRM de seu aglomerado. Este CDRM realiza o roteamento de uma mensagem para cada identificador na rede peer-to-peer, de modo a encontrar o CDRM responsável por cada identificador de fragmento.

3. Cada CDRM responsável pelo identificador de um fragmento seleciona um ADR de seu aglome- rado e devolve o endereço deste ADR ao CDRM original. O CDRM original repassa esta lista de endereços de ADRs ao access broker.

4. O access broker transfere o conteúdo dos fragmentos para os ADRs. Os dados são transmitidos diretamente do access broker para os ADRs, sem trafegar pela rede peer-to-peer.

5. Após o término da transferência, o access broker notifica o CDRM de seu aglomerado. O CDRM cria uma estrutura, chamada de FFI (File Fragment Index), que contém a localização e identificador de cada fragmento. O FFI recebe como identificador o valor da aplicação da função SHA-1 sobre a lista de identificadores dos fragmentos. O CDRM do aglomerado realiza o roteamento do FFI para armazenamento remoto no CDRM responsável pelo identificador do FFI.

Diversos problemas podem ocorrer durante o armazenamento de um arquivo. (1) Durante o processo de escolha de um ADR de seu aglomerado, é possível que o CDRM não encontre nenhum ADR com

Figura 7.2: Armazenamento perene de arquivos no OppStore.

espaço em disco suficiente. Neste caso o CDRM repassa a requisição para o CDRM vizinho. (2) A mensagem solicitando o endereço de um ADR, ou sua resposta, podem se perder durante o roteamento. Neste caso, o broker receberá um número insuficiente de endereços ADRs e realizará o armazenamento de um número menor de fragmentos. (3) Podem ocorrer problemas durante a transmissão dos fragmentos para os ADRs. Caso um ou mais fragmentos não sejam transferidos corretamente, o ADR marca aqueles fragmentos como indisponíveis no FFI. Deste modo, o arquivo é armazenado, mas com um número menor de fragmentos. (4) O armazenamento do FFI do arquivo pode falhar. Neste caso, o access broker tenta repetir o procedimento por duas vezes e, caso não consiga armazenar o FFI, o access broker retorna uma mensagem de erro à aplicação que solicitou o armazenamento e solicita aos ADRs a remoção dos fragmentos que foram armazenados.

7.2 Projeto do middleware OppStore 107 A recuperação de dados no OppStore é também realizada em vários passos:

1. O access broker requisita ao CDRM de seu aglomerado o FFI associado ao arquivo desejado, utilizando o identificador deste arquivo, fornecido por uma aplicação ou usuário. Este CDRM realiza então o roteamento de uma mensagem para o CDRM responsável por este identificador, que devolve o FFI correspondente. Caso o FFI do arquivo não seja localizado, o CDRM retorna uma mensagem de erro ao access broker, que por sua vez retorna um erro à aplicação que solicitou o arquivo.

2. Após receber o FFI, o access broker verifica sua integridade, aplicando a função SHA-1 sobre a lista de identificadores dos fragmentos e comparando com o identificador do arquivo. Em seguida, o access broker realiza a recuperação dos fragmentos, escolhendo para a transferência os repo- sitórios mais próximos ou com maior velocidade de conexão. O access broker verifica então a integridade dos fragmentos, comparando o valor do SHA-1 sobre seu conteúdo com os identifica- dores destes fragmentos.

3. Caso consiga recuperar corretamente um número suficiente de fragmentos, o access broker recons- trói o arquivo a partir do conteúdo destes fragmentos. O arquivo é então devolvido à aplicação ou usuário. Caso contrário, o access broker devolve uma mensagem de erro. Os problema que podem ocorrer são erros na verificação da integridade no conteúdo do FFI ou dos fragmentos e problemas na transferência de fragmentos a partir dos ADRs.

Devemos enfatizar que o conteúdo dos fragmentos não trafega pelos nós da rede peer-to-peer durante o roteamento de mensagens para encontrar os nós que irão armazená-los. O conteúdo destes fragmentos é transferido diretamente entre o access broker e os ADRs. Isto é importante pois arquivos podem ter tamanhos da ordem de Gigabytes e sua transferência através da rede peer-to-peer geraria um tráfego muito maior e poderia sobrecarregar os CDRMs.

Além disso, ao colocar a localização dos fragmentos no FFI, esta localização passa a ser independente dos identificadores dos CDRMs. Deste modo, quando o identificador do CDRM em cujo aglomerado o fragmento está armazenado muda, não é necessário mover fragmentos entre aglomerados. Já os FFIs são recuperados utilizando seu identificador, de modo que estas estruturas podem precisar ser copiadas no caso de alteração nos identificadores de CDRMs. Mas o seu tamanho é bastante reduzido quando comparado ao de fragmentos de arquivos.

Armazenamento efêmero

O armazenamento efêmero é utilizado para dados que precisam ser armazenados e recuperados rapi- damente e que serão utilizados por curtos períodos de tempo, da ordem de alguns minutos. Neste método de armazenamento, o sistema armazena o arquivo no aglomerado de onde a requisição foi submetida e

utiliza replicação para prover tolerância a falhas. A desvantagem deste modo de armazenamento é que o sistema oferece menos garantias sobre a disponibilidade dos dados armazenados. Entre os tipos de dados que poderiam ser armazenados no modo efêmero estão arquivos temporários e checkpoints [39, 46] de aplicações.

Para realizar o armazenamento no modo efêmero, o access broker solicita ao CDRM de seu aglo- merado uma lista de ADRs daquele aglomerado, onde réplicas do arquivo podem ser armazenadas. O

access broker transmite então as réplicas para estes repositórios e notifica o CDRM de seu aglomerado,

que cria um FFI, contendo os locais de cada réplica e o valor do SHA-1 das réplicas. O CDRM atribui como identificador do FFI o valor do SHA-1 das réplicas e realiza o armazenamento do FFI no CDRM remoto responsável pelo identificador do FFI. Mas o CDRM do aglomerado também guarda uma cópia local, de modo que o FFI estará prontamente disponível quando for solicitado a partir do aglomerado.

A recuperação de dados é similar, com o access broker requisitando ao CDRM do aglomerado o FFI, obtendo o conteúdo de uma das réplicas de um repositório e devolvendo o arquivo à aplicação solicitante.