Sistemas Distribuídos

Documentos relacionados
Sistemas Distribuídos

Sistemas Distribuídos e Redes de Sensores

Sincronização em Sistemas Distribuídos

Sistemas Distribuídos

Sistemas Distribuídos

Comunicação orientada a mensagens

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Ordenação. Relógios lógicos

Sistemas Distribuídos e Redes de Sensores

Comunicação de Grupo: Disfusão Confiável e Atômica

Exclusão Mútua em Sistemas Distribuídos

Roteiro. Introdução Sincronização de Relógio Físico Sincronização de Relógio Lógico Exclusão Mútua

Relógios Lógicos. Sumário. November 27, Relação Happened-Before. Relógios de Lamport. Relógios Vectoriais

falhas em sistemas distribuídos

Sistemas Distribuídos Capítulo 8 - Aula 15

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

falhas em sistemas distribuídos

Exclusão Mútua Distribuída. Algoritmos para eleição de um coordenador ou líder. UBI, DI, Paula Prata SDTF T04 1

Sistemas Distribuídos Estados globais. Vinícius Fernandes Soares Mota

Sistemas Distribuídos Aula 16

Modelos Fundamentais. Introdução. Interação. Falhas. Segurança. Prof. Adriano Fiorese

Exclusão Mútua Distribuída. Algoritmos para eleição de um coordenador ou líder. UBI, DI, Paula Prata SDTF T04 1

(Broadcast - um emissor envia a mensagem para todos os nós do sistema) Multicast um emissor, um grupo de processos como receptores

Sistemas Distribuídos Aula 15

Sistemas Distribuídos Aula 17

Sistemas Distribuídos. 7 Coordenação e Acordo. Coordenação e Acordo. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Tolerância a Falhas com Máquinas de Estado

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos Exclusão Mútua. Edeyson Andrade Gomes

Sistemas Distribuídos Grupos

Sistemas Distribuídos e Redes de Sensores. abril de 2013

Ordenação. Sistemas Distribuídos e Tolerância a Falhas. Universidade da Beira Interior 07/08

Vamos fazer um pequeno experimento

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos

Tolerância a Falhas. Reliable Broadcast e Atomic Commitment. June 2, 2010

Desenvolvimento de um Middleware Distribuído para Ordenação de Mensagens Segundo os Algoritmos FIFO, Causal e Total

Direto ou Indireto Monolítico ou Estruturado Simétrico ou Assimétrico Padronizado ou Não-Padronizado

Sistemas Distribuídos

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

SISTEMAS DISTRIBUÍDOS

Sincronização em Sistemas Distribuídos

Exclusão Mútua Distribuída

Aluísio Augusto Silva Gonçalves 17 de maio de 2018

Tempo e sincronização

Nível de Enlace. Nível de Enlace. Serviços. Serviços oferecidos os nível de rede

Tempos e Estados Globais. ECO036 - Sistemas Paralelos e Distribuídos

Consenso Distribuído em Sistemas Assíncronos

Sistemas Distribuídos Capítulo 6 - Aula 12

PROTOCOLOS DE COMUNICAÇÃO

Nível de Enlace. Nível de Enlace. Serviços. Serviços. Serviços. Serviços. Serviços oferecidos os nível de rede

Sistemas Distribuídos Capítulo 8 - Aula 14

Sistemas Operacionais II

Sistemas Distribuídos

Sistemas Distribuídos Capítulo 8 - Aula 13

Sistemas Distribuídos Capítulo 6 - Aula 10

Sistemas Distribuídos. Capítulo 7 - Aula 16

Algoritmos Distribuídos (exclusão mútua) ALGORITMOS DISTRIBUÍDOS Exclusão mútua. Algoritmos Distribuídos (exclusão mútua)

Redes de Computadores. Prof. André Y. Kusumoto

Nível de Enlace. Laboratório MídiaCom - UFF Profa. Débora Christina Muchaluat Saade

