Pós-Graduação em Computação Aplicada Michele Alves de Freitas Batista Prof. José Carlos Becceneri São José dos Campos, 2004 Por que construir sistemas distribuídos? Pessoas são distribuídas, informações são distribuídas Fatores que contribuíram para o aumento do DDP aumento do número de computadores pessoais baratos e poderosos aumento do número de usuários Onde processadores, dados e outros aspectos de um sistema de processamento de dados são importantes dentro de uma organização. Distributed Data Processing (DDP) Um sistema DDP envolve uma divisão de funções no sistema e pode envolver uma organização distribuída das bases de dados, do controle de dispositivo e da rede. Os computadores pessoais são usados para suportar uma variedade de aplicações, abrigando: base de dados gerenciador da base de dados sistemas operacionais DDP - Capacidades O desenvolvimento do sistema operacional distribuído deu-se pela evolução de suas capacidades: Arquitetura de comunicações Sistema operacional de rede Sistema operacional distribuído DDP - Capacidades Arquitetura de comunicações Software que suporta uma rede de computadores independentes. Fornece a sustentação para aplicações distribuídas, tais como correio eletrônico, transferência de arquivo e acesso ao terminal remoto. Cada computador tem seu próprio sistema operacional separado, e uma mistura heterogênea de computadores e de sistemas operacionais é possível, já que todas as máquinas suportam a mesma arquitetura de comunicações. DDP - Capacidades Sistema operacional de rede Esta é uma configuração em que há um aplicativo de rede, estações de trabalho e um ou mais servidores. Os servidores fornecem serviços em rede ou aplicativos, tais como o armazenamento de arquivo e o gerenciamento da impressora. Cada computador tem seu próprio sistema operacional privado. A função do sistema operacional da rede é permitir que as estações de trabalho interajam com o servidor. O usuário está ciente que há múltiplos computadores independentes e deve tratá-los explicitamente. Tipicamente, uma arquitetura comum de comunicações é usada para suportar estas aplicações da rede. DDP - Capacidades Sistema operacional distribuído É um sistema operacional comum compartilhado por uma rede dos computadores. Enxerga seus usuários como um sistema operacional centralizado, mas fornece ao usuário o acesso transparente aos recursos de um número de máquinas. Um sistema operacional distribuído pode confiar em uma arquitetura de comunicações para funções básicas de comunicação. Sistemas Cliente/Servidor Termos utilizados Applications Programming Interface (API) Aplicativos que permitem que os clientes e servidores se comuniquem. Cliente Um solicitante de informação da rede, geralmente um PC ou uma estação de trabalho, que possa perguntar a base de dados e/ou outra informação de um servidor. Middleware Um conjunto de drivers, APIs, ou outro software que melhora a conectividade entre uma aplicação do cliente e um servidor. Sistemas Cliente/Servidor Termos utilizados Base de dados relacional Uma base de dados em que o acesso de informação é limitado à seleção das fileiras que satisfazem a todos os critérios da busca Servidor Um computador, geralmente uma estação de trabalho potente, um minicomputador ou um mainframe, que abriga informação para manipulação dos clientes na rede. Structured Query Language (SQL) Uma linguagem desenvolvida pela IBM para criar, atualizar ou consultar bases de dados relacionais. Sistemas Cliente/Servidor Ambiente Genérico do Cliente/Servidor As máquinas do cliente são geralmente PCs ou estações de trabalho que fornecem uma relação user-friendly ao usuário. LAN ou WAN ou Internet Server Workstation (client) Como o termo sugere, um ambiente cliente/servidor está povoado por clientes e por servidores. A estação de trabalho apresenta geralmente o tipo de relação gráfica que é a mais confortável aos usuários, incluindo o uso de janelas e mouse. Sistemas Cliente/Servidor Cada servidor no ambiente cliente/servidor fornece um conjunto de serviços compartilhados aos clientes. Atualmente, o tipo mais comum de servidor é o servidor de base de dados, controlando geralmente uma base de dados relacional. O servidor permite: que muitos clientes compartilhem a mesma base de dados; que um sistema de alto desempenho controle a base de dados. Sistemas Cliente/Servidor Além dos clientes e dos usuários, o terceiro ingrediente essencial do ambiente cliente/servidor é a REDE. Sistemas cliente/servidor são sistemas distribuídos. Os usuários, as aplicações e os recursos são distribuídos em resposta às exigências do negócio e ligados por um único LAN ou WAN ou por redes de Internet. Sistemas Cliente/Servidor - Características Características que diferem uma configuração cliente/servidor de outras soluções de processamento distribuído: Há um esforço em trazer aplicações user-friendly ao usuário. Isto dá ao usuário o controle sobre o sincronismo e o estilo do uso de computador e dá aos gerenciadores a responsabilidade de suas necessidades locais. O usuário não possui a consciência de que está em um ambiente de rede. O usuário tem acesso a múltiplos servidores. Sistemas Cliente/Servidor - Características Embora as aplicações sejam dispersadas, há uma ênfase em centralizar as bases de dados e o gerenciamento da rede. Isto permite ao gerenciador manter o controle total em sistemas de computação e de fornecer a interoperabilidade de modo que os sistemas sejam amarrados junto. O networking é fundamental à operação. Assim, a gerência e a segurança de rede têm uma prioridade elevada em sistemas operacionais. Aplicações Cliente/Servidor A característica central de uma arquitetura cliente/servidor é o alocamento de tarefas entre clientes e servidores. No cliente e no servidor, o software básico é um sistema operacional rodando numa plataforma de hardware. A plataforma e o sistema operacional do cliente e do servidor podem diferir. Aplicações Cliente/Servidor Arquitetura Genérica do Cliente/Servidor Client Workstation Server Presentation services Application logic (client portion) Communications software Client operating system Hardware platform Request Response Protocol interaction Application logic (server portion) Communications software Server operating system Hardware platform Assim, se um cliente e um servidor compartilham os mesmos protocolos de comunicação e suporta as mesmas aplicações, estas diferenças lower-level são irrelevantes. Aplicações Cliente/Servidor É o software de comunicação que permite a interoperabilidade entre o cliente e o servidor. O principal deste software de sustentação (sistema operacionais e de comunicações) é fornecer uma base para aplicações distribuídas. Idealmente, as atividades executadas pela aplicação podem ser divididas entre o cliente e o servidor de uma maneira que otimize recursos da plataforma e da rede e que otimize a habilidade dos usuários de executar várias tarefas e usar recursos compartilhados. Aplicações Cliente/Servidor Um fator essencial no sucesso de um ambiente cliente/servidor é a maneira em que o usuário interage com o sistema como um todo. Na maioria de sistemas cliente/servidor, há uma ênfase em fornecer uma interface de usuário gráfica (GUI) que seja fácil de se usar, fácil de aprender, contudo poderoso e flexível. Assim, nós podemos pensar em um módulo de serviços da apresentação na estação de trabalho do cliente responsável por fornecer uma interface user-friendly às aplicações distribuídas disponíveis no ambiente. Aplicações Database Neste ambiente, o servidor é essencialmente um servidor da base de dados. A interação entre o cliente e o servidor está nas transações em que o cliente faz um pedido à base de dados e recebe uma resposta. Aplicações Database Arquitetura de Cliente/Servidor para Aplicações Database Client Workstation Presentation services Application logic Server Request Database logic Database logic Communications software Client operating system Hardware platform Response Protocol interaction Communications software DB management system Server operating system Hardware platform A ligação entre o cliente e o servidor é o software que permite ao cliente fazer pedidos para o acesso à base de dados do servidor. Um exemplo popular de tal lógica é o SQL. Classes de Aplicações Cliente-Servidor Em uma estrutura cliente/servidor, há implementações que dividem o trabalho entre o cliente e o servidor diferentemente. As principais opções para aplicações database são: Host-based processing Server-based processing Client-based processing Cooperative processing Classes de Aplicações Cliente-Servidor Host-based processing Refere-se ao ambiente de mainframe tradicional em que todo ou virtualmente todo o processamento é feito num host central. Freqüentemente, a interface do servidor é através de um terminal mudo. Mesmo se o usuário estiver usando um microcomputador, a estação do usuário é geralmente limitada ao papel de um terminal emulador. Presentation logic (a) Application logic Database logic DBMS Client Server Classes de Aplicações Cliente-Servidor Server-based processing O cliente é o principal responsável por fornecer uma interface gráfica ao usuário, enquanto virtualmente todo o processamento é feito no servidor. A estação de trabalho do usuário fornece uma interface userfriendly e as bases de dados e as aplicações podem fàcilmente ser mantidas em sistemas centrais. Embora o usuário ganhe a vantagem de uma interface melhor, este tipo de configuração não representa nenhum ganho significativo na produtividade. (b) Presentation logic Application logic Database logic DBMS Client Server Classes de Aplicações Cliente-Servidor Client-based processing No outro extremo, virtualmente todo o processamento da aplicação pode ser feito no cliente, com exceção das rotinas de validação de dados e de outras funções lógicas da base de dados que são executadas no servidor. Presentation logic Application logic (c) Application logic Database logic DBMS Client Server Classes de Aplicações Cliente-Servidor Cooperative processing O processamento da aplicação é executado de uma forma otimizada, extraindo vantagem do desempenho de máquinas do cliente e do servidor e da distribuição dos dados. Tal configuração é mais complexa, mas a longo prazo este tipo de configuração pode oferecer ganhos maiores da produtividade do usuário e uma eficiência maior da rede. Presentation logic (d) Application logic Database logic Database logic DBMS Client Server Classes de Aplicações Cliente-Servidor As figuras (c) e (d) correspondem às configurações em que uma fração considerável da carga está no cliente. É chamado de modelo cliente gordo. Traz como principal benefício a vantagem do processamento de aplicação offloading nos servidores, aumentando a eficiência e diminuindo prováveis engarrafamentos. Porém o aumento de funções sobrecarrega rapidamente a capacidade da máquina. Classes de Aplicações Cliente-Servidor A figura (b) representa um cliente magro. Refere-se a camada de software que suporta uma interface para o usuário baseado em janelas no cliente enquanto a execução da aplicação é feita em um servidor. Arquitetura Cliente-Servidor Three-Tier A arquitetura cliente/servidor tradicional envolve duas camadas, ou tiers: uma camada do cliente e uma do servidor. A arquitetura de três-camadas vem se tornando cada vez mais comum. Nesta arquitetura, o software de aplicação é distribuído entre três tipos de máquinas:uma máquina do usuário, um servidor middle-tier, e um servidor backend. A máquina do usuário é o cliente e, no modelo three-tier, temos um cliente magro. As máquinas middle-tier são essencialmente passagens entre os clientes magros do usuário e uma variedade de servidores backend da base de dados. As máquinas middle-tier podem converter protocolos e mapear um tipo de pergunta da base de dados a outro. Consistência do Arquivo Cache Quando um arquivo do servidor é usado, o desempenho do arquivo I/O pode ser degradado no acesso local do arquivo devido o atraso imposto pela rede. Para reduzir esta penalidade do desempenho, os sistemas individuais podem usar arquivos cache para acessar registros recentemente acessados. Por causa do princípio de localidade, o uso de um arquivo cache local deve reduzir o número de acessos remotos do servidor que devem ser feitos. Consistência do Arquivo Cache Quando os caches contêm cópias exatas de dados remotos, nós dizemos que os caches são consistentes. Os cachês tornam-se inconsistentes quando os dados remotos são mudados e as cópias locais antigas não estão rejeitadas. Problema da consistência do cache: Manter cópias locais dos caches de dados remotos. Para evitar este problema, deve-se usar técnicas para impedir o acesso simultâneo a um arquivo por mais de um cliente. Isto garante a consistência à custa do desempenho e flexibilidade. Middleware É uma camada adicional de software usada não só para ocultar a heterogeneidade da coleção de plataformas, mas também para melhorar a distribuição de transparência. Ela é colocada entre as aplicações e o sistema operacional de rede, oferecendo um alto nível de abstração. Assim, tais aplicações não fazem uso direto da interface de programação. Arquitetura Middleware A finalidade básica do middleware é permitir que uma aplicação ou um usuário em um cliente acesse uma variedade dos serviços no servidor sem que haja preocupação sobre diferenças entre usuários. Client Workstation Presentation services Application logic Middleware interaction Middleware Middleware Communications software Client operating system Hardware platform Server Protocol interaction Communications software Aplications services Server operating system Hardware platform Bibliografia Livros Stallings, William. Operating Systems – Internals and Design Principles. Prentice Hall, 2001. Distributed Systems. Edited by Sape Mullender. Sites http://www.cs.montana.edu/courses/current/418/cs418-15.pdf http://discolab.rutgers.edu/users/muralir/cs519-fall98/ http://www.din.uem.br/~cfmoro/download/coulouris_cap2.PDF http://wwwhome.cs.utwente.nl/~pires/publications/sbrc2001-p1.pdf http://www.dc.ufscar.br/~paulovic/MidSDs.pdf