Aula 03
Aula 03
Distribuídos
Sistemas Distribuídos
• Teleaula nº: 3
Contextualização
• Conceitos de Sistemas Distribuídos
• Processos e Comunicação em Sistemas Distribuídos
• Aspectos de Projeto dos Sistemas Distribuídos
Fundamentos de
sistemas distribuídos
Sistemas Distribuídos
Comp. 1 Comp. 2 Comp. 3
Aspectos
• Funcionamento independente
• Hardwares diversificados
• Middleware
Objetivos
• Disponibilidade alta e fácil acesso ao sistema e a
todos os seus recursos, tanto pelas máquinas que
fazem parte do sistema distribuído como pelo usuário
final.
• Confiabilidade maior que nos sistemas centralizados.
Teorema CAP (consistência, disponibilidade e
resiliência (tolerância a falhas))
• Aumento de Desempenho, já que há múltiplas
instancias, tanto de hardware quanto de software,
para realizar o processamento necessário.
Objetivos
• Ocultar ao usuário que os recursos do sistema são
distribuídos – IMPORTANTE!
• Deve ser aberto, ou seja, deve facilitar a inclusão de
novas máquinas e recursos no ambiente em
funcionamento – Expansão facilitada
Desafios
• Heterogeneidade: operar em nós com características
de hardware diferentes, e suportar diferentes sistemas
operacionais
• Segurança: garantir confidencialidade, integridade e
disponibilidade – Problema: Ataques DoS!
• Tolerância a falhas: capacidade do sistema
distribuído se auto recuperar na ocorrência de uma (ou
mais) falhas
• Escalabilidade, concorrência e abertura
Classificação de
Sistemas Distribuídos
Classificação de Sistemas Distribuídos
Sistema centralizado
Sistemas centralizados – Mainframes
Desvantagens: escalabilidade e
produtividade, linguagens de programação
antigas, tamanho
servidor, falta de interface gráfica.
Classificação de Sistemas Distribuídos
Sistemas paralelos – Simultaneamente executar várias
partes da mesma aplicação
• Mais de 1 processador
• Baseado em clusters
• Diversos núcleos
Servidores Multithread
• Simplifica o Código do servidor
• Paralelismo para alto desempenho
Requisição despachada
Thread despachante para um thread operário Servidor
Thread operário
Servidor
sincronização comunicação comunicação
Cliente
Fonte: adaptado de: TANENBAUM, A. S; STEEN, M. V. Sistemas Distribuídos - Princípios e Paradigmas. 2. ed. São Paulo: Pearson, 2008.
Chat com Sockets TCP
Descrição da SP
• Implementar uma aplicação simples de chat em JAVA
utilizando sockets TCP!
Aspectos de Projeto
dos Sistemas
Distribuídos
Segurança
• Muito importante, já que a comunicação entre as
máquinas de um sistema distribuído sempre ocorre por
meio de redes de comunicação, tipicamente cabeadas.
• Confidencialidade e Integridade
• Exercício de equilíbrio entre custo e ameaças
Segurança
Pontos de atenção em relação à segurança, no projeto
de sistemas distribuídos:
• Portas são expostas;
• Redes não são seguras;
• A validade das chaves criptográficas
deve ser limitada;
• Algoritmos de criptografia podem ter falhas;
• Hackers.
Escalabilidade
Data center
Máquina cliente Fonte: elaborado pelo autor
Tolerância a Falhas/Resiliência
• comunicação confiável entre as camadas de Cliente e
Servidor.
• processos sejam replicados em grupos,
• Detecção de falhas -> mascarar as falhas
Grupo simples Grupo hierárquico
coordenador
operários
Fonte: elaborado pelo autor
Heterogeneidade
• Sistema que contenha em sua composição máquinas
(nós) de sistemas operacionais, recursos (hardware) e
até mesmo fabricantes diferentes
• Protocolos e middlewares para comunicação
Comp. 1 Comp. 2 Comp. 3
MIDDLEWARE
SO SO SO
Local 1 Local 2 Local 3
Fonte: elaborado pelo autor
Você sabe indicar
exemplos de
aplicações que
utilizam TCP e UDP?
Recapitulando
Recapitulando
• Conceitos de Sistemas Distribuídos
• Processos e Comunicação em Sistemas Distribuídos
• Aspectos de Projeto dos Sistemas Distribuídos