Introdução Tempo Lógico Relógios Lógicos de Lamport Relógios Lógicos Vetoriais. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Redes de Computadores. Redes de Computadores. Redes de Computadores. ü Contador de caracteres. ü Stuffing de caracteres.

SISTEMAS DISTRIBUÍDOS. CAPÍTULO 4 COMUNICAÇÃO Slides cedidos pela professora Aline Nascimento e do livro texto

Sistemas Distribuídos Aula 2

SISTEMAS DISTRIBUÍDOS

Redes de Computadores.

Redes de Computadores. Prof. MSc André Y. Kusumoto

Características de Sistemas Distribuídos

SISTEMAS DISTRIBUÍDOS

Algoritmos Distribuídos (deadlock) ALGORITMOS DISTRIBUÍDOS Deadlock. Algoritmos Distribuídos (deadlock) Algoritmos Distribuídos (deadlock)

TRANSPORTE. Prof. Me. Hélio Esperidião

Características de Sistemas Distribuídos

Comunicação entre processos (grupos) COMUNICAÇÃO ENTRE PROCESSOS Comunicação de grupo. Comunicação entre processos (grupos)

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Redes de Computadores

Sistemas Distribuídos. Capítulo 6 - Aula 10

Um Algoritmo Probabilista de Recuperação de Erros para Difusão Fiável

INTRODUÇÃO. RPC x RMI

Protocolo de transporte em tempo-real (Real- Time Transport Protocol) Definido na RFC 3350 Normalmente usado sobre o UDP Serviços

Protocolos TCP e UDP. Protocolo TCP. Protocolo TCP. A necessidade de uma comunicação segura: Transmission Control Protocol

TCP - controle de fluxo

Redes de Computadores. Prof. André Y. Kusumoto

Algoritmos Distribuídos. AD Algoritmos Básicos 1

Reduzindo os Efeitos do Bufferbloat sobre Multi-Caminhos em Redes Sem Fio Heterogêneas

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Estados globais. Capítulo 10: Visão geral. Estados globais. Estados globais. Estados globais. Estados globais

Sistemas Distribuídos

Sistemas Operacionais Distribuídos e de Redes

Agregação de Mensagens em uma Solução Hierárquica de Difusão de Melhor-Esforço

Nível de Rede. Modelo de Referência OSI GCAR

Nível de Rede. Funções do nível de rede GCAR

Arquiteturas. capítulo

Estilos Arquiteturais

Sincronização de Relógios e Relógios Lógicos. Histórico da comunicação. Tempo Global. Mecanismos de ordenação total

Comunicação de Dados II

Sistemas Distribuídos

Sistemas Distribuídos

Transcrição:

Sistemas Distribuídos Comunicação em Grupo maio de 2017

Grupos em Aplicações Distribuídas grupos fortemente acoplados: replicação de serviços confiabilidade tempo de resposta clientes com estado compartilhado computação científica... Primitiva de comunicação em grupo um processo envia uma mensagem para um grupo de processos e todos os destinatários recebem primitivas de envio de mensagem em broadcast

Grupos em Aplicações Distribuídas grupos fracamente acoplados: observadores melhor esforço monitoramento de ambientes de execução consumo de dados: valores de mercados, etc Primitiva de comunicação em grupo um processo envia uma mensagem para um grupo de processos e todos os destinatários recebem publish/subcribe e serviços de eventos

Broadcast ou Multicast em redes: conceito de entrega para todos e para alguns conceitos se confundem em sistemas distribuídos

Comunicação em Grupo: Problemas Novos alguns recebem e outros não processos rececebem mensagens em ordens diferentes

Garantias de Entrega confiabilidade ordenação Implementação chegada X entrega

Exemplo: envio de msg para um grupo de processos

