Buscar

Resumo Sistemas distribuídos A1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Arquitetura de sistemas distribuídos 
 
 A arquitetura de um sistema apresenta a forma como os seus componentes 
estão dispersos e a maneira como eles interagem entre si; 
 As arquiteturas de sistemas distribuídos são classificadas em função da maneira 
na qual ocorre à coordenação entre os processos/recursos participantes. Tal 
classificação é dividida entre Centralizadas e Descentralizadas; 
 É importante ressaltar que todas as arquiteturas de sistemas distribuídos 
podem ser reproduzidas/simuladas por sistemas locais; 
 
1. Arquiteturas Centralizadas 
 
 São aquelas que possuem um elemento responsável por coordenar as ações do 
sistema; 
 Embora o elemento centralizador vá contra os princípios de sistemas 
distribuídos, por apresentar um ponto único de falha, medidas podem ser 
tomadas para contornar eventuais problemas; 
 As principais arquiteturas centralizadas são: 
 
1.1. Arquitetura cliente/servidor: 
 
 Apresenta, no mínimo, dois processos/recursos: um cliente, responsável por 
enviar uma requisição com alguma tarefa a ser processada e um servidor, que 
é responsável por receber, processar e enviar o resultado de volta para o 
cliente; 
 Os processos cliente e servidor possuem diferentes características relacionadas 
a endereçamento e execução que devem ser respeitadas para o correto 
funcionamento do sistema. 
 Exemplo de uma arquitetura cliente/servidor: 
 
 
 
 
 
 
 
envio de requisição endereçamento fixo 
 resposta aguarda 
 
 
endereçamento fixo ou dinâmico 
 
OBS.: TODA A COMUNICAÇÃO EM SISTEMAS DISTRIBUÍDOS É FEITO POR TROCAS DE 
MENSAGENS, INDEPENDENTE DA ARQUITETURA ADOTADA. 
 
 Exemplo 2: 
 
 
Cliente / servidor 
 
 
 servidor 
 
 cliente 
 
 
1.2. Arquitetura mestre/trabalhador: 
 Arquitetura que possui um conjunto de processos considerados idênticos e que 
são capazes de processar uma mesma carga de trabalho em um intervalo de 
tempo praticamente igual; 
 A existência do elemento centralizador se dá pela necessidade de divisão do 
trabalho, coordenação da execução e apresentação do resultado; 
SERVIDOR 
CLIENTE 2 
CLIENTE 
SERVIDOR WEB 
NAVEGADOR 
BANCO DE DADOS 
 Exemplo: 
usuário 
Dados de entrada dados de saída 
 
 Corrdenação 
 
 
 
OBS.: ESTA ARQUITETURA É TAMBÉM AMPLAMENTE UTILIZADA EM SISTEMAS 
 
 
2. Arquiteturas Descentralizadas 
 São arquiteturas que não apresentam uma organização clara dos seus 
componentes e não possuem um padrão específico para as trocas de 
mensagens. São elas: 
 
2.1. Arquitetura Anárquica: 
 Arquitetura que apresenta um conjunto de processos capazes de se comunicar 
com qualquer outro processo no sistema; 
 Não há nenhum nível de hierarquia, o que pode causar um número excessivo 
de trocas de mensagens no sistema; 
 Exemplo: 
 
 
Rotas de comunicação 
entre os processos 
 
 
 
MESTRE 
TR 1
 
TR 2 TR 3 TR 4 
2.2. Arquitetura PEER-TO-PEER (P2P): 
 Surgiu como uma tentativa de organizar e reduzir a quantidade de mensagens 
que ocorrem na arquitetura anárquica; 
 Um SUPER PONTO é eleito dentre um conjunto de processos. Este super ponto 
é responsável por estabelecer a comunicação com os processos de fora do seu 
conjunto; 
 Parte da máxima de que todos os processos do conjunto são iguais. Sendo 
assim, qualquer um deles é capaz de assumir a função de super ponto; 
 Exemplo; 
 
 
 
 
 
 
 
 
 
 
 
 
Sincronização e Ordenação de Eventos 
 
 Como já foi visto, uma das características de um sistema distribuído é a 
ausência de sincronismo. Isso se deve à ausência de um relógio global e à 
heterogeneidade do ambiente; 
 No entanto, existem situações em que se torna necessário que um conjunto de 
processos seja capaz de coordenar trocas de mensagens com um mínimo de 
sincronismo entre si. Em tais situações, é muito comum que haja a 
dependência entre as mensagens; 
 Sendo assim, são estipulados dois protocolos de trocas de mensagens entre os 
