Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Desenvolvimento em sistemas distribuídos Fábio Gomes Coqueiro 1 Sistemas Distribuídos (TANENBAUM) Consiste em uma coleção de computadores independentes que se apresentam ao usuário como um sistema único transparente. Sistemas Distribuídos (COULOURIS) É um sistema onde os componentes de hardware e software estão localizados em computadores interligados em uma rede, comunicam e coordenam suas ações somente através da troca de mensagens. Para que? A maior motivação para o desenvolvimento de sistemas distribuídos é o desejo de compartilhar recursos. Redução no tempo de carga e de execução nas plataformas Cliente; Independência de Localização física; Alta Disponibilidade da Aplicação; Possibilidade de Heterogeneidade de Ambientes; Maior poder de Escalabilidade; Quando distribuir? Às vezes o problema é distribuído; Soluções distribuídas podem trazer benefícios inerentes à distribuição; Soluções distribuídas são mais adaptáveis. Sistemas Centralizados x Sistemas Distribuídos Acesso local Homogeneidade Facilidade de gerência Maior consistência Segurança contra intrusos Acesso remoto Heterogeneidade Modularidade Escalabilidade Compartilhamento de recursos Mais sujeito a ataques Modelos de computação distribuída Cliente/Servidor Peer-to-peer Objetos distribuídos Exemplos Os exemplos mais familiares são aqueles baseados em redes de computadores: Internet Intranets Sistemas móveis e ubíquo Exemplos Internet Um dos maiores exemplos (se não o maior) Compartilhamento de recursos e serviços de forma transparente: WWW E-mail Transferência de Arquivos Serviços multimídia Provedores de Serviços de Internet Exemplos Internet intranet ISP desktop computer: backbone satellite link server: % network link: % % % Exemplos Intranets Parte da Internet administrada separadamente por uma organização. Possuem recursos e serviços específicos e gerais: Correio eletrônico Serviços de informação. Recursos de Hardware Comunicam-se normalmente com a Internet por um roteador e fazem uso de firewall para proteção. Exemplos Intranets Exemplos Sistemas móveis e ubíquos Avanços tecnológicos na miniaturização dos dispositivos e na rede sem fio têm trazido mais interligações de equipamentos: Telefones celulares, smartphones e tablets Dispositivos acoplados ao corpo (Wearable Computing) Redes de Sensores Dispositivos incorporados em aparelhos e objetos Interfaces I/O com usuários Futuramente: robôs Exemplos Sistemas móveis e ubíquos A ideia basicamente é um grande sistema distribuído presente em ambientes físicos e dando suporte (com recursos e serviços) para os usuários (aplicações e usuários), mas com comportamento computacional transparente e onipresente: qualquer momento, qualquer lugar. Exemplos Sistemas móveis e ubíquos Tipos de Sistemas Distribuídos Segundo Tanembaum os sistemas distribuídos podem ser classificados como: Sistemas de computação distribuídos Sistemas de informação distribuídos Sistemas distribuídos pervasivos Tipos de Sistemas Distribuídos Sistemas de computação distribuídos São utilizados para realizar tarefas de computação de alto desempenho. Divide-se em dois grupos Gerais: Sistemas de Computação de Cluster Usados para programação paralela na qual um único programa é executado em várias máquinas Sistemas de Computação em Grade Recursos de diferentes organizações são reunidos para colaboração de um grupo de pessoa A colaboração é realizada como uma Organização Virtual. Tipos de Sistemas Distribuídos Sistemas de informação distribuídos Sistemas voltados para integrar um conjunto de aplicações a um sistema de informações de âmbito empresarial. Recurso principal: informação. Grupos existentes: Sistemas de processamento de transações: Aplicações de banco de dados Integração de Aplicações Empresariais Aplicações existentes nas empresas (ex. de diferentes setores) precisam realizar troca de informações. Tipos de Sistemas Distribuídos Sistemas distribuídos pervasivos A criação de um ambiente “pervasivo” envolve a adoção de protocolos comuns de comunicação entre dispositivos e um espírito de cooperação entre as aplicações/dispositivos, de forma que um usuário imerso deve ter a sua disposição o maior número possível de serviços sem despender grandes esforços para utiliza-los. Tipos de Sistemas Distribuídos Sistemas distribuídos pervasivos (grupos): Sistemas domésticos Tipos de Sistemas Distribuídos Sistemas distribuídos pervasivos (grupos): Redes de Sensores: Nó sensor Gateway Tipos de Sistemas Distribuídos Sistemas distribuídos pervasivos (grupos): Sistemas para tratamento de saúde: Características de um sistema distribuído Compartilhamento de recursos Concorrência Inexistência de um relógio global Falhas independentes Comunicação e organização interna dos computadores ocorrem de forma oculta aos usuários. Desafios Heterogeneidade; Sistemas Abertos; Segurança; Escalabilidade; Tratamento de falhas; Concorrência; Transparência. Heterogeneidade Eles devem ser construídos a partir de uma variedade de redes, sistemas operacionais, hardware e linguagens de programação diferentes. Sistemas abertos Devem ser extensíveis, o primeiro passo é publicar as interfaces dos componentes, mas a integração de componentes escritos por diferentes programadores é um grande desafio. Segurança A criptografia pode ser usada para proporcionar proteção adequada para os recursos compartilhados e para manter informações sigilosas em segredo, quando são transmitidas por uma rede. Escalabilidade Um sistema distribuído permanece eficiente quando há um aumento significativo no número de recursos e no número de usuários. Tratamento de falhas As falhas são parciais, isto é, alguns componentes falham, enquanto outros continuam funcionando. Concorrência A presença de múltiplos usuários é uma fonte de pedidos concorrentes para seus recursos. Transparência O objetivo é tornar certos aspectos da distribuição invisíveis para o programador de aplicativos. Transparência Tipos de transparências: Modelo Cliente/Servidor O modelo mais utilizado para aplicações distribuídas em redes de computadores é chamado cliente/servidor. A comunicação costuma se dar através de uma mensagem de solicitação do cliente enviada ao servidor, pedindo que alguma tarefa seja executada. O mecanismo mais utilizado atualmente para esse modelo, que possibilita a comunicação entre aplicações, é chamado de socket. Estabelecer conexões entre máquinas Enviar e receber dados Encerrar conexões Esperar por conexões em determinada porta Modelo Cliente/Servidor Um marco importante no desenvolvimento de sistemas distribuídos foi a extensão da programação estruturada para ambientes distribuídos pelo modelo cliente/servidor. Os elementos assumem papel de clientes (requisitantes do serviço) ou servidores (provedores do serviço) Modelo Cliente/Servidor Os clientes invocam serviços por meio de um mecanismo de interação denominado Chamada de Procedimento Remoto (RPC: Remote Procedure Call). Modelo Cliente/Servidor Este mecanismo permite que um elemento invoque procedimentos definidos fora do seu espaço de endereçamento, passando parâmetros e recebendo resultados, de forma similar à chamada de procedimentos locais. Modelo Cliente/Servidor Programação orientada a objetos Da mesma forma que o paradigma da programação estruturada foi estendido para ambientes distribuídos, o mesmo fato ocorreu com o paradigma de programação orientada a objetos. Programação orientada a objetos Os objetos passam a se localizar em diferentes espaços de endereçamento (objetos distribuídos) e são capazes de conduzir computações em paralelo e de forma autônoma (objetos são ativos). Computação de objetos distribuídos A necessidade do mercado para suporte a objetos distribuídos foi suprida pelas tecnologias de middleware, desenvolvida para o novo paradigma de computação de objetos distribuídos. O middleware é a camada de software que fornece o suporte às interações entre as diferentes partes das aplicações distribuídas, utilizando uma infra-estrutura de computação e comunicação. CORBA Java/RMI DCOM Computação de objetos distribuídos As plataformas de middleware se interpõem entre as aplicações e o sistema operacional do processador, fornecendo uma interface de programação uniforme para os desenvolvedores de aplicações. Computação de objetos distribuídos Para suporte de computadores e redes heterogêneos, e para oferecer uma visão de sistema única, os sistemas distribuídos são organizados por meio de uma camada de software: Características de um sistema distribuído Exemplo Características de um sistema distribuído Sob o ponto de vista do desenvolvedor de aplicações, estas plataformas permitem às aplicações interagirem de forma totalmente transparente, sem qualquer conhecimento da infra-estrutura de comunicação entre os diversos objetos da aplicação distribuída. Computação de objetos distribuídos A infra-estrutura de suporte fornecida, tanto para o lado cliente quanto para o lado servidor da interação, permite a transparência de distribuição de forma que clientes possam utilizar os serviços disponibilizados por objetos sem se preocupar com aspectos de localização e implementação destes objetos. Computação de objetos distribuídos Contexto orientado a componentes O uso das plataformas de middleware tradicionais no desenvolvimento de aplicações, é uma atividade muito complexa, resultando em um baixo potencial para reutilização e portabilidade. Com o objetivo de minimizar deficiências e atender aos requisitos impostos pelas novas aplicações surgiu um novo paradigma de computação distribuída: a computação de componentes distribuídos. Reuso Evolução Especialização (customização) de componentes Geração automática de códigos Contexto orientado a componentes As tecnologias tradicionais de middleware evoluíram incorporando o suporte a componentes e mudando de um contexto orientado a objetos para um contexto orientado a componentes. Contexto orientado a componentes Essa evolução natural de contexto permite que os requisitos impostos pelas novas aplicações (emergentes) possam ser atendidos. Contexto orientado a componentes Bibliografia Colouris, G.; Dollimore, J.; Kindberg, T.. Sistemas Distribuídos: Conceitos e Projeto. 4. ed. Porto Alegre: Bookman, 2007. Tanenbaum, A.; Steen, M. Sistemas Distribuídos: Princípios e Paradigmas. 2. ed. São Paulo: Pearson Prentice Hall, 2007. Aplicações, serviços Middleware Sistema Operacional Hardware de Computador e Rede Apl. A Camada do Sistema Distribuído (Middleware) SO local 1 HW Local 1 Apl. B SO local 2 HW Local 2 SO local 3 HW Local 3 Rede
Compartilhar