Níveis de garantia de entrega 1 Melhor-esforço (best-effort): garantia de entrega entre processos corretos 2 Confiável (reliable): garantia all-or-nothing mesmo se o emissor falhar 3 Ordem xyz: garantia de entrega na ordem xyz

Garantia de entrega: Implementação uso de holdback queue em geral, mensagens com identificadores únicos o que já existe no SO agora em bibliotecas ou middlewares custos de espaço e processamento!

Garantias de entrega: Implementação por algoritmos distribuídos notação orientada a eventos

Componentes orientados a eventos notação baseada em eventos assíncronos. cada componente é identificado por um nome, provê uma interface na forma de eventos que ele trata (requests) ou produz (indications). e garante um conjunto de propriedades. R. Guerraoui, L. Rodrigues. Reliable Distributed Programming. Springer. 2006.

Exemplo de código nos componentes upon event <Event1 att1, att2,...> do...faz algo... trigger <Event2 att1, att2,...>;// envia evento upon event <Event3 att1, att2,...> do...faz algo... trigger <Event4 att1, att2,...>; //envia evento

Exemplo de módulo de impressão Módulo Module: Name: Print Events: Request: <PrintRequest rqid, str> Indication: <PrintConfirm rqid> Algoritmo Implements: Print upon event <PrintRequest rqid, str> do print(str); trigger <PrintConfirm rqid>;

Exemplo de serviço de impressão com n o de requisições limitado Módulo Module: Name: BoundedPrint Events: Request: <BoundedPrintRequest rqid, str> Indication: <PrintStatus rqid,status>: Ok/Nok Indication: <PrintAlarm>: atingiu o limite

Exemplo... impressão com n o de requisições limitado Algoritmo Implements: BoundedPrint Uses: Print upon event <Init> do bound := Threshold; upon event <BoundedPrintRequest rqid, str> do if bound > 0 then bound := bound - 1; trigger <PrintRequest rqid, str>; if bound = 0 then trigger <PrintAlarm>; else trigger <PrintStatus rqid, Nok>; upon event <PrintConfirm rqid> do trigger <PrintStatus rqid, Ok>;

Broadcast do melhor-esforço Um processo envia uma msg em um passo de comunicação para todos os processos do sistema, incluindo ele mesmo Custo para garantir confiabilidade é apenas do lado do emissor (se ele falhar, nenhuma garantia de entrega é oferecida)

Interface e propriedades do Bcast melhor-esforço Module: Name: BestEffortBroadcast (beb). Events: Request: <bebbroadcast m>: bcast m Indication: <bebdeliver src, m>: entrega m Properties: BEB1: Validade melhor-esforço: se Pi e Pj s~ao corretos, toda msg de Pi é entregue em Pj BEB2: N~ao duplicaç~ao: nenhuma msg é entregue mais de uma vez BEB3: N~ao-criaç~ao: se a msg é entregue em Pj ent~ao ela foi difundida por Pi

Algoritmo Bcast básico Implements: BestEffortBroadcast (beb) Uses: PerfectPointToPointLinks (pp2p) upon event <bebbroadcast m> do forall pi do trigger <pp2psend pi, m>; upon event <pp2pdeliver> pi, m> do trigger <bebdeliver pi, m>;

Exemplo de execução de Bcast básico Desempenho: o algoritmo requer um único passo de comunicação e troca N mensagens

Interface de comunicação p2p utilizada... Interface do enlace Module: Name: PerfectP2PLink Events: Request: < pp2psend dest, msg > Indication: < pp2pdeliver src, msg > entrega confiável: se p i manda para p j e nenhum deles falha, p j em algum momento recebe ausência de duplicação de mensagens ausência de criação de mensagens Propriedades do enlace propriedades caras em alguns ambientes!

exemplo implementação PerfectP2P 1 retransmite eternamente (didático mas sem bom desempenho...) 2 elimina duplicatas 3 entrega mesmo com falhas intermitentes...