processos: um síncrono e outro assíncrono; 
 
 
1. TROCA SÍNCRONA (BLOQUEANTE) DE MENSAGENS: 
 Um processo (EMISSOR) envia uma mensagem iniciando a 
comunicação com um segundo processo (RECEPTOR); 
 Ao enviar a mensagem, o processo emissor fica aguardando, 
voltando a processar somente a pós receber a resposta do 
receptor; 
 O processo receptor, por padrão é capaz de atender a apenas 
uma solicitação por vez; 
 Esta forma de troca de mensagens também é chamada de 
BLOQUEANTE; 
 
Exemplo: 
 EMISSOR request RECEPTOR EMISSOR2 
 
 indisponível 
 reply seção crítica 
t t 
obs.: A linha em azul é referente ao tempo de espera (bloqueado). 
 
 É importante ressaltar que a comunicação síncrona garante a 
consistência das mensagens entre os processos. 
 
 
2. TROCA DE MENSAGEM ASSÍSNCRONA: 
 O processo emissor inicia o processo ao enviar uma requisição 
para o receptor; 
 Imediatamente após a confirmação de que a mensagem chegou 
ao receptor, o processo emissor é liberado para continuar 
executando. Portanto, essa forma de mensagens é chamada de 
NÃO BLOQUEANTES; 
 Assim como na confirmação síncronas, o receptor, por padrão 
atente a apenas uma solicitação por vez; 
 
Exemplo: 
 EMISSOR request RECEPTOR 
 
 indisponível 
 reply seção crítica 
t t 
obs.: A linha em azul é referente ao tempo de espera (bloqueado). 
 
 Apesar de ser, não BLOQUEANTE, a comunicação assíncrona 
também admite um tempo de bloqueio que embora, que maior 
do que na comunicação síncrona, existe; 
 Nesta forma de comunicação não há garantia de consistência 
entre as mensagens e o processamento do emissor. 
 
 
Ordenação de Eventos 
(controle de acesso a recursos compartilhados) 
 Assim como ocorre em sistemas locais, muitas vezes um sistema distribuído 
trabalha com recursos compartilhados entre os processos tais recursos podem 
ser desde endereços de memória, até dispositivos físicos; 
 Para evitar que problemas comuns nestas situações ocorram, tais como 
DEADLOCKS e STARVATION (Inanição) torna-se necessário o uso de técnicas 
específicas; 
 A adoção de EXCLUSÃO MÚTUA através de SEMÁFOROS é a solução mais 
simples e eficiente para prevenir esses problemas; 
 
1. A exclusão mútua por semáforos pode ser implementada de duas formas: 
 FICHAS (TOKENS): Existe uma variável MUTEX que inicialmente 
encontra-se com valor 1. Um processo que pega a ficha modifica 
MUTEX para 0 para indicar que está usando o recurso 
compartilhado. Neste momento, o sistema encontra-se em 
SEÇÃO CRÍTICA; 
 PERMISSÕES: Um processo solicita e comunica aos demais que 
está tomando posse ou liberando o recurso compartilhado. 
Neste caso, cada processo possui uma variável MUTEX que 
indica se o sistema está ou não em seção crítica. 
 Em ambos os casos, torna-se necessária à adoção de prioridades 
para que processos não aguardem indefinidamente para 
executar (Inanição). 
 
 
 
 
 
Pesquisar: 
PROTOCOLO NTP (NETWORK TIME PROTOCOL) - NTPDATE 
 
Problema do produtor/consumidor com semáforos 
 
BUFFER SIZE = N; 
SEMAPHORE MUTEX = 1; 
SEMAPHORE EMPTY = BUFFER SIZE; 
SEMAPHOREFULL = 0; 
 
CONSUMER() { 
 INT WIDGET; 
 WHILE (TRUE) { 
 --- 
 DOWN (MUTEX); momento em que o servidor entra em seção critica 
 DOWN (FULL); 
 REMOVE_ITEN (WIDGET); 
 UP (EMPTY); 
 UP (MUTEX); momento de saida da seção critica 
 --- 
 } 
} 
 
PRODUCER () { 
 INT WIDGET; 
 WHILE (TRUE) { 
 --- 
 DOWN (MUTEX); entra em seção crítica 
 DOWN (EMPTY); 
 REMOVE_ITEN (WIDGET); 
 UP (FULL); 
 UP (MUTEX); ainda está em seção crítica 
 --- 
 } 
} 
 
OBSERVAÇÃO: Somente um processo do sistema, por vez, pode entrar em seção 
crítica. 
 
Chamadas de procedimentos remotes (RPCs) 
OBSERVAÇÃO: SEÇÃO 4.2 
 
 Decorrente da necessidade de obter transparência no acesso a sistemas 
