120 likes | 213 Views
Software-Based Replication for Fault Tolerance. Apresentação do tema por João Ramires Tolerância a Faltas Distribuída Mestrado em Informática FCUL 1999/2000 Prof. Luís E.T.Rodrigues. Técnicas de Replicação. Primary-Backup Primary recebe pedidos do cliente e responde.
E N D
Software-Based Replication for Fault Tolerance Apresentação do tema por João Ramires Tolerância a Faltas Distribuída Mestrado em Informática FCUL 1999/2000 Prof. Luís E.T.Rodrigues
Técnicas de Replicação Primary-Backup • Primary recebe pedidos do cliente e responde. • Backups interagem com primary e não com o cliente.
Técnicas de Replicação Crash A - Antes de enviar Update. Crash B - Depois ou durante o envio mas antes de Pi receber Res. Crash C - Depois de Pi receber Res. Primary-Backup Op(arg),invID A Update (invID,res,state-update) B Ack Res OK(res) C Pi Prim X1 Bck X2 Bck X3
Técnicas de Replicação Primary-Backup - Eleger novo Prim. A - Pi não recebe Res : suspeita falha e reenvia. Novo Prim considera invID nova. B - Todos ou nenhuns Bcks recebem Update : - Se nenhum recebe : caso A; - Se todos recebem e Pi reenvia o mesmo invID, novo Prim responde imediatamente Res para Pi. C - Crash transparente a Pi.
Técnicas de Replicação Active replication (State-Machine Approach) • Todas as réplicas recebem a tarefa sem o controlo centralizado de um Primary. - Cada réplica processa Op(arg), faz update do seu estado e responde Res a Pi. - Pi espera até receber o primeiro Res. O crash de Xk é transparente a Pi : Pi nunca reenvia Op(arg).
Técnicas de Replicação Active replication Op(arg) Res OK(res) Pi X1 X2 X3
Comunicação em grupo Static vs dynamic groups • Static - Xk pertence a gx antes e depois da recuperação de Xk. • Dynamic - sistema remove Xk de gx quando Xk falha; se Xk recupera, é inserido novamente em gx. Primary-backup : se Prim falha, gx elege novo Prim -- Dynamic. Active : se Xk falha, não necessita de operações especiais -- Static. gx - representa o grupo de réplicas dos servidores X.
Comunicação em grupo Active replication Requer primitiva de total-order multicast : TOCAST(m, gx). Propriedades TOCAST : • Order : Se Xj e Xk entregam m1 e m2, réplicas entregam ambas as mensagens pela mesma ordem. • Atomicity : Se Xjgx entrega m, então todas as réplicas de gx entregam m. • Termination : Pi executa TOCAST(m, gx). Se Pi é correcto, então todas as réplicas correctas em gx eventualmente entregam m.
Comunicação em grupo Primary-backup Não requer primitiva TOCAST - Prim define a ordem de invocação. E se Prim falha ? - requer primitiva de comunicação em grupo. • Prim é invocado por Pi e falha quando envia update a X2 e X3 -- apenas X2 recebe update. • gx define Vi+1(gx)={X2, X3} e X2 passa a Prim. • Os estados de X2 e X3 são inconsistentes.
Comunicação em grupo Primary-backup Evitamos a inconsistência se garantirmos que todas ou nenhuma das réplicas recebem update -- view-synchronous multicast. Xk envia m(i) para a view Vi(gx) -- VSCAST garante que: - todas as réplicas de Vi(gx) eventualmente entreguem m(i) ou - o sistema define uma nova view Vi+1(gx).
Comunicação em grupo View-synchronous multicast (VSCAST) A - todas as réplicas entregam m(i). B - [sistema define nova view] todas as réplicas de Vi(gx) Vi+1(gx) distribuem m(i) antes de distribuir Vi+1(gx). A B Vi(gx)= {x1,x2,x3} Vi(gx) m(i) m(i) Crash Vi+1(gx)= {x2,x3} X1 X2 X3 X1 X2 X3
Comunicação em grupo View-synchronous multicast (VSCAST) C - [sistema define nova view] nenhuma réplica de Vi(gx) Vi+1(gx) distribui m(i). D - uma réplica trata m(i) em Vi(gx) e outra em Vi+1(gx) -- VSCAST previne este cenário. C D Vi(gx) Vi(gx) m(i) Crash Crash m(i) Vi+1(gx) Vi+1(gx) X1 X2 X3 X1 X2 X3