confiabilidade do broadcast de melhor esforço 1 se transmissor não falhar, garantia de entrega a todos 2 se transmissor falhar: processos podem discordar sobre entrega de mensagem broadcast de melhor esforço pode não ter transmitido para todos ou falha pode ter ocorrido antes de terem sido feitas as retransmissões necessárias

Broadcast confiável todos os processos devem receber (tratar) o mesmo conjunto de mensagens noção de acordo solução para modelo fail-stop

Interface e propriedades do Bcast confiável Molule: Name: Reliable Broadcast (rb). Events: Request: <rbbroadcast m>: bcast m Indication: <rbdeliver src, m>: entrega m Properties: RB1: Validade: se Pi e Pj s~ao corretos, toda msg de Pi é entregue em Pj RB2: N~ao duplicaç~ao: nenhuma msg é entregue mais de uma vez RB3: N~ao-criaç~ao: se a msg é entregue em Pj ent~ao ela foi difundida por Pi RB4: Acordo: Se msg é entregue em processo correto pi, ent~ao m é entregue em algum momento em qualquer processo correto pj

Algoritmo Bcast confiável regular Implements: ReliableBroadcast (rb) Uses: BestEffortBroadcast (beb) upon event <Init> do delivered := {}; upon event <rbbroadcast m> do delivered := delivered U {m}; trigger <rbdeliver self, m>; trigger <bebbroadcast [DATA,self,m]>; upon event <bebdeliver> pi, [DATA,self,m] > do if(m not in delivered) do delivered := delivered U {m}; trigger <rbdeliver source_m, m>; trigger <bebbroadcast [DATA,source_m,m]>;

Exemplo de execução de Bcast confiável regular

Broadcast confiável regular limitação mensagem pode ser tratada no próprio processo emissor antes de chegar a outros, e em seguida emissor falhar P1 P2 P3 P4 X pode causar problemas se reflexos no mundo externo

Broadcast confiável uniforme mensagem só é entregue a aplicação depois que todos os processos no grupo confirmam recebimento necessidade de detector de falhas perfeito gera alertas de falhas de processos acoplamento fortíssimo entre processos

Broadcast ordenado As soluções anteriores não garantem ordem de entrega das mensagens enviadas por processos diferentes (pp2p pode garantir ordem de entrega de msgs de 1 mesmo processo) Algumas aplicações precisam de garantias de ordem de entrega. ordem total ordem causal

Ordem Total Não importa a ordem de entrega, mas deve ser a mesma em todos os processos do grupo.

Ordem total com sequenciador

Ordem total com votação de ordem

Ordem Causal possível relação de causalidade uma mensagem pode ter sido consequencia de outra ainda não vista

Causalidade em eventos distribuídos... a >b: o evento a ocorre antes do evento b se a ocorre antes de b em um mesmo processo P a=send(m) no processo P e b=receive(m) no processo Q existe c tal que a precede c e c precede b a b: os eventos a e b são concorrentes

Interface e propriedades do Bcast ordem causal Molule: Name: ReliableCausalOrder (rco) Events: Request: <rcobroadcast m>: bcast m Indication: <rcodeliver src, m>: entrega m Properties: CB: Entrega causal: m2 só é entregue em Pi se toda msg mi tal que mi->m2 foram entregues RB1: Validade RB2: N~ao-duplicaç~ao RB3: n~ao-criaç~ao RB4: Acordo

Algoritmo Bcast ordem causal Uses: ReliableBroadcast (rb) upon event <Init> do delivered := 0; past := 0; upon event <rcobroadcast m> do trigger <rbbroadcast [DATA,past,m]>; past := past U {(self,m)}; upon event <rbdeliver> pi, [DATA,past_m,m] > do if(m n~ao-pertence a delivered) then forall (s_n, n) in past_m do if(n n~ao-pertence delivered) then trigger <rcodeliver s_n, n>; delivered := delivered U {n}; past := past U {(s_n,n)}; trigger <rcodeliver pi, m>; delivered := delivered U {m}; past := past U {(pi,m)}; custos proibitivos... cada mensagem carrega todas as que a precedem causalmente

