1
Fundamentos de Sistemas Distribuídos
Raimundo J. de A. Macêdo
• A program is the code you type in• A process is what you get when you run it
Algumas definições básicas – retirados de apresentação deKen Birman.
• A message is used to communicate between processes. Arbitrary size.
• A packet is a fragment of a message that might travel on the wire. Variable size but limited, usually to 1400 bytes or less.
Raimundo Macêdo, LaSiD/DCC/UFBA
2
• A protocol is an algorithm by which processes cooperate to do something using message exchanges.
2
• A network is the infrastructure that links the computers, workstations, terminals, servers, etc.– It consists of routers
They are connected by communication links– They are connected by communication links• A network application is one that fetches needed
data from servers over the network• A distributed system is a more complex
application designed to run on a network. Such a system has multiple processes that cooperate to do
Raimundo Macêdo, LaSiD/DCC/UFBA
3
system has multiple processes that cooperate to do something.
Os Sistemas Distribuídos
Como caracterizá-los?
3
Sistemas DistribuídosProcessos
Processadores
C i d C i ãCanais de Comunicação
O comportamento de cada processo é determinado por uma seqüênciade eventos internos mais operações de comunicação (send e receive)
Raimundo Macêdo, LaSiD/DCC/UFBA
5
Uma computação distribuída é a execução concorrentee coordenada de vários processos.
Lembrando Leslie Lamport ...
“Você sabe que está num Sistema Distribuídoquando é impedido de prosseguir com seutrabalho devido a FALHA de outro computadorque você nunca ouviu falar....”
Troia, Backdoor, & $ # @PauloLamport
Falha !
Raimundo Macêdo, LaSiD/DCC/UFBA
6
REDE
4
Implicações da afirmação de Lamport
☯Funções estão distribuídas
☯N id d d (t l )
Raimundo Macêdo, LaSiD/DCC/UFBA
7
☯Necessidade de superar (tolerar) falhas parciais
Comunicação entre Processos
Troca de Mensagens (primitivas send()/receive())
Pi
Kernel
Host
Pj
Host
Kernel
Raimundo Macêdo, LaSiD/DCC/UFBA
8
Subsistema de Comunicação
Meio FísicoSubsistema de Comunicação
5
Componente
Componente
Raimundo Macêdo, LaSiD/DCC/UFBA
9
ProcessoObjetoEntidade Comunicante
Componente
Componente
Propriedades que caracterizam um programa distribuído (Lamport, 1977)
safety : f y
determinada propriedade “ruim” nunca ocorre
liveness :
d t i d i d d “b ” t á
Raimundo Macêdo, LaSiD/DCC/UFBA
10
determinada propriedade “boa” acontecerá
+ Timeliness : determinada propriedade acontecerá no instante t
6
Propriedades de um programa distribuído (Lamport, 1977)Exemplo 1 : protocolo de ordenação causal
safety:
qualquer mensagem entregue não viola o principio de causa-efeitoq q g g p p
Liveness:
uma mensagem enviada sempre será entregue
1
tempo
Raimundo Macêdo, LaSiD/DCC/UFBA
11
P1
P2
P3
m1
m2m1
m2
Propriedades de um programa distribuído (Lamport, 1977)
Exemplo 2: sistema controlando semáforos
safety:safety:
dois semáforos numa estarão verde ao mesmo tempo
liveness:
um carro esperando na luz vermelha, receberá luz verde no futuro
Raimundo Macêdo, LaSiD/DCC/UFBA
12
7
Sistema Distribuído
Aplicação Aplicação
Protocolo de Comunicação
Protocolo Distribuído
p ç
Protocolo de Comunicação
Protocolo Distribuído
p ç
mensagensSubs
iste
ma
de
com
unic
ação
Raimundo Macêdo, LaSiD/DCC/UFBA
13
Modelos de Falhas e Tempo assumidos no subsistema de comunicação tem implicações de desempenho e complexidade no projeto de Sistemas Distribuídos
Sistemas Distribuídos e Padrão OSI da ISO
4 - Transporte
5 - Sessão
6 - Apresentação
7 - Aplicação
SISTEMAS DISTRIBUÍDOS
Raimundo Macêdo, LaSiD/DCC/UFBA
14
1 - Sinais
2 - Enlace
3 - RedeRedes de Computadores
8
Exemplos Típicos de Sistemas Distribuídos
Raimundo Macêdo, LaSiD/DCC/UFBA
15
WEB
ServidorWEBcliente
(browser)
Informações Di ibili d
HTTP
HTML
Raimundo Macêdo, LaSiD/DCC/UFBA
16
Disponibilizadas
Rede TCP/IP
9
Controle de Tráfego Aéreo
REDE
Radar
SistemaEmbarcado
Raimundo Macêdo, LaSiD/DCC/UFBA
17
ControladoresDB tráfego aéreo
(planos de voo, etc)
DiretórioX.500
Outros Exemplos:
•Comércio Eletrônico
•Bolsa de Valores
•Automação Hospitalar
•Sistemas de bancos para interconexão de agências e para suporte a terminais de clientes
kfl
Raimundo Macêdo, LaSiD/DCC/UFBA
18
•Workflows
• Napster
•etc
10
Modelos Fundamentais de SDUm modelo contém os elementos essenciais para a compreensão e a análise do comportamento de um sistema distribuído
Principais questões que definem um modelo:• Quais são as entidades ativas ?• Como estas entidades interagem?• Quais características do sistema de execução podem influenciar o
comportamento da computação distribuída ?
Em um modelo:
Raimundo Macêdo, LaSiD/DCC/UFBA
19
Em um modelo:• explicita-se todas as premissas relevantes sobre o ambiente de execução;• dadas as premissas, identifica-se de forma genérica, o que é e o que não é
possível realizar em um sistema (algumas vezes por prova matemática)• cria-se uma abstração, que esconde as especificidades do HW, e permitem
focar nas propriedades relevantes do algoritmo distribuído em questão
Modelos Fundamentais de SD
Quais características adicionais do ambiente podem influenciar oQuais características adicionais do ambiente podem influenciar o comportamento do programa?
• Desempenhos não previsíveis• Falhas• Adversários
A t d d l it di t ib íd ó d li d l ã
Raimundo Macêdo, LaSiD/DCC/UFBA
20
A corretude de um algoritmo distribuído só pode ser avaliada com relação ao modelo de sistema que o mesmo assume.
11
Qual o melhor modelo ???
Depende dos requisitos da aplicação e o ambiente disponíveis !Depende dos requisitos da aplicação e o ambiente disponíveis !
Raimundo Macêdo, LaSiD/DCC/UFBA
21
Examinando sistematicamente SD
12
Porque Sistemas Distribuídos são mais complexos e difíceis de controlar q e sistemas centrali ados?e difíceis de controlar que sistemas centralizados?
Problemas a serem resolvidos causados pela ausência de estado global (relógio ou memória)
(dificuldades do modelo)
• Ausência de ordem total de eventos. Existe apenas uma ordem parcial. Resultado estabelecido
li
• Impossibilidade de consenso na presença de falhas. Resultado estabelecido por Fischer Lynch epor Leslie Lamport
(1978)Fischer, Lynch e Paterson (1985)
13
4
• Ausência de ordem total de eventos. Existe apenas uma ordem parcial. Resultado estabelecido por Leslie Lamport (1978)
P1 P2
R1 Q4
P1 R41
2
3
P Q RNão é possível determinar a ordem entre P1 e R3
Ordenação parcial é possível c/ uso de relógioslógicos e protocolos de ordenação
• Impossibilidade de consenso na presença de falhas. Resultado estabelecido por Fi h L hFischer, Lynch e Paterson (1985)
Detectores de falhamodelos parcialmente síncronos
d l i í
Tolerância a Falhas3o trimestre
modelos semi-síncronos, etc.
Transações atômicas
14
Formalizando a noção de Sistema Distribuído
Elementos BásicosElementos Básicos
Coleção de processos seqüenciais p1, p2, ..., pn
Rede capaz de implementar canais de comunicação unidirecionaispara troca de mensagens entre pares de processos.
Modelos Computacionaisde Sistemas Distribuídosde Sistemas Distribuídos
15
Modelo de Sistema Distribuído : conjunto de Premissas
Conjunto finito de processos : p1, p2, ...,pn.
Não há estado global (compartilhado) entre processos (i.e., memória ou relógio).
i é d dProcessos comunicam-se somente através de troca de mensagens=> existe um canal de comunicação para cada par (pi, pj).
Computação Distribuída : execução de um programadistribuído por uma coleção de processos.
Cada processo seqüencial é modelado por uma seqüência de eventos
interno ( mudança de estado local)interno ( mudança de estado local)
comunicação com outros processsos
send(m)receive(m)
Característica básica do modelo:
Ausência de ordem total deeventos. Existe apenas uma ordemparcial. Resultado estabelecido porLeslie Lamport (1978)
P1 P2
P1 R4
Ordem Parcial de Eventos definida pela relação “happened-before” de Lamport ( )
34
P1 Q2
Não é possível determinar a ordem entre P1 e R3
P Q R
12
Sejam a, b, c três eventos
1) a e b são do mesmo processo e a acontece antes de b ⇒ a b2) a = send(m) e b = receive(m) ⇒ a b3) a b e b c ⇒ a c
Em SD não existe noção global de tempo, os eventos somentepodem ser ordenados (ou relacionados) baseado-se numa noção de causa-efeito (Lamport, 1978)
16
Modelos de Sistemas Distribuídos
Mais Premissas
Assertivas quanto aos tempos det1 : transferência de mensagens entre processos et2 : computação de um ação (evento) num processo.
um modelo de falha para os processos.
um modelo de falha para os canais de comunicação.
Assertivas quanto aos tempos det1 : transferência de mensagens entre processos et2 : computação de um ação (evento) num processo.
Valores máximos para t1 e t2 são finitos e conhecidosp
⇒ sistemas síncronosValores máximos para t1 e t2 são finitos, porém desconhecidos
⇒ sistemas assíncronos: Internet ou WANs
SíncronoAssíncrono
desconhecido Limitado
Parcialmente síncrono, etc..
Timed-asyncronous
17
Qual o conjunto mais fraco de suposições ouhipóteses (assumptions) possível ?
==> permite-nos estabelecer limites superiores (upper bounds) nos custos de solução de problemas em SD.
Ou seja, se existe uma solução para um problema no modelo maisfraco com custo Y, então existe solução para o mesmo problemacom custo não superior a Y em qualquer modelo de SD.
O modelo mais fraco é o ASSÍNCRONO
Raimundo Macêdo, LaSiD/DCC/UFBA
33
1) não existe limites nas velocidades relativas dos processos
2) não existe limites dos tempos transmissão de mensagens.
==> não se pode raciocinar em termos de tempo global(relógios não podem estar sincronizados)
OBS:
Dispositivos físicos (processadores e redes físicas) sãoem geral síncronos (tempos conhecidos), mas quandomultiplexamos o meio através de software para construímosabstrações como processos e canais confiáveis, o sistemaé em geral caracterizado como assíncrono.
18
Computação Distribuída : execução de um programa distribuídopor uma coleção de processos.
Formalizando o modelo SD assíncrono
Cada processo seqüencial é modelado por uma seqüência de eventos
interno ( mudança de estado local)
comunicação com outros processosç p
send(m)receive(m)
S d( ) l fil d l d íd d iSend(m) = coloca m na fila do canal de saída para o processo destino
Receive(m) = tira m da fila do canal de recepção do processo destino
OBS: receive(m) somente acontece num processo p se m já chegoua p e p está disposto a consumir m. Do contrário, ou a mensagemm é atrasada (p não está pronto) ou p é atrasado porque m ainda nãom é atrasada (p não está pronto) ou p é atrasado porque m ainda nãochegou.
19
Como seria a visão de comunicação em camadas mais altas,onde realmente costumamos observa-las ?
Ou seja, ao nível da linguagem de programação ??
RPC (Chama de Proc. Remoto)Broadcast/multicast/comunição em grupoTransações DistribuídasObjetos DistribuídosMemória Compartilhada Distribuída
C t d t d õ í i i lt ( i )Contudo, todas essas operações nos níveis mais altos (acima)são traduzidas para múltiplas operações tipo { (send(m), receive(m) }
História Local da computação de um processo pi
História Local da computação de um processo pi é ma seqüência (possi elmente finita) de e entosuma seqüência (possivelmente finita) de eventos
é uma seqüência (possivelmente finita) de eventos
hi = e1i, e2
i, .... etc.
10 evento 20 evento1 evento 2 evento
enumeração canônica
20
Prefixo inicial de hi contendo os k primeiros eventos
hki, = e1
i, e2i,..., ek
i
h0i = seqüência vazia
História Global H = h1 ∪ h2 ∪ ... ∪ hn
OBS: a história global (H) não especifica nenhumarelação de tempo entre os eventos.
Em SD assíncronos onde não existe noção globalEm SD assíncronos onde não existe noção globalde tempo, os eventos somente podem ser ordenados(ou relacionados) baseado numa noção de causa-efeito (Lamport, 1978)
Relação binária “happened before”definida por Lamport (1978)
1) se eki, el
i, ∈ hi e k < l, então eki, el
i,
2) se ei = send(m) e ej = receive(m), então ei ej
3) se e e’ e e’ e’’, então e e’’
e e’ se e somente se e precede e’
pode ter afetadopode ter causadoocorre no contextoetc.
21
É possível que para algum e e e’
nem e e’ nem e’ e
e’ e e são ditos concorrentese e e são ditos concorrentes
e ⎥⎥ e’
Uma Computação Distribuída é um conjunto U a Co putação st bu da é u co ju toparcialmente ordenado definido por (H, )
e11 e2
1 e31 e4
1 e51 e6
1
e12 e2
2 e32
e13 e2
3 e33 e43 e5
3 e63
e12 e3
1 e22 ⎥⎥ e6
3
22
Relógios Lógicos
Mecanismo de Tempo para SD
Cada processo mantém uma variável local LC chamadaCada processo mantém uma variável local LC chamadade seu relógio lógico que mapea eventos para númerosnaturais positivos.
LC(ei) = valor do relógio quando ei é executado por pi
A ordenação feita baseada nos valores crescentesdos relógios lógicos, mantém consistência (coerência)com a relação
e e’ ==> LC(e) < LC(e’)
Como funciona ?
Cada mensagem m transmitida contém um timestamp TS(m)que é o valor do relógio lógico associado ao evento send(m).q g g ( )
No início relógios são “inicializados”com zero.
Atualização do Relógio:
LC(ei) = LC + 1, se ei é interno ou send(m)max{LC, TS(m)} + 1, se ei é receive(m)
23
e11 e2
1 e31 e4
1 e51 e6
1
1 2 4 5 6 7
e12 e2
2 e32
e13 e2
3 e33 e43 e5
3 e63
1 5 6
1 2 3 4 5 7
e12 e6
3 e22 ⎥⎥ e6
3
Ilustração de Relógios Lógicos
P1 P2 P3R1 = 0 R2 = 0 R3 = 0
R1 = 1R2 = 2
m1
R1 = 2
R3 = 3
m2
R3 = 4R2 = 5
m3
m
m1 → m2
m2 → m3 e m1 → m3
m4 → m5 e m5 → m4
R1 = 7R2 = 6m4
R3 = 5
R1 = 8
m5
m4 → m5 e m5 → m4