10.08.2015 Views

Replicação Protocolos

Replicação. Protocolos.

Replicação. Protocolos.

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Replicação</strong>. <strong>Protocolos</strong>.June 2, 2010


SumárioArquitectura<strong>Protocolos</strong> baseados em Primário<strong>Protocolos</strong> de Escrita Replicada<strong>Protocolos</strong> para “client-centric consistency”Leitura Adicional


SumárioArquitectura<strong>Protocolos</strong> baseados em Primário<strong>Protocolos</strong> de Escrita Replicada<strong>Protocolos</strong> para “client-centric consistency”Leitura Adicional


<strong>Replicação</strong>: Arquitectura Básica◮ Transparência é garantida principalmente pelo front end◮ stubs/proxies podem facilitar a transparência, embora . . .◮ Consistência é garantida através de algoritmosdistribuídos executados pelos replica managers.


<strong>Protocolos</strong> de <strong>Replicação</strong>◮ Primary-Copy◮ Replicated-Write◮ Para client-centric consistency


SumárioArquitectura<strong>Protocolos</strong> baseados em Primário<strong>Protocolos</strong> de Escrita Replicada<strong>Protocolos</strong> para “client-centric consistency”Leitura Adicional


Primary-Copy Protocol◮ Uma das réplicas é o primário e as outras são de apoio(backup) – primary-backup.◮ Todas as operações são submetidas ao primário:◮ O primário executa a operação e submete-a ou os seusresultados aos apoios, antes de responder.◮ Dependendo do modêlo de avarias, o primário poderá terque bloquear à espera da resposta dos apoios.◮ O primário é substituído por um apoio, que passa a ser onovo primário, no caso de avaria.


<strong>Protocolos</strong> Primário-Apoio com Leitura LocalW1ClientW5Primary serverfor item xClientR1R2Backup serverW4W3W4W3Data storeW2W4W3W1. Write requestW2. Forward request to primaryW3. Tell backups to updateW4. Acknowledge updateW5. Acknowledge write completedR1. Read requestR2. Response to read◮ Operações de leitura podem ser feitas em qualquer réplica.◮ Operações de escrita são feitas no primário.◮ Como no protocolo base, o primário propaga os resultadosaos apoios.◮ Permite um melhor desempenho, em especial se asoperações de leitura forem mais frequentes do que asoperações de escrita.


Protocolo Primário-Apoio com Escrita LocalClientR1R2Old primaryfor item xNew primaryfor item xW1ClientW3Backup serverW5W4W2W5W4W5W4Data storeW1. Write requestW2. Move item x to new primaryW3. Acknowledge write completedW4. Tell backups to updateW5. Acknowledge updateR1. Read requestR2. Response to read◮ Operações de escrita podem ser feitas em qualquerréplica.◮ Mas só depois da réplica se tornar primário, i.e. o primárioé itinerante.◮ Permite melhorar o desempenho se:◮ A réplica escolhida estiver próximo do cliente.◮ A propagação dos resultados às réplicas ocorrer após umconjunto de operações de escrita.


SumárioArquitectura<strong>Protocolos</strong> baseados em Primário<strong>Protocolos</strong> de Escrita Replicada<strong>Protocolos</strong> para “client-centric consistency”Leitura Adicional


<strong>Protocolos</strong> de Escrita Replicada◮ Operações de escrita são feitas em mais do que umacópia.◮ Nos protocolos à base de primário, operações de escritasão executadas apenas no primário, sendo os resultadospropagados aos apoios.◮ Alguns protocolos:◮ <strong>Replicação</strong> activa (ou read-one, write-all);◮ Votação (Quorum Consensus).


Read-one/Write-all Protocol (Active Replication)◮ Nos protocolos baseados em primário, o primário tem quepropagar os resultados aos apoios, antes de responder aocliente, aumentando a latência do serviço.◮ No read-one/write-all protocol:◮ operações de leitura podem ser executadas por qualquerréplica;◮ operações de escrita têm que ser executadas por todas asréplicas, na mesma ordem.◮ Assume determinismo das réplicas:◮ o estado duma réplica depende apenas do estado inicial eda sequência de operações que lhe são aplicadas.


Available Copies Protocol◮ No Read-one/Write-all Protocol se uma réplica estiveravariada, não é possível executar operações de escrita.◮ A ideia no Available Copies Protocol é exigir que asoperações de escrita sejam executadas apenas nasréplicas operacionais.◮ O primary-backup e o available copies podem ser usadosem redes que se partem:◮ Mas o acesso só é possível na partição com a maioria dasréplicas.


Quorum Consensus Protocols (1/3)◮ Este tipo de protocolos baseia-se no uso de quorums◮ conjuntos de réplicaspara realizar operações.◮ A propriedade fundamental destes quorums é:◮ se 2 operações podem interferir, então os respectivosquorums devem ter elementos comuns.Read quorumA B C D A B C D A B C DE F G H E F G H E F G HI J K L I J K L I J K LN R = 3, N W = 10 N R = 7, N W = 6 N R = 1, N W = 12Write quorum(a) (b) (c)IMP.: b) não é correcto. Porquê?


