UNIVERSIDADE Computação Aula 03-04: Modelos de Sistemas Distribuídos 2o. Semestre / 2014 Prof. Jesus Principais questões no projeto de um sistema distribuído (SD) ● ● ● ● Questão de acesso (como sist. será acessado) – Grandes variações na carga de trabalho – Componente desconectado na maior parte do tempo (se conecta algumas vezes) – Componentes necessitam de recursos tais como largura de banda, processamento, espaço em disco. Diferentes tipos de ambiente: o SD deve lidar com diferentes tipos de hardware, sistemas operacionais e redes Problemas internos: ausência de relógio interno, dados conflitantes, falhas no sistema Segurança: proteção contra ataques externos. 2 Principais questões no projeto de um sistema distribuído (SD) Para lidar com estas e outras apresentados os seguintes modelos: ● questões são Modelo Arquitetural – define como os componentes de um SD interagem entre si e estão distribuídos pela rede. ● Modelo Fundamental – define os principais problemas a serem resolvidos para que um SD funcione corretamente sendo confiável e seguro 3 Principais questões no projeto de um sistema distribuído (SD) Modelo fundamental se dividem em três principais tipos: ● Modelo de interação – ● Modelo de falhas – ● Lida com questões de desempenho e limites de tempo. Busca definir as principais falhas que podem ocorrer em um sistema e fornecer mecanismos de comunicação confiáveis Modelo de segurança – Define as principais ameaças para um sistema e como lidar com elas 4 Modelos Arquiteturais de Sistemas Distribuídos ● ● ● Tornar um SD confiável, gerenciável, adaptável Modelo arquitetural simplifica e abstrai as funções de componentes individuais considerando: – O posicionamento deste componentes dentro da rede – O relacionamento entre estes componentes Classificar processos como de servidor, de cliente ou de peer – Identificar responsabilidades de cada processo – Obter desempenho e confiabilidade 5 Modelos Arquiteturais de Sistemas Distribuídos ● ● Esta classificação (cliente, servidor, peer) é importante pois permite: – Identificar a função de cada processo e sua importância para o sistema – Tornar o sistema mais organizado e eficiente Sistemas mais dinâmicos que permitem – Mover um código de um processo para outro – Disposivitos computacionais sejam adicionados ou retirado de um sistema distribuído de forma transparente 6 Arquitetura de software ● ● ● O conjunto de serviços disponíveis para processos distribuídos localmente ou remotamente Serviços são responsáveis pelo gerenciamento de recursos Alguns destes serviços são fornecidos por uma plataforma 7 Plataforma ● ● Camadas de hardware e software mais inferiores para sistemas distribuídos Fornecem serviços para as camadas superiores – ● Facilitar a coordenação e a comunicação entre processos Possuem diferentes tipos de implementação – Intel x86/Windows, Intel x64/Windows, – PowerPC/Mac OS X 8 Camadas de software e hardware em sistemas distribuídos Application, Services Middleware Operating System Computer and network hardware Plataform (physical infrastructure) 9 Serviços de sistemas distribuídos ● ● ● ● Parte de um sistema de computação que encapsula e gerencia uma coleção de recursos relacionados Provê uma interface que permite a aplicações e usuários terem acesso às funcionalidades dos recursos Um serviço pode ser provido por um ou vários servidores Ex.: serviço de arquivos, serviço de multimída, e-mail, etc 10 Aplicação distribuída ● ● ● É uma aplicação que consiste em 2 ou mais processos que executam em diferentes processadores que não compartilham memória Corolário: os processos de uma aplicação distribuída comunicam entre si através da troca de mensagens Ex.: Aplicações de rede tais como FTP, Web(HTTP), sistemas P2P (BitTorrent), computação em grade, computação em nuvem. . 11 Middleware de sistemas distribuídos ● Camada de software que tem por finalidade – mascarar a heterogeneidade da plataforma subjacente (hardware, SO, linguagem) – resolver demais problemas oriundos da distribuição de forma transparente – prover um modelo de programação conveniente para o programador de aplicações ● – ex.: abstrações de alto nível para comunicação remota Prover serviços de infra-estrutura padronizados para uso no desenvolvimento de aplicações ● ex.: resolução de nomes, segurança, transações etc. 12 O que constitui uma plataforma de middleware ● ● ● ● Processos, objetos ou componentes localizados nos computadores do sistema distribuído Interagem e cooperam entre si para prover o suporte de comunicação e compartilhamento de recursos necessário às aplicações Fornece as primitivas básicas para construção de componentes de software que funcionam cooperativamente em um sistema distribuído Plataforma de alto nível para o desenvolvimento de aplicações 13 Alguns modelos de programação para comunicação remota ● Plataformas de middleware fornecem suporte para: – Chamada de métodos remotos – Comunicação de grupo – Notificação de eventos – Espaços de tuplas – Fluxos de mídia 14 Exemplos de middleware ● CORBA ● Java RMI e Jini ● Web services ● DCOM ● .Net ● RM-ODP ● Outros tipos de middleware? 15 Middleware: Limitações ● ● Nem todas as decisões sobre questões de distribuição podem ser embutidas no middleware Algumas requerem conhecimento específico no nível das aplicações – ● Ex.: tratamento de falhas pode depender da semântica da aplicação A implementação destas questões no middleware pode comprometer a corretude e a confiabilidade 16 Arquitetura de sistemas distribuídos ● ● Arquitetura: estrutura de um sistema em termos de componentes especificados separadamente – alocação dos componentes na rede – inter-relacionamento dos componentes Principais modelos (ou estilos) de arquitetura: – Cliente-servidor (processos ou objetos) – Peer-to-peer 17 O modelo cliente-servidor Client Server invocation result invocation result Server Client Key: Process: Computer: 18 O modelo cliente-servidor ● ● ● ● O modelo mais comum Os processos podem ser divididos em dois tipos, de acordo com o seu modo de operação – Cliente: envia pedido, recebe resposta – Servidor: recebe pedido; processa pedido; envia resposta Um servidor pode se tornar cliente. Ex.: Mecanismos de busca, servidor web acessando banco de dados. Problemas – Escalabilidade e tolerância a falhas 19 Variações do modelo cliente-servidor ● Múltiplos servidores provendo um mesmo serviço ● Proxies de serviço ● Código móvel ● Clientes leves ● Dispositivos móveis e configuração espontânea 20 Um mesmo serviço provido por múltiplos servidores Service Server Client Server Client Server 21 Um mesmo serviço provido por múltiplos servidores ● ● ● ● Serviço pode ser implementado por várias máquinas em diferentes pontos da rede Servidores podem interagir entre si para oferecer uma visão global consistente do serviço para os clientes Particionamento – distribuição física dos recursos entre os vários servidores – Maior facilidade de gerência e maior escalabilidade – Ex.: Clusters de servidores Replicação – manutenção de cópias do mesmo recurso lógico em dois ou mais servidores – Maior desempenho e disponibilidade – Ex.: Base de dados do Google, Serviço de nomes da Sun (NIS/NFS) 22 Servidores de proxy e servidores com Cache Web server Client Proxy server Client Web server 23 Servidores de cache ● ● Repositório de cópias de objetos recentemente utilizados que está fisicamente mais próximo do que os objetos originais Principais desafios: – Política de atualização (controla a entrada e saída de objetos no cache) – Localização física (nos clientes ou em um ou mais servidores proxy) 24 Servidores de Proxy ● ● Processo compartilhado por vários clientes que serve como cache para os recursos disponibilizados por outros servidores remotos Principais funções: – Reduzir o tempo de acesso – Aumentar a disponibilidade – Também utilizado para proteção, filtragem, adaptação, etc. 25 Código Móvel a) client request results in the downloading of applet code Client Applet code Web server b) client interacts with the applet Client Applet Web server 26 Código Móvel ● ● Serviços oferecidos na forma de um código (programa) específico que deve ser descarregado do servidor – Aplicações clientes executam e interagem localmente com o código móvel recebido – Dependendo do serviço, código móvel pode interagir com um ou mais servidores em nome da aplicação cliente – Ex.: Java applets, Tcl scripts Principais benefícios: – Redução do tempo de resposta para aplicações interativas – Maior facilidade de customização e atualização da interface de acesso ao serviço – Possibilidade de estender dinamicamente as funcionalidades das aplicações clientes 27 Agentes móveis ● ● ● Programas (com código e dados) que se descola pela rede cumprindo tarefas – Coletando informações da rede (instalar softwares em uma rede ou comparar preços em um site) – Redução do custo de comunicação e tempo – Substitui chamadas remotas por locais Podem representar um problema de segurança para o ambiente em que estão ou para si mesmos Podem não ser muito eficientes por não ter acessos a recursos sendo melhor utilizar outros meios 28 Clientes leves e servidores de computação ● ● ● Aplicativos e S.O. armazenados localmente exigem conhecimento técnico que muitos usuários não possuem Clientes leves: onde os principais aplicativos são mantidos em servidores Processamento de programas, gerenciamento de arquivos, armazenamentos de dados são feitos remotamente 29 Clientes leves e servidores de computação Compute server Network computer or PC Thin Client network Application Process 30 Clientes leves e servidores de computação ● Camada de software com suporte para interação local com o usuário, e que executa aplicações e solicita serviços exclusivamente a partir de servidores remotos – ● ● Ex.: XWindows (Unix/Linux), WinFrame (WindowsNT), VNC A favor: – Baixo custo de hardware e software para os clientes – Maior facilidade de gerência e manutenção das aplicações Contra: – Alto custo de hardware e software para os servidores – Centralização da carga de trabalho e do tráfego de mensagens – Risco de sobrecarga dos servidores e/ou da rede – Baixo desempenho para aplicações altamente interativas 31 Dispositivos móveis e redes espontâneas Music service Alarm service gateway Internet Hotel wireless network Discovery service Camera TV/PC Laptop PDA Guests devices 32 Dispositivos móveis e redes espontâneas ● ● ● Formado por aplicações clientes que executam em dispositivos móveis (PDAs, laptops, celulares, etc) e acessam servidores da rede fixa através de uma infraestrutura de comunicação sem fio Principais benefícios: – Fácil conexão dos dispositivos a uma nova rede local. Inclusão de novos clientes sem a necessidade de configuração explícita – Fácil integração dos clientes aos serviços locais. Descoberta automática de novos serviços (sem intervenção do usuário) Desafios de projeto: – Identificação de recursos independente de sua localização física – Limitações de processamento, tempo de conexão e largura de banda – Privacidade e segurança 33