distribuídos. Tal transparência não ocorre com o uso SEND/RECEIVE; 
 Criação de um RPC para que um processo da máquina A chame (execute) um 
procedimento em uma máquina B; 
 Por padrão, uma RPC é síncrona, isto é, processo de A é suspenso enquanto o 
procedimento é executado em B; 
 Nenhum aspecto da troca de mensagens é visível para o programador, havendo 
total transparência na comunicação; 
 Principais problemas: 
 Processo faz a chamada e o procedimento remoto está em 
máquinas diferentes, executando em espaços de memória 
diferentes; 
 Necessidade de passar parâmetros e resultados (retornos). 
 Tipos de chamada; 
 POR VALOR: Um valor é passado explicitamente como 
argumento; 
 POR REFERENCIA: O parâmetro é um ponteiro para uma 
variável. Problema a ser tratado devido aos diferentes escopos 
de memória. 
 Uma RPC deve manter a transparência também em relação aos aspectos 
heterogêneos do sistema. Para isso, existe um componente chamado 
APÊNDICE; 
 O APÊNDICE é o responsável por realizar a serialização dos dados e por 
executar as chamadas de SEND e RECEIVE; 
 Afinal, como saber se uma chamada de procedimento é local ou remota? Como 
exemplo, imagine a seguinte situação hipotética. Um processo cliente (servidor 
web) precisa fazer uma consulta no servidor de banco de dados. Para isso, o 
S.W. envia a Query para o SBD, que realiza a consulta nesta situação, há RPC? 
Justifique? Não há RPC. Uma vez que o servidor web não é capaz de executar a 
consulta diretamente. O que ele faz é SOLICITAR ao servidor de banco de dados 
que execute a consulta. 
 
 
CURIOSIDADES: 
 RPC – também é conhecido como JAVA RMI (invocação remota de métodos) 
 
 
Algoritmos de eleição de processos coordenadores 
 
 Em situações nas um processo exerce função centralizadora, isto é, quando 
tem a responsabilidade de coordenar o sistema ou parte dele, existe a 
necessidade de nunca deixar o sistema sem tal processo, caso alguma falha 
venha a ocorrer; 
 Para essas situações, podem ser empregados os algoritmos de eleição de 
processo coordenador; 
 
 
 Algoritmo do valentão (BULLY) 
o Quando qualquer processo dentro de um sistema distribuído identifica 
que o coordenador falhou, ele é responsável por iniciar uma eleição que 
se segue da seguinte forma: 
1. O processo P ( que identificou a falha) envia uma mensagem 
eleição para todos os processos com número identificador mais 
alto que o seu próprio; 
2. Se nenhum processo responder, P vence a eleição e se torna o 
novo coordenador; 
3. Se um processo com ID mais alto responder, ele assume controle 
da eleição e o trabalho de P está concluído. 
o É importante observar que cada processo deve possuir um identificador 
único e que, para o algoritmo de valentão, cada processo deve conhecer 
todos os demais; 
o Em qualquer situação de eleição, somente um processo pode ser eleito 
como coordenador; 
o Se um processo que estava fora retornar, uma nova eleição é 
convocada, podendo ele se tornar o novo coordenador, caso possua o 
maior identificador. 
o Após o novo coordenador ser eleito é enviada uma mensagem a todos 
os demais processos indicando qual é o novo coordenador. 
EXEMPLO: 
 
 
 
 
 
 
 
 
 
 
 
 
 Algoritmo do Anel (RING): 
o Algoritmo que também possui o requisito de todos os processos 
possuírem um identificador. Além disso, é necessário também que cada 
0 
3 
6 
1 4 
5 
2 
P 
0 
3 
6 
1 4 
5 
2 
P 
P’ 
processo conheça o seu sucessor. Isso ocorre através de uma ordenação 
entre os processos, seja ela física ou lógica; 
1. O processo P, que identificou a falha do coordenador envia uma 
mensagem de eleição para o seu sucessor, contendo o seu 
próprio ID; 
2. O sucessor de P encaminha a mensagem ao processo seguinte, 
incluindo o seu ID na mensagem; 
3. Em dado momento, a mensagem retornaria para P. Então é 
responsável por procurar o maior ID na lista e comunicar aos 
demais qual é o novo coordenador. 
 
EXEMPLO: 
 
 
 
 
 
 
 
 
 
 
 
 
0 
6 
1 
4 
5 
3 
2 
0 
1|0 
2|1|0 
3|2|1|0 
4|3|2|1|0 
5|4|3|2|1|0 
P

Outros materiais