Click here to load reader

Gerenciamento de Grupo na Plataforma ISIS Apresentado por Antônio Carlos Theóphilo Costa Júnior

  • View
    216

  • Download
    0

Embed Size (px)

Text of Gerenciamento de Grupo na Plataforma ISIS Apresentado por Antônio Carlos Theóphilo...

  • Gerenciamento de Grupo na Plataforma ISISApresentado por Antnio Carlos Thephilo Costa Jnior

  • RoteiroTrabalho RelacionadoAlgoritmo de Gerenc. de Grupo ISISAspectos GeraisCaractersticasVantagensCdigoCaractersticas

  • Trabalho RelacionadoAlgoritmo TransisVantagens

    Soluo EleganteGeralDesvantagens

    Requer multicast em cada membroDepende do suporte dado pelo algoritmo Trans

  • Algoritmo ISISProposto por Aleta Ricciardi e Kenneth Birman para realizar o Gerenciamento de Grupos na Plataforma ISIS.Projetado para ambientes de comunicao ponto-a-ponto.Vantagens:Mais eficiente em ambientes aonde o multicast implementado com mensagens ponto-a-ponto;Pode ser usado em ambientes sem multicast.

  • Algoritmo ISISCaractersticas GeraisParanicoUnidirecional (one-way)Fofoqueiro (gossipy)Supe canais ponto-a-ponto confiveis e FIFODescarta mensagens de processos considerados faltosos

  • Algoritmo ISIS

    Conceitos

    CoordenadorParticipanteReconfigurao

  • Variveis UtilizadasL= Viso atual do grupoversion= Verso de Lchange= ltima mudana proposta a Lrank= Nvel do coordenador q props a mudanafaulty= Lista de processos suspeitosremoteState[1..M]= Estados dos participantesremoteState[i].L= Viso do grupo por iremoteState[i].version= Verso da visoremoteState[i].rank= Nvel do coordenador q implantou a visoremoteState[i].change= Mudana proposta por i

  • Abreviaessend(dest, action, params)

    send(dest, action, params, faulty)action(sender, params){cdigo ... }

    action(sender, params, remFaulty)faulty = faulty U remFaulty{cdigo ... }

  • Abreviaesdistribute(action; params)returnAction(sender; params){cdigo ... }

    para cada p em {L - faulty}send(p, action, params) //time-out de T segundosreturnAction(sender, params){cdigo ... }para cada p em {L - faulty} que no respondeufaulty = faulty U {p}

  • Operao Normal - CoordenadornormalCoordinator() { while (true) {espere at a ocorrncia de uma mudana na viso do grupodistribute(COORD_UDDATE; change, version + 1)CU_ACK(sender, version)version++realiza as mudanas em L descritas em changedistribute(CU_COMMIT)CC_ACK(sender) }}

  • Operao Normal - ParticipantenormalParticipant() { while(true) {espere por uma msg do coordenadorCOORD_UPDATE(coordinator; chg, vrs): change = chg next_version = vrs rank = rank(coordinator) send(coordenador; CU_ACK)CU_COMMIT(coordinator): realizar a mudana descrita em change para L version = next_version change = {} send(coordinator; CC_ACK) }}

  • Reconfigurao Coordenador (1)reconfigureCoordinator() { myState = (L, version, rank, {}) distribute(INTERROGATE; myState) INT_RESPONSE(sender; rState) remoteState[sender] = rState ahead = {p | p in L and remoteState[p].version > version} current = {p | p in L and remoteState[p].version = version} ...

  • Reconfigurao Coordenador (2) ... if (ahead != {}) //existe uma visao mais atualizada comitada //deve-se propo-la else if (para todo p em current remoteState[p].change = {}) //no existem mudancas comitadas else if (existe um valor p/ remoteState[p].change!={} em current) //uma proposta foi feita. Ela pode ter sido comitada. //Deve ser proposta else //existem propostas competindo para uma mudanca. A proposta proposta pelo reconfigurador com o menor rank e a unica q pode ter sido comitada ...

  • Reconfigurao Coordenador (3)distribute(REORD_UPDATE; change, nextVersion) RU_ACK(sender)atualize L com changecoordinator = selfchange = futureProposalexecutar o normalCoordinator}

  • Detalhamento (1)//existe uma visao mais atualizada comitada//deve-se propo-laif(ahead != {}) change = remotestate[p].L para um p em ahead nextVersion = version + 1 futureProposal = remoteState[p].change para um p em ahead tal que remoteState[p].rank seja minimo

  • Detalhamento (2)//no existem mudancas comitadaselse if(remoteState[p].change = {} p/ qq p em current) change = faulty //pelo menos o antigo coordenador nextVersion = version +1 futureProposal = faulty

  • Detalhamento (3)//uma proposta foi feita. Ela pode ter sido comitada.//Deve ser propostaelse if(existe um unico valor != {} de remoteState[p].change para um p em current) change = remoteState[p].change para um p em current tal que change != {} nextVersion = version +1 futureProposal = faulty

  • Detalhamento (4)//existem propostas competindo para uma mudanca. A proposta proposta pelo reconfigurador com o menor rank e a unica q pode ter sido comitadaelse() change = remoteState[p].change para um p em current tal que remoteState[p].rank seja minimo nextVersion = version +1 futureProposal = faulty

  • Reconfigurao Participante (1)reconfigureParticipant() { espere por uma msg INTERROGATE INTERROGATE(sender; sdrL, sdrVersion, sdrRank, sdrChange) if(rank(self)>sdrRank) crash() if(version
  • Reconfigurao Participante (2) ... change = nextChange rank = rankSender send(sender; RU_ACK) espere T segundos por REORD_COMMIT REORD_COMMIT se no tiver havido resposta adicione sender a faulty e saia do procedimento se nextVersion > version realize em L a mudana descrita em change version = nextVersion coordinator = sender send(coordinator, RC_ACK)}

  • Caractersticas (1)coordp2p1rupdate(x+1)update(x+2)commit(x+1)commit(x+2)r falhouinterrogate

    Um reconfigurador v no mximo uma viso comitada de verso x+1

  • Caractersticas (2)

    Reconfiguradores competindo para instalar verses conflitantespp1p2p3rcommit(x+1)p falhour falhouinterrogate/update/commitupdate(x+2)crash()

  • ResumoVantagensAlgoritmo ideal para ambientes de comunicao em grupo sem suporte nativo a multicasttil em ambientes de grupo sem multicastConsistncia mantida mesmo na presena simultnea de mltiplos coordenadores

    Desvantagens ComplexidadeParania

  • FIMCrticas/Dvidas

Search related