Arquitetura de
sistemas distribuídos
3. Comunicação nos Sistemas Distribuídos
3.1.Introdução aos modelos de comunicação
3.2 Modelo Cliente-Servidor
3.3.Comunicação através de Sockets
3.3 Chamada a procedimento remoto
Modelos de comunicação
REVISÃO
• Sistemas centralizados
- Memória partilhada
• Sistemas distribuídos
- Não existe memória partilhada - Baseado em troca de mensagens
Modelos de comunicação
CONCEITOS BÁSICOS DE PROTOCOLOS
• Conjunto de regras, procedimentos e formatos
para garantir a comunicação entre duas entidades geograficamente distintas.
Modelos de comunicação
• ISO (International Standard Organization),
desenvolveu um modelo de referência:
- Diversos níveis envolvidos
- O que deve ser tratado em cada nível
- Open Systems Interconnection Reference Model
Modelos de comunicação
CONCEITO DE PROTOCOLO EM CAMADAS
• Comunicação é dividida em sete níveis ou
camadas, onde cada camada trata de um aspecto específico da comunicação.
Modelos de comunicação
DESAFIO DE PROTOCOLOS
• Roteamento
• Controle de congestionamento • Internetworking
Modelos de comunicação
Modelo cliente-servidor
CONCEITOS
• Método ou modelo de distribuição de aplicações
computacionais por meio de muitas plataformas.
• Geralmente refere-se a um método onde dois ou
mais computadores interagem de modo que um oferece serviço aos outros.
• Arquitetura computacional que envolve requisições
Modelo cliente-servidor
CLIENTE
• Também denominado de “front-end” e
“workstation”, é um processo que interage com o usuário por meio de interface gráfica, ou não
permitindo consultas e comandos para recuperação de dados.
• É um processo ativo na relação cliente/servidor. • Torna a rede transparente para o usuário.
Modelo cliente-servidor
SERVIDOR• Também denominado servidor “back-end”, fornece determinado
serviço e fica disponível quando o cliente necessita.
• É um processo reativo na relação cliente-servidor. • Possui uma execução contínua.
• Recebe e responde solicitações dos clientes. • Presta serviços distribuídos.
Modelo cliente-servidor
VANTAGENS
• Simplicidade;
• Não tem necessidade de estabelecer e finalizar a conexão;
• A mensagem de resposta de um servidor pode funcionar como
uma confirmação de entrega de uma requisição;
• Eficiência;
• Se as máquinas forem idênticas é necessário apenas três níveis de
protocolo:
Modelo cliente-servidor
PROCESSOS ACIONANDO INDIVIDUALMENTE PROCESSOS SERVIDORES
Modelo cliente-servidor
UM SERVIÇO PROVIDO POR MÚLTIPLOS PROCESSOS SERVIDORES
Modelo cliente-servidor
TROCA DE MENSAGENS
• send (destino)
Comunicação através de sockets
CONCEITO (REVISÃO)
• Um socket é um ponto final (endpoint) de um canal
bidirecional de comunicação entre dois programas em uma rede.
- Endereço local - Endereço global
Comunicação através de sockets
CONEXÃO
• O servidor fica apenas no estado: “ouvindo”, aguardando o pedido de
conexão do cliente.
• O cliente sabe o nome do host e qual porta está associada a
aplicação no qual irá prover o serviço.
• Assim que o servidor aceitar a conexão, é criado um novo socket
para continuar ouvindo as requisições e atende a solicitação do host cliente pelo socket original.
Comunicação através de sockets
PROTOCOLOS UDP
• User Datagram Protocol (UDP).
• Protocolo não orientado a conexão. • Não há garantia de entrega de dados.
• Perdas durante transmissões não são tratadas por este protocolo. • Usado em redes de alta confiabilidade, onde as taxas de perdas
são baixas.
Comunicação através de sockets
PROTOCOLOS TCP • Transmission Control Protocol (TCP).
• Protocolo orientado a conexão.
• Precisa ser feita uma conexão antes do início da
transmissão de dados
• Fase de conexão -> Fase de transmissão de dados ->
Fase de desconexão.
Comunicação através de sockets
COMUNICAÇÃO: SERVIDOR
• Efetua a criação do Socket;
• Associa o Socket a um endereço local; • Aguarda por conexões cliente;
• Aceita conexão; • Lê requisições; • Envia resposta; • Fecha Socket.
Comunicação através de sockets
COMUNICAÇÃO: CLIENTE
• Efetua a criação do Socket; • Estabelece a conexão;
• Envia a requisição; • Aguarda a resposta; • Fecha o Socket;
Comunicação através de sockets
FUNÇOES/MÉTODOS/APIs
• socket(pf, type, protocol);
• bind(socket, localaddr, addrlen); • listen(socket, queue);
• accept(socket, addr, addrlen); • read(socket, buffer, lenght); • write(socket, buffer, lenght); • close(socket);
Comunicação através de sockets
FUNÇOES/MÉTODOS/APIs
• gethostbyname(host);
Chamada a procedimento
remoto (RPC)
CONCEITO
• Chamadas a procedimentos remotos é a
chamada de um programa a procedimentos localizados em máquinas diferentes.
Chamada a procedimento
remoto (RPC)
OBJETIVO
• Tornar mais fácil a implementação de aplicações distribuídas.
• Esconde o código de chamadas a rede em
procedimentos chamados stubs:
- Método que possui o código de chamadas a rede.
- O uso de stubs isenta a preocupação de clientes com detalhes da implementação de rede como sockets.
Chamada a procedimento
remoto (RPC)
Modelo peer-to-peer (P2P)
CONCEITO
• São sistemas distribuídos nos quais os membros
da rede são equivalentes em funcionalidade.
• Permite que pares compartilhem recursos
Modelo peer-to-peer
CARACTERÍSTICAS• Auto-organização: não há um coordenador do grupo; toda a
coordenação é distribuída.
• Adaptabilidade: rede se reajusta ao ambiente, mesmo que
ocorram falhas.
• Escalabilidade: rede cresce facilmente em larga escala; não há
ponto de estrangulamento.
• Comunicação direta entre os pares: se opõe ao tradicional
modelo cliente-servidor, já que cada nó pode fornecer ou obter recursos.
Modelo peer-to-peer
UTILIZAÇÃO• Compartilhamento de arquivos, imagens, músicas, vídeos e
etc.
• Atualização de sistemas operacionais e de software aplicativo. • Gerenciamento de redes e de sistemas
• Processamento distribuído
• Sincronização de banco de dados • Difusão de informações, etc…
Modelo peer-to-peer
CLASSIFICAÇÃO
• Arquitetura centralizada: utiliza um servidor central
para controle de acesso à rede e para publicação e pesquisa de conteúdo.
• Arquitetura descentralizada: todos os peers possuem
funcionalidade equivalente.
• Arquitetura híbrida: alguns peers especiais, chamados
Modelo peer-to-peer
EXEMPLO: NAPSTER
• Criado em 1999;
• Utilizava um servidor central;
• A transferência de arquivos era feita diretamente
pelos peers;
• Sem o servidor central, que foi desligado por
Modelo peer-to-peer
Modelo peer-to-peer
EXEMPLO: BITTORRENT
• Arquivo .torrent
- Criado por nó seed, que compartilha arquivo
- Contém metadados que descrevem o arquivo e
permitem verificar sua integridade.
Modelo peer-to-peer
EXEMPLO: BITTORRENT
• Servidores tracker
- Coordenam a distribuição de arquivos - Indicam os nós para download
- Controlam a velocidade do download - Se o nó não colabora, perde banda
Modelo peer-to-peer
Modelo peer-to-peer
PROBLEMAS EM REDES P2P
• Downloads interrompidos e não verificados podem
resultar em arquivos corrompidos espalhados pela rede;
• Nós maliciosos registram dados erroneamente e
enviam dados corrompidos, vírus…
• Nos downloads de várias fontes, basta uma fonte
Modelo peer-to-peer
SOLUÇÕES PARA OS PROBLEMAS EM REDES P2P
• Verificação de integridade de dados;
• Uso de mecanismos de proteção na camada de
Modelo peer-to-peer
VERIFICAÇÃO DE INTEGRIDADE DOS DADOS
• Consiste em efetuar verificações com a base no hash do
conteúdo compartilhado.
• Downloads de várias fontes só acontecem se o arquivo
possuir o mesmo hash.
• Ao final do download, o cliente (aplicação) pode fazer a
verificação do hash do arquivo obtido para verificar se ele não foi corrompido no caminho.
Modelo peer-to-peer
MECANISMOS DE PROTEÇÃO
• Normalmente feito na camada de aplicação do
tracker;
• Baseado na associação de índices de reputação de
cada nó na rede;
• Um nó constrói um reputação, quando fornece
conteúdos íntegros;