Sistemas Distribuídos
Definição Sistema Distribuído é aquele onde os componentes de software e hardware localizados em redes de computadores comunicam-se e coordenam suas ações apenas por passagem de mensagens. [Couloris2005]
Definição Esta definição indica as seguintes características: Concorrência Compartilhamento, coordenação Sem relógio global Sincronização, coordenação Falhas independentes Rede, computador, programa,...
Exemplos Sistemas Distribuídos estão em todo lugar Internet Intranet Computação móvel
Internet típica ISP intranet backbone desktop computer: server: network link: satellite link
Intranet típica print and other servers email server Desktop computers Web server Local area network email server File server print other servers the rest of the Internet router/firewall
Dispositivos portáveis em Sistemas Distrituídos Internet Host intranet Wireless LAN WAP gateway Home intranet Printer Camera Mobile phone Laptop Host site
Motivação Compartilhamento de Recursos Principal motivador para a construção de sistemas distribuídos Recurso caracteriza coisas que podem ser utilmente compartilhadas em uma rede Componentes de hardware: discos, impressoras Componentes de software: arquivos, bases de dados e objetos de dados (video, audio) WEB : html, url, http, web services
Desafios A construção de sistemas distribuídos produz muitos desafios Muitos deles já foram alcançados Mesmo assim é preciso conhece-los e ter cuidado com eles Heterogeneidade, Abertura, Segurança, Escalabilidade, Tratamento de falhas, Concorrência, Transparência
Desafios (1) Heterogeneidade: eles são construídos de uma variedade de diferentes redes, sistemas operacionais, hardware e linguagens de programação Protocolos de comunicação Internet Middleware
Multiprocessadores e Multicomputadores Diferentes organizações basicas: memória compartilhada X privada e interconexão barramento X chaveamento
Conceitos de Software Sistema Descrição meta SOD SOR Sistemas operacionais fortemente acoplados para multi-processadores e multicomputadores homogêneos Sistemas operacionais fracamente acoplados para multicomputadores heterogêneos (LAN and WAN) Esconder e gerenciar recursos de hardware Oferecer serviços locais para clientes remotos Nível adicional em cima do SOR Prover distribuição Middleware implementando serviços de propósito geral transparência Revisão entre: SOD (DOS - Distributed Operating Systems) SOR (NOS - Network Operating Systems) Middleware
SO Multicomputador (1)
Sistema Operacional de Rede
Middleware
Middleware Em um sistema distribuído aberto baseado em middleware, os protocolos usados por cada middleware deveriam ser os mesmos, assim como as interfaces que eles oferecem para as aplicações.
Desafios (2) Abertura: Eles deveriam ser extensíveis o primeiro passo é publicar as interfaces dos componentes, mas a integração de componentes escritos por diferentes programadores é o desafio real Caracterizados pela publicação de suas interfaces Baseados no fornecimento de um mecanismo de comunicação uniforme Independência de fornecedor
Desafios (3) Segurança Criptografia pode ser usada para fornecer proteção adequada de recursos compartilhados e para manter informação sensitiva secreta quando é transmitida em mensagens na rede. Denial of service attacks Security of mobile code
Desafios (4) Escalabilidade Um SD é escalável se ele permanece efetivo quando existe um significativo aumento no número de recursos e de usuários. Algoritmos usados para acessar dados devem evitar gargalos e dados devem ser estruturados de forma hierárquica para conseguir os melhores tempos de acesso Dados acessados frequentemente podem ser replicados
Problemas de Escalabilidade Conceito Exemplo Serviços centralizados Um único servidor para todos os usuários Dados centralizados Algoritmos centralizados Um único guia telefônico on-line Fazer roteamento basedo em informação completa
Desafios (5) Tratamento de falhas Qualquer processo, computador ou rede pode falhar independentemente dos outros. Assim, cada componente necessita estar avisado das possíveis formas nas quais os componentes dos quais ele depende podem falhar e ser projetado para tratar com cada uma das falhas de forma apropriada. Detecção, mascarar, tolerar, recuperar, usar redundância
Desafios (6) Concorrência A presença de múltiplos usuários em um SD é uma fonte de requisições concorrentes aos seus recursos. Cada recurso deve ser projetado para estar seguro em um ambiente concorrente. Operações sincronizadas (semáforos)
Desafios (7) Transparência A idéia é fazer alguns aspectos da distribuição invisíveis para o programador da aplicação de forma que sua única preocupação é com o projeto da sua aplicação. Sem preocupação com localização ou como suas operações são acessadas por outros componentes, ou quando é replicado ou migrado.
Transparência Acesso Localização Migração Replicação Concorrência Falha Transparência Descrição Permite recursos remotos e locais ser acessados usando operações idênticas Permite acessar o recurso sem conhecimento da localização física ou de rede Permite movimento de recursos e clientes no sistema sem afetar a operação de usuários e programas Permite múltiplas instâncias de recursos ser usadas para aumentar confiabilidade e desempenho sem conhecimento das réplicas pelos usuários ou programadores de aplicação Permite varios processos operar concorrentemente usando recursos compartilhados sem interferência entre eles Oferece o confinamento de falhas, permitindo usuários e programas de aplicação completar suas tarefas independente da falha de componentes de hardware ou software