Sistemas Distribuídos
Computação
Aula 01-02: Introdução
2o. Semestre / 2014
Prof. Jesus
Agenda da Apresentação
● Definição e surgimento de Sistemas
Distribuídos
● Principais aspectos de Sistemas Distribuídos
(Exemplos)
● Motivação e principais problemas
● Transparência de distribuição
● Aplicações
2
Definição de Sistemas Distribuídos
● “Um sistema distribuído (SD) é um conjunto de computadores
independentes que se apresenta a seus usuários como um
sistema único e coerente” (Tanenbaum)
● “Um sistema em que componentes de hardware e software
localizados em uma rede se comunicam e
coordenam suas ações por passagem de mensagens”
(Coulouris et al.)
Surgimento dos Sistemas Distribuídos
●
Evolução tecnológica e expansão da utilização e
interligação das redes de computadores
●
Componentes de uma rede podem se comunicar com
maior integração (qualidade de serviço)
●
Emular o comportamento de ambientes centralizados
Principais aspectos dos Sistemas
Distribuídos
– Infra-estrutura para:
● aplicações
● serviços
– Estrutura física
● múltiplos computadores conectados em rede
– Concorrência
– Sem memória compartilhada
● sistema fracamente acoplado
– Sem relógio global
– Falhas isoladas e independentes
– Comunicação através de passagem mensagens
● tipicamente assíncronas
5
Exemplos de Sistemas Distribuídos
● Internet
● Intranet (uma rede dentro da Internet
gerenciada por alguma organização)
● Computação móvel e ubíqua.
6
Internet
intranet
ISP
backbone
satellite link
desktop computer:
server:
network link:
Fonte: CDK4
7
Internet
● Programas interagem através de mensagens
● Pode ser ampliado com novos servidores ou
tipos de serviços
● Possui backbones que são redes com alta
capacidade de transmissão
8
Intranet
email server Desktop
computers
print and other servers
Local area
Web server network
email server
print
File server
other servers
the rest of
the Internet
router/firewall
Fonte: CDK4
9
Intranet
● Porção da Internet administrada separadamente por
uma organização e com políticas de segurança locais
● Pode ser composta por uma ou mais LANs
● Uma intranet geralmente é conectada à Internet
através de um roteador
10
Intranet
● Usuários (de outras intranets) acessar seus serviços
● Estas intranets precisam possuir políticas de
segurança
● Proteger informações confidenciais
● Usam firewall para filtrar a entrada e saída de
informações
11
Intranet
● Firewall podem impedir acessos legítimos
● Devem ser complementados com mecanismos de
segurança mais refinados
● Existem casos em que as organizações não desejam
que suas intranets não se conectem à Internet
– Organizações militares em época de guerra, agências de
segurança, etc.
12
Computação móvel e ubíqua
● Móvel: dispositivos (smartphones, laptops, GPS) que
utilizam conexões de rede sem fio que permite ao usuário
acesso a serviços independente de sua localização física
● Ubíqua: existe sem a percepção da existência dela pois o
computador está integrado ao ambiente. Ex.: sensores,
eletrodomésticos inteligentes.
13
Computação Móvel e Ubíqua
14
Motivação
● Compartilhamento de recursos
– Ex.: hardware, software, dados, serviços, etc.
● Elevada disponibilidade de serviço
– Gerenciamento de recursos através de uma interface bem
definida
● Extensibilidade
● Desempenho
● Confiabilidade (redundância, falhas parciais)
● Suporte a organizações distribuídas
15
Principais problemas
● Concorrência
● Falhas parciais
● Localização
● Acesso
● Migração
● Replicação cliente
● Mobilidade
● Contexto
● Segurança
● Larga escala
● Heterogeneidade
16
Heterogeneidade
● Hardware
– PCs, servidores, PDAs, smart phones, smart
cards, utilidades domésticas etc
● Sistemas operacionais
● Linguagens de programação
● Tecnologias de rede
– Internet, WAP, Bluetooth
– Ethernet, WiFi, WiMAX, ...
● Tecnologias de middleware
● Políticas de gerenciamento
17
Exemplo de ambiente heterogêneo
Internet
Host intranet WAP
Wireless LAN Home intranet
gateway
Mobile
phone
Fonte: CDK4
Printer Laptop
Camera Host site
18
Heterogeneidade
● Middleware
– Camada de software que fornece uma forma de ocultar a
heterogeneidade do sistema. Ex.: RMI, CORBA, etc;
– Fornece também um modelo de programação
independente de plataforma
● Código móvel e máquina virtual
– O primeiro se refere a um código enviado para outro
computador e executado no seu destino. Ex.: Java
applets.
– O segundo permite a execução de um código em
diferentes tipos de hardware e/ou sistemas
operacionais. Ex.: JVM (Máquina Virtual Java)
19
Middleware
20
Abertura
● Facilidade de extensão e atualização
– Adição de novos recursos e serviços
– Re-implementação de serviços existentes
• Determina quanto o sistema pode ser estendido
– Extensão de hardware
• Adição de memória, periféricos...
– Extensão de software
• Recursos de software, protocolos, serviços...
• Grau de não interferência quando da inclusão de algo novo
21
Abertura
● Depende de que as interfaces de acesso aos principais
componentes do sistemas sejam conhecidas e estejam
disponíveis para os programadores
● Exemplos de abertura na Internet
– Especificações controladas e atualizadas por um Comitê
Gestor
– Novos produtos e serviços implementados de acordo com as
especificações vigentes
– Conformidade da implementação deve ser testada e
verificada para garantir o correto funcionamento do sistema
22
Abertura
● Interfaces de sistemas abertos devem ser publicadas
● Devem fornecer um mecanismo de comunicação uniforme
para compartilhamento de recursos
● Devem oferecer suporte a diferentes tipos de hardware e
software mesmo que sejam de diferentes fornecedores
23
Segurança
● Proteção para recursos compartilhados
– Confidencialidade (proteção contra usuários não autorizados) Ex.: Acesso a
dados sobre salário, histórico médico, endreço
– Integridade (proteção contra alteração e corrupção) Ex.: Alteração indevida de
dados usados em transações bancárias
– Disponibilidade (proteção contra interferência ao meio de acesso) Ex.: Queda
ou sobrecarga do servidor ou do meio de comunicação
● Principais mecanismos de segurança na Internet
– Firewall
– Assinaturas digitais
– Canais de seguros de comunicação
● Desafios
– Ataques de negação de serviço
– Segurança para código móvel
24
Escalabilidade
● Capacidade do sistema permanecer operando de forma
efetiva mesmo diante de um aumento significativo do número
de usuários e/ou dos recursos disponíveis
● Principais desafios:
– Controlar o custo dos recursos físicos
– Controlar perdas de desempenho
– Prevenir o esgotamento dos recursos de software
– Evitar “gargalos” de desempenho na rede ou nos próprios servidores
● Principais técnicas:
– Replicação
– Caching
– Concorrência e paralelismo
25
Tratamento contra falhas
● Falhas são inevitáveis em sistemas computacionais
– Resultados incorretos
– Interrupção não planejada do serviço antes de sua conclusão
● Falhas em sistemas distribuídos são parciais
● Algumas falhas podem ser detectadas (usando checksums em
arquivos) e outras não (falha em um servidor)
● Sistemas distribuídos devem oferecer alta disponibilidade de
recursos mesmo diante da ocorrência de falhas
– Disponibilidade: medida da proporção do tempo que um recurso está
disponível para uso
26
Tratamento contra falhas
● Técnicas de tratamento de falhas mais comuns:
– Detecção (ex. bits de paridade, checksums)
– Ocultamento (ex. retransmissão de mensagens)
– Tolerância (ex. informar o usuário do problema)
– Recuperação (ex. transações em BD’s)
– Redundância (ex. replicação de tabelas no DNS)
27
Concorrência
● Suporte para múltiplos acessos simultâneos a um ou mais
recursos compartilhados
– Possibilidade de inconsistências quando os recursos são alterados
● Serviços que representam recursos compartilhados devem ser
responsáveis por garantir que as operações de acesso os
mantenham em um estado consistente
– Válido para servidores e objetos de aplicações
● Técnicas mais comuns:
– Sincronização de acesso (ex.: exclusão mútua distribuída)
– Protocolos de controle de concorrência (ex.: 2 PCs)
28
Transparências de distribuição
● Um SD deve se apresentar a usuários e aplicações
como um sistema único (TRANSPARENTE)
● Tornar invisíveis as complicações geradas pela
distribuição:
– para o programador de aplicações distribuídas
– para o usuário
– para o administrador do sistema
● Principais tipos de transparência
– acesso, localização, falha, migração, relocação,
replicação, persistência, transação, concorrência
29
Principais transparências de distribuição
● Transparência de acesso: permite o acesso a componentes remotos
e locais através das mesmas operações
● Transparência de localização: permite o acesso a componentes sem
conhecimento da sua localização física
● Transparência de concorrência: permite a execução concorrente de
múltipla operações sobre o mesmo conjunto de recursos sem causar
interferência entre elas
● Transparência de replicação: permite usar múltiplas instâncias de um
mesmo recurso lógico sem conhecimento da existência de réplicas
pelos usuários e programadores
30
Baseado em: CDK4
Principais transparências de distribuição
● Transparência de falha: permite esconder a ocorrência de falhas
dos usuários e programadores
● Transparência de mobilidade (migração): permite a realocação de
recursos e aplicações sem afetar o seu uso
● Transparência de desempenho: permite a re-configuração do
sistema para aumentar o seu desempenho conforme varia a carga de
trabalho
● Transparência de escala: permite a expansão do sistema e de suas
aplicações sem exigir mudanças significativas na infra-estrutura
existente
31
Principais transparências de distribuição
● As duas formas mais importantes são acesso e
localização.
– Suas presenças (ou ausências) afetam profundamente a
maneira como os recursos são utilizados em um sistema
distribuído
– Também conhecidas como transparência de rede
32
Principais transparências de distribuição
● Exemplos de transparência:
– Ferramenta para “exploração” de arquivos que mantêm as
mesmas opções de navegação para pastas locais e
remotas
– API para acessar dados que utiliza as mesmas operações
para dados locais e remotos
● Exemplos de falta de transparência:
– Sistema distribuído onde só é possível acessar arquivos
remotos via FTP
– Serviço de jogos online que precisa ser tirado do ar para
acrescentar ou trocar um servidor
● Classificação quanto à dificuldade de implementação
(hierarquia de dependência) e nível (usuário ou
programador) 33
Principais transparências de distribuição
● Níveis de transparência:
– Nível do usuário: distribuição física dos recursos é
imperceptível para os usuários das aplicações (ex.:
navegador da Web)
– Nível do programador: distribuição física dos recursos é
imperceptível tanto para os usuários quanto para os
programadores das aplicações (ex.: programação com
middleware ou SO distribuído)
34
Consórcio para integração de aplicações
• Consórcio que reúne cerca de 800 empresas envolvidas com
tecnologia de objetos
–fabricantes de middleware e aplicações
–instituições de pesquisa
–usuários
• Missão
–“Criar um mercado de software baseado em componentes”
• Ênfase:
–Re-uso de componentes
–Interoperabilidade e portabilidade de componentes
–Desenvolvimento de componentes padronizados
35
Aplicações
● Em princípio, qualquer aplicação
convencional pode ser portada com sucesso
para um ambiente de sistema distribuído
● Algumas áreas de aplicação emergentes
– multimídia distribuída
– espaços ativos
– disseminação de informações
– computação móvel e ubíqua
– computação em grade
– redes de sensores 36