Quorum Consensus Protocols (2/3)◮ Cada réplica mantém além do valor do “objecto” replicadoo seu número de versão.◮ Para realizar uma operação:◮ envia uma mensagem broadcast solicitando a versão doobjecto;◮ aguarda a recepção de respostas dum número suficientede réplicas◮ No caso duma operação:Leitura lê o valor do objecto na réplica com o maiornúmero de versão;Escrita escreve o valor do objecto num número suficientede réplicas, atribuindo-lhe uma versão superior aqualquer das versões recebidas◮ É essencial garantir que o valor do objecto é escritonum número suficiente de réplicas.


Estado a ManterWID Cada operação de escrita tem um identificador, atribuídopelo servidor que aceita a operação, i.e. o primeiro servidora aplicar a operação.Servidor Mantém o conjunto de identificadores de todas asoperações de escrita que conduziram ao estado da réplica.(WS).Cliente Mantém 2 conjuntos de WIDs para a sessão:Read-Set (CRS) contendo os identificadores de todas asoperações de escrita relevantes para os valores lidosdurante a sessão.◮ Em cada operação de leitura, o servidor tem queretornar o conjunto com os WIDs das operações deescrita relevantes.Write-Set (CWS) contendo os identificadores das operaçõesde escrita que realizou durante a sessão.◮ Em cada operação de escrita, o servidor tem queretornar o WID respectivo.


Implementação de “read your writes”ClienteOperação de escrita Acrescenta o WID atribuído pelo servidorao CWSOperação de leitura Duas alternativas:1. Solicita ao servidor o seu WS◮ Se CWS ⊄ WS, o cliente terá que escolher outroservidor.2. Envia o seu CWS ao servidor.ServidorNo caso 2. acima, deverá verificar se CWS ⊂ WS. Em casonegativo, tem duas alternativas:1. Reenviar o pedido para outro servidor.2. Actualizar o seu estado de modo a satisfazer a condiçãoacima.Nota A implementação de “monotonic reads” é semelhante.


Implementação de “writes follow reads”ClienteOperação de leitura Actualiza o CRS.Operação de escrita Duas alternativas:1. Solicita ao servidor o seu WS◮ Se CRS ⊄ WS, o cliente terá que escolher outroservidor.2. Envia o seu CRS ao servidor.ServidorNo caso 2. acima, deverá verificar se CRS ⊂ WS. Em casonegativo, tem 2 alternativas1. Reenviar o pedido para outro servidor.2. Actualizar o seu estado de modo a satisfazer a condiçãoacima.◮ Na propagação de operações de escrita entre servidores,há que preservar a ordem destas operações.Nota A implementação de “monotonic writes” é semelhante.


Vectores de Versão (1/2)Problema: A implementação dos conjuntos de forma explícitanão é eficiente:◮ Estado mantido pelos clientes e servidores cresceindefinidamente.◮ Necessidade de transferir alguns destes conjuntos entreC e S.Solução: Usar vectores de versão, um vector semelhante aum vector clock, com um elemento por servidor.◮ Cada servidor mantém um contador de versão daréplica que mantém◮ Este contador deve ser incrementado sempre que oservidor aceita uma operação de escrita.


Vectores de Versão (2/2)ServidorMantém um vector de versão (V i ) que representa o estado daréplica que mantém.V i [j] representa as operações aceites pelo servidor japlicadas no servidor iObs. V i [i] é o contador de versão do servidor i.Obs. As operações aceites por um servidor remotodeverão ser aplicadas pela mesma ordem.ClienteMantém 2 vectores de versão por sessão:◮ Um para para memorizar as suas operações de escrita(W i ).◮ Um para memorizar as operações de escrita relevantespara as suas operações de leitura (R i )


Implementação de Read Your Writes com VVServidor◮ Verifica se V i domina W j , i.e. V i ≥ W j .◮ Em caso negativo, deverá actualizar a sua réplica.◮ A verificação poderia ser feita do lado do cliente.◮ Retorna um vector com as operações de escrita relevantes(RW ).◮ Uma aproximação possível é V i .◮ Pode causar dificuldades na localização dum servidorsuficientemente actualizado.◮ Convém mudar o menos possível de servidor durante umasessão.Verificações da actualidade do servidorpodem ser omitidas após o primeiro pedido.Cliente◮ Actualiza o seu vector de leitura R j = max(R j [i], RW ).


Implementação de Write Follows Reads com VVCliente◮ Verifica se V i ≥ R j (Assumindo que a verificação é feita nocliente.)◮ Actualiza o seu vector de escrita W j [i] = v◮ Efectivamente, o par (i, v) é o WID da operação.Servidor◮ Actualiza o seu contador de versão (V i [i]), e retorna o seuvalor (v).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!