Relógio Lógico (Lamport) conceito de relógio lógico modela ordenação (parcial) de eventos cada evento associado a um valor r(e i ) de forma que e i e j r(e i ) < r(e j )

Relógio Lógico Implementação cada processo P mantém um contador, inicialmente RL P = 0 a cada evento e, P associa um valor RL P (e) e incrementa seu contador se evento e é envio de mensagem, P acrescenta campo timestamp com valor RL P (e) ao receber mensagem M com timestamp TS, processo Q faz RL Q = max(rl Q, TS) + 1 exemplo algoritmo de exclusão mútua distribuída

Broadcast causal com espera uso de relógio lógico e timestamps: funciona se tempo de entrega de mensagens tem limite máximo

Broadcast causal uso de mensagens posteriores para validar mensagens com timestamp TS tempo de quarentena (dependente de latência da rede) em fila de holdback

Vetor de timestamps Vetor de timestamps: idéia básica Dados N processos, usa-se um vetor de N elementos (ao invés de um valor escalar) A cada evento e, associa-se um vetor de timestamps cujo i-ésimo elemento indica quantos mensagens do processo i já foram vistas

Vetor de timestamp Definição da relação < Sejam a e b dois eventos quaisquer VT (a) < VT (b): 1 i, VT (a)[i] VT (b)[i] 2 j, VT (a)[j] < VT (b)[j] Note que < é uma ordem parcial, existem eventos que não podem ser comparados por serem concorrentes Ex., x = [0, 0, 1, 0] e y = [1, 0, 0, 0], pois VT (x) VT (y) e não vale VT (x) < VT (y) nem VT (y) < VT (x)

Vetor de timestamp Funcionamento Cada processo mantém seu VT que começa com 0 em todas as posições Para cada evento e local e de envio de msg, incrementa o componente do processo local no VT e associa VT p ao evento e : VT p [p] = VT p [p] + 1 e VT (e) = VT p Quando Q recebe uma mensagem, atualiza cada campo do seu VT: VT q [i] = VT q [i] + 1, i = q VT q [i] = max(vt q [i], VT m [i]), i q Esta última parte garante que tudo que acontecer depois em P q passa a ser causalmente relacionado com tudo o que aconteceu antes em P i

Exemplo de uso de VT para ordenação de eventos 0 0 0 r2 1 0 0 r1 1 0 0 1 0 0 r3 0 0 0

VT para ordenação causal é necessário não apenas estabelecer ordem mas garantir que foram vistas todas as mensagens que precedem causalmente determinada mensagem!

Exemplo de entrega em ordem causal 0 0 0 r2 1 0 0 r1 1 0 0 1 0 0 r3 0 0 0

Exemplo de entrega em ordem causal 0 0 0 1 0 0 r2 r1 1 0 0 X r3 0 0 0

Exemplo de entrega em ordem causal r1 1 0 0 1 0 0 r2 r3 0 0 0

Exemplo de entrega em ordem causal 1 1 0 r2 1 1 0 1 1 0 r1 1 0 0 r3 0 0 0

Exemplo de entrega em ordem causal pode ser entregue à aplicação! 1 1 0 r1 1 0 0 1 1 0 r2 1 1 0 r3 0 0 0 não pode ser entregue à aplicação! (fica na fila de holdback) a entrega deve ser postergada até as mensagens anteriores serem vistas ack s ou reenvios sob demanda

Gerência de Grupos algoritmos de ordenação supõem que cada participante conhece os membros do grupo grupos estáticos x dinâmicos (falhas, adesões, etc) serviço de membership alerta participantes sobre saídas e entradas

Referência R. Guerraoui and L. Rodrigues. Introduction to Reliable Distributed Programming Springer, 2006