RCSD Material Parte II v1.0
RCSD Material Parte II v1.0
Sistemas Distribuídos
Prof. Me. Wallace Rodrigues de Santana
[Link]
© 2019 [Link] – Parte II – Versão 1.0
Módulo 13
Introdução a Sistemas Distribuídos
Definição
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
4
[Link]
Organização
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
5
[Link]
Objetivos – acesso a recursos
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
6
[Link]
Objetivos – transparência
Migração •Oculta que um recurso pode ser movido para outra localização.
Relocação •Oculta que um recurso pode ser movido para uma outra
localização enquanto em uso.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
7
[Link]
Objetivos – abertura
Um sistema distribuído aberto é aquele que oferece serviços de acordo com regras
padronizadas que descrevem a sintaxe e a semântica desses serviços.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
8
[Link]
Objetivos – escalabilidade
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
9
[Link]
Objetivos – escalabilidade
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
10
[Link]
Objetivos – escalabilidade
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
11
[Link]
Objetivos – escalabilidade
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
12
[Link]
Tipos de sistemas distribuídos
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
13
[Link]
Tipos de sistemas distribuídos
Sistemas de computação distribuídos
Os sistemas de computação distribuídos podem ser do tipo:
• Cluster: composto de servidores de configuração semelhante, que executam o
mesmo sistema operacional e que estão conectados por meio de uma rede local
de alta velocidade. É um sistema homogêneo;
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
14
[Link]
Tipos de sistemas distribuídos
Sistemas de computação distribuídos
• Grid: uma federação de computadores geograficamente distribuídos e em
domínios administrativos diferentes, que podem ser compostos de servidores ou
máquinas de diferentes tipos e sistemas operacionais diversos. É um sistema
heterogêneo.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
15
[Link]
Tipos de sistemas distribuídos
Sistemas de informação distribuídos
Os sistemas de informação distribuídos caracterizam-se por fornecerem às
organizações um ambiente cliente/servidor onde a integração das aplicações e a
interoperabilidade são um desafio.
O tipo mais comum de aplicações neste tipo de sistemas distribuídos são aquelas
que lidam com o processamento de transações, em especial os sistemas baseados
em banco de dados.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
16
[Link]
Tipos de sistemas distribuídos
Sistemas de informação distribuídos
Sistemas de processamento de transações possuem quatro propriedades
características, denotadas pela sigla ACID.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
17
[Link]
Tipos de sistemas distribuídos
Sistemas de informação distribuídos
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
18
[Link]
Tipos de sistemas distribuídos
Sistemas de informação distribuídos
Exemplo de processamento de transações com MySQL:
mysql> CREATE TABLE Cliente (iD INT, Nome CHAR (20), INDEX (iD));
Query OK, 0 rows affected (0.00 sec)
mysql> -- Do a transaction with autocommit turned on.
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO Cliente VALUES (10, ‘Ana');
Query OK, 1 row affected (0.00 sec)
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
19
[Link]
Tipos de sistemas distribuídos
Sistemas de informação distribuídos
mysql> -- Do another transaction with autocommit turned off.
mysql> SET autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO Cliente VALUES (15, ‘Joao');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Cliente VALUES (20, 'Paulo');
Query OK, 1 row affected (0.00 sec)
mysql> DELETE FROM Cliente WHERE Nome = ‘Ana';
Query OK, 1 row affected (0.00 sec)
mysql> -- Now we undo those last 2 inserts and the delete.
mysql> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
20
[Link]
Tipos de sistemas distribuídos
Sistemas de informação distribuídos
mysql> SELECT * FROM Cliente;
+------+--------+
| iD | Nome |
+------+--------+
| 10 | Ana |
+------+--------+
1 row in set (0.00 sec)
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
21
[Link]
Tipos de sistemas distribuídos
Sistemas distribuídos pervasivos
Sistemas distribuídos pervasivos são aqueles formados por dispositivos de
computação móveis e embutidos.
Um exemplo de sistema distribuído pervasivo são as redes de sensores, compostas
por dispositivos de tamanho reduzido, alimentados por bateria e que usam
comunicação sem fio para propagar as informações coletadas.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
22
[Link]
Para saber mais...
Um componente pode ser entendido como uma unidade modular com interfaces
requeridas e fornecidas bem definidas e que é substituível dentro do seu
ambiente.
Já um conector é descrito como um mecanismo que serve de mediador da
comunicação ou cooperação entre os componentes.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
25
[Link]
Estilos de arquitetura
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
26
[Link]
Estilos de arquitetura
Em camadas
O estilo de arquitetura em camadas é
um tipo de organização de onde um
componente da camada Li tem
permissão de chamar componentes na
camada subjacente Li-1, mas não o
contrário.
Em geral, o controle flui de camada
para camada, onde as requisições
descem pela hierarquia e as respostas
fluem para cima.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
27
[Link]
Estilos de arquitetura
Baseada em objetos
O estilo de arquitetura baseado em
objetos é formado por componentes
que são conectados por meio de uma
chamada de procedimento remota.
Em geral, é o tipo de arquitetura que
melhor se ajusta a sistemas
cliente/servidor.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
28
[Link]
Estilos de arquitetura
Centrada em dados
O estilo de arquitetura centrado em
dados é baseado em processos que se
comunicam por meio de um repositório
comum.
Este repositório comum, que pode ser
um banco de dados, por exemplo,
elimina a necessidade de movimentar
informações entre sistemas legados e
novos.
Essa abordagem permite também que
as aplicações possam ser construídas e
alteradas enquanto os dados são
mantidos intactos.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
29
[Link]
Estilos de arquitetura
Baseada em eventos
O estilo de arquitetura baseado em
eventos permite que os processos se
comuniquem por meio da propagação
de eventos, também conhecido como
sistemas publicar/subscrever, e que
opcionalmente podem transportar
dados também.
Quando um componente publica um
evento, o middleware assegura que
somente os demais componentes que
se subscreveram para receber este
evento específico possam acessá-lo,
fazendo com que neste estilo de
arquitetura os processos sejam
fracamente acoplados.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
30
[Link]
Arquiteturas de sistemas
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
31
[Link]
Arquiteturas de sistemas
Centralizadas
Arquitetura de sistemas do tipo centralizada é aquela em que os clientes
requisitam serviços a um ou mais servidores.
O servidor é um processo que implementa um serviço específico. Já o cliente é um
processo que requisita um serviço de um servidor enviando-lhe uma requisição e
em seguida aguarda por uma resposta do servidor.
Esse tipo de interação é conhecido como comportamento requisição-resposta.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
33
[Link]
Arquiteturas de sistemas
Centralizadas
Em um sistema multicamadas, aplicações cliente/servidor procuram dar suporte
ao acesso de usuários a banco de dados, por exemplo, ou a qualquer outro tipo de
repositório de dados.
Considerando isso, tais sistemas podem implementar os seguintes níveis:
• Nível de interface de usuário;
• Nível de processamento;
• Nível de dados;
• Nível de segurança;
• Etc.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
34
[Link]
Arquiteturas de sistemas
Centralizadas
Exemplo de sistemas multicamadas:
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
35
[Link]
Arquiteturas de sistemas
Centralizadas
Exemplo de sistemas multicamadas:
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
37
[Link]
Arquiteturas de sistemas
Centralizadas
Uma outra forma de organização é distribuir os diferentes componentes da
aplicação entre o cliente e o servidor.
Clientes que executam uma quantidade mínima de processos é denominada de
Thin Client, enquanto que clientes que executam uma grande carga de
processamento são chamados de Fat Client.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
38
[Link]
Arquiteturas de sistemas
Centralizadas
Exemplo de validação do CPF no lado do cliente:
<script>
function ValidaCPF() {
var strCPF = [Link]('CPF').value;
var Soma;
var Resto;
Soma=0;
for (i=1; i<=9; i++) Soma=Soma+parseInt([Link](i-1,i))*(11-i);
Resto=(Soma*10)%11;
if ((Resto==10) || (Resto==11)) Resto=0;
if (Resto!=parseInt([Link](9,10))) {
[Link]("ResultadoTesteCPF").innerHTML="CPF Inválido!";
return; //return false
};
Soma=0;
for (i=1; i<=10; i++) Soma=Soma+parseInt([Link](i-1,i))*(12-i);
Resto=(Soma*10)%11;
if ((Resto==10) || (Resto==11)) Resto=0;
if (Resto!=parseInt([Link](10,11))) {
[Link]("ResultadoTesteCPF").innerHTML="CPF Inválido!";
return; //return false
};
[Link]("ResultadoTesteCPF").innerHTML="CPF Válido!"; //return true
}</script>
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
39
[Link]
Arquiteturas de sistemas
Centralizadas
Exemplo de validação do CPF no lado do servidor:
<%
Soma=0
dim strCPF
for i=1 to 10
strCPF=[Link]("CPF")
Soma=Soma+Cint(mid(strCPF,i,1))*(12-i)
dim Soma
next
dim Resto
Resto=(Soma*10) MOD 11
dim teste
if ((Resto=10) OR (Resto=11)) then
Soma=0
Resto=0
for i=1 to 9
end if
Soma=Soma+Cint(mid(strCPF,i,1))*(11-i)
if (Resto<>Cint(mid(strCPF,11,1))) then
next
[Link]("CPF Inválido!")
Resto=(Soma*10) MOD 11
[Link]
if ((Resto=10) OR (Resto=11)) then
end if
Resto=0
[Link]("CPF Válido!")
end if
%>
if (Resto<>Cint(mid(strCPF,10,1))) then
[Link]("CPF Inválido!")
[Link]
end if
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
40
[Link]
Arquiteturas de sistemas
Descentralizadas
Arquitetura de sistemas do tipo descentralizada é aquela em que os clientes e/ou
servidores podem ser fisicamente subdivididos em partes logicamente
equivalentes, mas onde cada parte opera na sua própria porção do conjunto
completo de dados, de modo a equilibrar a carga.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
42
[Link]
Arquiteturas de sistemas
Descentralizadas – Rede de sobreposição
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
44
[Link]
Arquiteturas de sistemas
Descentralizadas
Redes de sobreposição não estruturadas
Nesta arquitetura, a rede de sobreposição depende de algoritmos aleatórios para
ser construída.
Cada nó mantem uma lista de vizinhos construída de modo mais ou menos
aleatório.
Como consequência, quando um nó precisa localizar um item de dado específico,
é necessário inundar a rede com uma consulta de busca, o que diminui a sua
eficiência.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
45
[Link]
Arquiteturas de sistemas
Híbridas
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
46
[Link]
Arquiteturas de sistemas
Híbridas
O BitTorrent é um sistema híbrido que permite o compartilhamento de arquivos
pela internet, sendo utilizado principalmente para a distribuição de vídeos,
músicas e softwares.
O BitTorrent é bastante popular e ao mesmo tempo muito eficiente. Isso se deve,
basicamente, a dois motivos:
• quando um arquivo está sendo baixado para um computador, “pedacinhos”
deste são obtidos de várias outras máquinas simultaneamente, não apenas de
uma;
• ao mesmo tempo em que um computador obtém um arquivo, os dados que já
foram baixados também são compartilhados, ou seja, para receber é preciso
também fornecer.
O BitTorrent em si, na verdade, é um protocolo de compartilhamento de dados e
não um sistema centralizado. Não há um servidor provendo os dados, mas sim um
padrão de comunicação entre vários computadores que permite que arquivos
sejam localizados, distribuídos e obtidos por todos.
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
47
[Link]
Arquiteturas de sistemas
Híbridas
Para que seja possível fazer download e upload pelo BitTorrent, é necessário que
cada arquivo compartilhado esteja associado a um torrent. Trata-se de um arquivo
pequeno e simples que contém as informações necessárias ao compartilhamento,
como tamanho em bytes do conteúdo a ser compartilhado, dados que confirmam
a integridade deste, endereços de trackers (servidor que orienta a comunicação do
compartilhamento, conceito abordado mais abaixo), entre outros.
Alguns dos campos encontrados em um arquivo torrente são os seguintes:
• announce: informa qual o tracker que trata da distribuição do arquivo;
• announce-list: informa eventuais trackers auxiliares;
• comment: um comentário qualquer inserido pelo criador do torrent;
• created by: informa com qual software o torrent foi criado;
• info: contém todos os dados referentes ao arquivo, como nome, tamanho,
código de verificação de integridade (hash), etc.
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
48
[Link]
Arquiteturas de sistemas
Híbridas
Para que se consiga encontrar um determinado arquivo para baixar, é necessário
primeiro achar um torrent associado, que deve ser aberto em um cliente apropriado
capaz de iniciar o download do material.
Abaixo estão descritas cinco denominações básicas que estão relacionadas com o
compartilhamento de arquivos:
• Seed (semeador): é o nome dado a cada máquina que possui o arquivo completo que
está sendo compartilhado. É necessário que haja pelo menos um seed para que o
compartilhamento ocorra integralmente;
• Peer (nó): termo que indica cada computador que compartilha arquivos. Quando se
está baixando algo pelo BitTorrent, o computador automaticamente assume o papel
de um peer, ou seja, de um ponto ou nó na rede;
• Leecher (sugador): o termo faz referência aos computadores que ainda estão
baixando arquivos ou que já o baixaram completamente, mas por alguma razão não o
estão compartilhando;
• Tracker (rastreador): faz referência a um servidor que mantém o controle de
comunicação entre todos os seeds e peers, de forma que os computadores
envolvidos no processo possam saber a quais máquinas se conectar. No entanto, o
tracker não tem cópia do arquivo, muito menos interfere diretamente no
compartilhamento;
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
49
[Link]
Arquiteturas de sistemas
Híbridas
• Swarm (enxame): nome dado ao conjunto de computadores que está
compartilhando o mesmo arquivo. Se determinado arquivo estiver sendo
compartilhado por 8 seeds e 34 peers, o swarm do arquivo contém ao todo 42
computadores.
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
50
[Link]
Arquiteturas vs Middleware
Interceptadores
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
51
[Link]
Autogerenciamento
Interceptadores
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
52
[Link]
Para saber mais...
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
55
[Link]
Introdução
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
56
[Link]
Introdução
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
57
[Link]
Introdução
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
58
[Link]
Thread
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
59
[Link]
Thread
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
60
[Link]
Threads em sistemas distribuídos
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
61
[Link]
Exemplo
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
63
[Link]
Arquiteturas de máquinas virtuais
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
64
[Link]
Arquiteturas de máquinas virtuais
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
65
[Link]
Clientes
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
66
[Link]
Servidores
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
67
[Link]
Para saber mais...
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
70
[Link]
Chamada de procedimento remoto
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
71
[Link]
Chamada de procedimento remoto
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
75
[Link]
Chamada de procedimento remoto
Passagem de parâmetros
Na passagem de parâmetros de valor, quando um processo chama um
procedimento (função ou subrotina) e precisa passar parâmetros, uma cópia dos
mesmos é enviada junto com a passagem de valor.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
76
[Link]
Chamada de procedimento remoto
Passagem de parâmetros
Na passagem de parâmetros por referência, quando um processo chama um
procedimento (função ou subrotina) e precisa passar parâmetros, o endereço da
área de memória que contem os valor dos parâmetros é enviada junto com a
passagem por referência.
No entanto, quando os processos chamador e chamado encontram-se em
máquinas separadas, esta abordagem não é possível de ser implementada pois as
máquinas não compartilham o mesmo espaço de endereços de memória.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
77
[Link]
Chamada de procedimento remoto
Comunicação assíncrona
Nas chamadas de procedimento convencionais, quando um cliente chama um
procedimento remoto, o mesmo fica bloqueado até que uma resposta seja
retornada.
Esse comportamento é desnecessário quando não há nenhum resultado a
retornar, pois só leva ao bloqueio do cliente enquanto ele poderia continuar a
realizar outras tarefas.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
78
[Link]
Chamada de procedimento remoto
Comunicação assíncrona
Já nas chamadas de procedimento com suporte a comunicação assíncrona, o
servidor envia imediatamente uma resposta de volta ao cliente no momento em
que a requisição é recebida e em seguida chama o procedimento requisitado.
Neste caso, a resposta do servidor age como um reconhecimento para o cliente de
que o servidor irá processar a chamada. O cliente continuará assim sem mais
bloqueio, tão logo tenha recebido o reconhecimento do servidor.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
79
[Link]
Middleware orientado a mensagem
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
80
[Link]
Middleware orientado a mensagem
Comunicação transiente orientada a mensagem
Na comunicação transiente orientada a mensagem, tanto o cliente quanto o
servidor precisam estar em execução no momento da troca de mensagens em
uma chamada de procedimento remota.
Para isso pode ser usado a camada de comunicação de rede por meio de sockets
TCP/IP.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
81
[Link]
Middleware orientado a mensagem
Comunicação persistente orientada a mensagem
Na comunicação persistente orientada a mensagem, uma mensagem apresentada
para transmissão é armazenada pelo sistema de comunicação pelo tempo que for
necessário para entrega-lo.
Para isso é usado um mecanismo de enfileiramento de mensagens.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
82
[Link]
Comunicação orientada a fluxo
Nestes casos um atraso fim-a-fim máximo deve ser especificado para cada
mensagem, a fim de oferecer tanto quanto possível uma melhor experiência para
o usuário.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
83
[Link]
Comunicação orientada a fluxo
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
84
[Link]
Para saber mais...
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
87
[Link]
Introdução
Nomes, identificadores e endereços
Um nome em um sistema distribuído é uma cadeia de bits ou caracteres usada
para referenciar uma entidade.
Uma entidade em um sistema distribuído pode ser praticamente qualquer coisa,
como por exemplo impressoras, discos e arquivos, bem como processos, usuários,
caixas postais, páginas Web, janelas gráficas, mensagens, conexões de rede, etc.
Entidades são ativas, pois devem oferecer uma interface que permita interagir com
elas. E para agir sobre uma entidade, é necessário um ponto de acesso.
Um ponto de acesso é um tipo de especial de entidade. O nome de um ponto de
acesso é denominado endereço.
Uma entidade pode oferecer mais de um ponto de acesso.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
88
[Link]
Introdução
Nomes, identificadores e endereços
Um identificador é um outro tipo de nome usado para identificar exclusivamente
uma entidade.
Um identificador possui três propriedades:
• Um identificador referencia somente uma entidade;
• Cada entidade é referenciada por exatamente um identificador;
• Um identificador nunca é atribuído a uma outra entidade.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
89
[Link]
DNS
[Link] → [Link]
[Link] → [Link]
[Link] → [Link]
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
92
[Link]
DNS
Um cliente DNS é todo aquele que requisita respostas a uma determina consulta
feita a um servidor DNS.
Um servidor DNS é todo aquele que responde às consultas feitas por um cliente.
O servidor DNS opera na porta UDP 53.
REQUEST
REPLY
O ponto mais alto da cadeia é denominado root. O servidor DNS responsável por
este ponto é o root server. Este servidor possui todas as entradas para os
servidores imediatamente abaixo dele.
Root
Servers
Top-level
Domain
Authoritative
Server
[Link]
[Link]
Os root servers são servidores DNS que possuem informações sobre os servidores
top-level domain. São os primeiros a serem consultados. Ao todo são treze
servidores.
NOME IP OPERADOR
[Link] [Link] Verisign
[Link] [Link] USC-ISI
[Link] [Link] Cogent Communications
[Link] [Link] University of Maryland
[Link] [Link] NASA
[Link] [Link] Internet Systems Consortium
[Link] [Link] Defense Information Systems Agency
[Link] [Link] U.S. Army Research Lab
[Link] [Link] Netnod
[Link] [Link] Verisign
[Link] [Link] RIPE NCC
[Link] [Link] ICANN
[Link] [Link] WIDE Project
Prof. Me. Wallace Rodrigues de Santana
99
[Link]
DNS – Root servers
Os root servers são formados por 948 instâncias mantidas por doze operadores
diferentes, distribuídas geograficamente conforme o mapa.
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
100
[Link]
DNS – Top-level domain
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
101
[Link]
DNS – Authoritative server
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
102
[Link]
DNS - Forwarder
O arquivo [Link] é um arquivo texto que nos primórdios da Internet era mantido
manualmente e disponibilizado via compartilhamento de arquivos pelo Stanford
Research Institute para a associação ARPANET, contendo os nomes de host e seus
endereços.
Nos sistemas operacionais modernos, este arquivo permanece como um
mecanismo de resolução de nome alternativo.
No GNU/Linux, este arquivo se encontra em:
\etc\hosts
c:\windows\system32\drivers\etc\[Link]
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
106
[Link]
DNS – resolução de nomes
Técnica recursiva
Quando um cliente envia uma
solicitação recursiva para um servidor
DNS, o servidor responde com a
resposta se tiver a informação
solicitada. Caso contrário, o servidor
assumirá a responsabilidade de
encontrar a resposta, tornando-se um
cliente em nome do cliente original e
enviando novas solicitações para outros
servidores.
O cliente original envia apenas uma
solicitação e, eventualmente, obtém as
informações desejadas (ou uma
mensagem de erro, se não estiver
disponível).
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
107
[Link]
DNS – resolução de nomes
Resumo
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
108
[Link]
DNS – resolução de nomes
Pesquisa reversa
A hierarquia especial "[Link]" foi
criada para permitir pesquisas reversas
fáceis de nomes DNS.
"[Link]" contém 256
subdomínios numerados de 0 a 255, cada
um dos quais tem 256 subdomínios
numerados de 0 a 255 e assim por diante,
abaixo de quatro níveis. Assim, cada
endereço IP é representado na hierarquia.
No diagrama ao lado, o nome de domínio
DNS “[Link]” tem um
registro de recurso convencional
apontando para seu endereço IP
[Link], bem como um registro de
resolução reversa em [Link].IN-
[Link], apontando para o nome de
domínio “[Link]”.
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
109
[Link]
Serviço de diretório
Para consultar o controlador de domínio que atende uma determinada rede, neste
exemplo a rede [Link], pode-se usar o comando nslookup:
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
125
[Link]
Introdução
O que é o tempo?
Se considerarmos dois eventos, um ocorrendo depois do outro, podemos definir o
tempo em termos de causalidade, ou seja, se o primeiro evento provocar o
segundo, então podemos dizer certamente que o segundo evento ocorre depois
do primeiro.
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
126
[Link]
Introdução
O que é o tempo?
Mas quanto o segundo evento ocorre depois do primeiro? A resposta é a
quantidade que costuma-se chamar de tempo, ou, mais precisamente, de
intervalo de tempo.
Essa quantidade pode ser medida por um dispositivo chamado relógio, que
trabalha de forma contínua fornecendo indicações instantâneas, que podem ser
chamados de momentos.
Então, se o primeiro evento ocorre em um momento m1 e o segundo evento
ocorre em outro momento m2, o intervalo de tempo entre os dois eventos é t,
onde:
𝑡 = 𝑚2 − 𝑚1
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
127
[Link]
Introdução
O que é o tempo?
Assim, podemos considerar que o tempo é o intervalo entre dois eventos, ou o
momento indicado pelo relógio. O tempo é medido em segundos, que é uma
unidade do SI (Sistema Internacional de Unidades).
Historicamente o segundo era medido com base no dia solar médio (1/86400 do
dia solar médio), mas a rotação da Terra é bastante imprecisa. Então, em 1954,
definiu-se o segundo com base na rotação da Terra em torno do Sol
(1/31.556.925,9747 do tempo que levou a Terra a girar em torno do Sol à partir
das 12h de 04/01/1900). Contudo, a rotação da Terra em torno do Sol também é
imprecisa.
Desde 1967 o segundo é definido com base na medição de relógios atômicos,
como:
“O segundo é a duração de [Link] períodos da radiação correspondente à
transição entre dois níveis hiperfinos do estado fundamental do átomo de césio
133.”
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
128
[Link]
Introdução
As escalas de tempo
As escalas de tempo podem ser definidas como sistemas de ordenamento de
eventos. Pode-se entendê-las também como convenções sobre a forma de medir e
representar o tempo. As escalas não podem ser ambíguas, devem ser estáveis e
homogêneas.
Existem diversas escalas de tempo. As mais importantes no contexto do NTP são:
• TAI (Tempo Atômico Internacional ou Temps Atomique International): É
calculada pelo Bureau International des Poids et Mesures (BIPM) a partir da
leitura de mais de 260 relógios atômicos localizados em institutos e
observatórios de metrologia ao redor do mundo. No Brasil o Observatório
Nacional participa da geração do TAI. Estima-se que o erro do TAI em relação a
um relógio imaginário perfeito esteja em torno de 100 ns por ano;
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
129
[Link]
Introdução
As escalas de tempo
• TUC (Tempo Universal Coordenado) ou UTC (Universal Time Coordinated): É a
base para o tempo legal no mundo todo, inclusive no Brasil. O UTC acompanha o
TAI, mas é disciplinado pelo período solar. Para ajustar o UTC em relação ao
período solar é acrescentado ou removido um segundo sempre que necessário.
Isso é chamado de segundo intercalado, ou leap second, e a necessidade de
aplicar e em que data fazê-lo é determinada pela International Earth Rotation &
Reference Systems Service (IERS). Assim, assegura-se que o Sol esteja
exatamente sobre o meridiano de Greenwich as 12 horas, com um erro máximo
de 0,9 s. O UTC é então o sucessor do GMT (Greenwich Mean Time), que era a
escala de tempo utilizada quando a definição de segundo era baseada no dia
solar;
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
130
[Link]
Introdução
As escalas de tempo
• TA(k): Tempo Atômico. É a designação dada às escalas de tempo materializadas
por um relógio atômico específico. Por exemplo, a designação TA(ONRJ) indica a
escala mantida pelo Observatório Nacional no Rio de Janeiro, e que contribui na
geração do TAI. TA(NIST) indica a escala mantida pelo US National Institute of
Standards and Technology;
• GPS Time: Os satélites GPS adotaram uma escala sincronizada com o UTC em
1980, mas desde então não sofreram as correções dos segundos intercalados. O
GPS está adiantado em relação ao UTC em 14 s. Atenção aqui porque os
receptores GPS normalmente apresentam o tempo em UTC, fazendo a
“correção” internamente. Desconsiderando-se a questão dos segundos
intercalados, o GPS (por definição) não diverge do UTC mais do que 1 µs. Na
prática, o erro não passa de algumas dezenas de nanosegundos;
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
131
[Link]
Introdução
As escalas de tempo
• Tempo Local: Diferentes regiões do mundo adotam fusos horários distintos. O
tempo local é uma escala de tempo baseada numa diferença em relação ao UTC,
de forma a adequá-lo ao tempo solar local. No Brasil, a legislação determina os
fusos em seus respectivos Estados que o adotam. A Lei n° 11.662 de 24/04/2008
e o Decreto n° 6.558 de 08/09/2008 definem:
Diferença em
Sem horário de Verão No horário de Verão
relação ao UTC
Ilhas de Fernando de Noronha, Trindade, Ilhas de Fernando de Noronha, Trindade,
Martin Vaz, Penedos de São Pedro e São Martin Vaz, Penedos de São Pedro e São
UTC-2
Paulo e o Atol das Rocas. Paulo e o Atol das Rocas. Estados da região
Sudeste e Sul, Goiás e o Distrito Federal.
Estados da região Nordeste, Sudeste, Sul, Estados da região Nordeste, Tocantins,
UTC-3 além do Distrito Federal, Goiás, Tocantins, Amapá, Pará, Mato Grosso e Mato Grosso
Amapá e Pará. do Sul.
Estados de Roraima, Rondônia, Mato Grosso, Estados de Roraima, Rondônia, Amazonas e
UTC-4
Mato Grosso do Sul, Amazonas e Acre. Acre.
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
132
[Link]
Introdução
A importância da sincronização
Uma importante propriedade do tempo é sua monotonicidade, que significa que o
tempo sempre avança. Essa parece ser uma propriedade simples, óbvia e fácil de ser
mantida, mas de fato não é. Relógios implementados em software, como é o caso dos
relógios utilizados pelos diversos Sistemas Operacionais, podem ser facilmente
ajustados, intencionalmente ou não, para representar um tempo no passado.
Diferentes softwares e aplicações podem ser sensíveis a problemas relativos à
sincronização do tempo de formas diversas. Dentre os possíveis problemas com a
sincronização, podemos considerar:
• um computador, ou grupo de computadores, com o tempo diferente da hora legal;
• um computador cujo tempo foi ajustado para o passado;
• um grupo de computadores discordando entre si quanto ao tempo correto (isso
implica que ao menos n-1 integrantes desse grupo terão o tempo diferente da hora
legal, implica também que haverá computadores para os quais, tendo como
referência seu relógio local, o relógio de um ou mais de seus companheiros de grupo,
estará no passado).
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
133
[Link]
Introdução
A importância da sincronização
Quando se trata de um computador isolado a exatidão em relação à uma referência de
tempo como a hora legal brasileira não é tão importante. Nesse caso o mais importante
é manter a monotonicidade do tempo. Além disso, eventuais ajustes no relógio devem
ser, sempre que possível, graduais. Saltos no tempo, mesmo de alguns poucos
segundos, para o futuro podem ser ruins, e para o passado, desastrosos.
Como exemplos de aplicações afetadas pelo tempo pode-se citar:
• Sistemas de distribuição de conteúdo (www, usenet news, etc): Utilizam estampas de
tempo para controlar a expiração dos documentos e o cache. Servidores com o tempo
errado podem causar perda de informações ou impedir o acesso às mesmas;
• Sistemas de arquivos (filesystems): Alguns eventos importantes como a criação e
modificação de arquivos são marcados por estampas de tempo. Algumas aplicações
lêem essas informações e delas dependem. Se alguma dessas datas estiver no futuro,
as aplicações podem agir de forma indevida, ou mesmo deixar de funcionar por
completo. Como exemplos de aplicações sensíveis a essa situação pode-se citar os
sistemas de controle de versão (como o cvs), sistemas de compilação automática
(make), sistemas de backup de dados e sistemas de banco de dados;
• Agendadores de eventos: Aplicações como o cron e o at dos sistemas Unix
dependem do tempo correto para funcionarem;
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
134
[Link]
Introdução
A importância da sincronização
• Criptografia: Muitas técnicas criptográficas fazem uso de estampas de tempo
para os eventos e chaves para prevenir alguns tipos de ataques. Se os
computadores envolvidos não estiverem sincronizados entre si, a autenticação e
comunicação criptografada podem falhar;
• Protocolos de comunicação e aplicações de tempo real: Essas aplicações, que
incluem as Interfaces Gráficas, fazem uso de filas de eventos, timeouts, timers, e
outros recursos de software ligados ao tempo. Para seu correto funcionamento é
necessário garantir a monotonicidade, uma boa resolução, e a continuidade
(ausência de saltos) no tempo;
• Sistemas transacionais e bancos de dados distribuídos: Dependem de relógios
exatos e muitas vezes, de sua sincronia com a hora legal. Como exemplo dessas
aplicações pode-se citar o Home Banking, o Home Broker, os sistemas EDI, etc.
As bolsas de valores, por exemplo, tem horários bem definidos de início e
término do pregão. A Receita Federal aceita as declarações de Imposto de Renda
geralmente até a meia noite da data limite para a entrega.
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
135
[Link]
Introdução
A importância da sincronização
É importante também do ponto de vista de segurança de redes que os relógios dos
computadores estejam sincronizados. Investigações relacionadas a incidentes de
segurança tornam-se impossíveis caso os servidores envolvidos e os diversos
arquivos de log discordem entre si em relação às estampas de tempo dos eventos.
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
136
[Link]
Relógios físicos
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
137
[Link]
Relógios físicos
A partir de um circuito que usa um cristal de quartzo, é possível gerar uma saída
de onda quadrada com uma frequência bem conhecida e estável.
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
139
[Link]
Relógios físicos
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
140
[Link]
Relógios físicos
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
141
[Link]
Relógios físicos
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
143
[Link]
Sistema de posicionamento global
Cada satélite tem até quatro relógios atômicos que são calibrados periodicamente
por estações especiais na Terra.
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
144
[Link]
Sistema de posicionamento global
Fonte: Sistemas Distribuídos: Princípios e Paradigmas, de Andrew S. Tanenbaum e Maarten Van Steen.
Prof. Me. Wallace Rodrigues de Santana
145
[Link]
Network time protocol
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
146
[Link]
Arquitetura do NTP
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
147
[Link]
Arquitetura do NTP
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
148
[Link]
Funcionamento do NTP
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
150
[Link]
Troca de mensagens e cálculo do deslocamento
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
153
[Link]
Troca de mensagens e cálculo do deslocamento
Exemplo
Ao olhar a figura, pode-se observar que T-ida=2 e T-volta=2. Contudo, nem
o Cliente nem o Servidor têm essa visão. O Servidor ao final da troca de
mensagens descarta todas as informações sobre a mesma. O Cliente conhece as
variáveis a=9, x=4, y=9 e b=18, mas à partir delas é impossível calcular T-ida ou T-
volta. Contudo, é possível calcular o atraso e o deslocamento:
atraso = (b-a)-(y-x) = (18-9)-(9-4) = 9 - 5 = 4
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
154
[Link]
Troca de mensagens e cálculo do deslocamento
Exemplo
Um deslocamento de -7 significa que o relógio local do Cliente deve ser atrasado 7
unidades de tempo para se igualar ao do Servidor.
No entanto, este cálculo é mais aproximado do que exato, pois existem atrasos
estocásticos nas redes devido às filas dos roteadores e switchs. Numa WAN ou na
Internet enlaces de diferentes velocidades e roteamento assimétrico, além de
outros fatores, também causam diferenças entre T-ida e T-volta.
Fonte: [Link]
Prof. Me. Wallace Rodrigues de Santana
155
[Link]
Para saber mais...