Arquitetura de sistemas distribuídos

Um sistema distribuído é aquele que as informações em fase de processamento são distribuídas para vários computadores, em vez de ficarem confinadas a uma única máquina [Sommervillle, 2003].

Nos sistemas distribuídos o software de sistema é executado em um grupo de processadores fracamente integrados, que cooperam entre si conectados por uma rede.

Características dos sistemas distribuídos [Coulouris et al, 1994]

  • Compartilhamento de recursos. Inclu recursos de hardware e software.
  • Abertura. Sistemas podem ser ampliados utilizando recursos não proprietários a eles.
  • Concorrência. Vários processos podem operar ao mesmo tempo em diferentes computadores na rede.
  • Escalabilidade. São escalonáveis que significa que a capacidade do sistema pode ser aumentada por acréscimo de novos recursos.
  • Tolerância a defeitos. Podem ser tolerants a algumas falhas de hardware e software.
  • Transparência. Usuário não precisa saber da natureza distrbuída do sistema.

Desvantagens dos sistemas distrbuídos [Coulouris et al, 1994]

  • Complexidade. São mais complexos do que os sistemas centralizados.
  • Proteção. É mais dificil gerenciar a porteção de um sistema distribuído.
  • Dificuldade de gerenciamento. Maior esforço para gerenciamento.
  • Imprevisibilidade. Podem ser  imprevísveis em suas respostas.

O desafio para os projetistas de sistemas distribuídos esta em projetar software e hardware para que eles forneçam as caracteristicas desejáveis dos sistemas distribuídos e ao mesmo tempo minimizem os problemas inerentes a esses sistemas. Questões relevantes de projetos de sistemas distribuídos são a identificação de recursos, comunicação, qualidade do serviço e a arquitetura do software.

Um sistema distribuído exige normalmente um software que gerencie as diversas partes e garanta que elas se comuniquem e troquem dados. Os sistemas distribuídos podem ser implementados com diferentes linguagens de programação, executados em processadores diferentes e podem utilizar diferentes protocolos de comunicação. O software de gerenciamento , conhecido por middleware, é uma espécie de intermediário dos diferentes componentes distribuídos do sisema.

 Existem dois tipos genéricos de arquitetura de sistemas distribuídos:

Arquitetura cliente-servidor.

Uma aplicação é modelada como um conjunto de serviços que são fornecidos por servidores e um conjunto de clientes que utilizam esses serviços. Clientes e servidores são processos lógicos diferentes conforme ilustra a figura abaixo.

Sem título

Não existe um mapeamento 1:1 entre os processos e os processadores do sistema. A figura abaixo ilustra a arquitetura físca de um sistema com seis computadores clientes e dois computadores servidores. Eles podem executar os procesos cliente e servidor mostrados anteriormente.

Sem título2

O projeto do sistema cliente-servidor deve refletir a estrutura lógica da aplicação que está sendo desenvolvida. Uma aplicação pode ser estruturada em duas ou três camadas, em geral.

Arquitetura de três camadas.

A camada de apresentação que se ocupa de apresentar informações aos usuários e todas as interações com eles. A camada de processamento de aplicações que se ocupa de implementar a lógica da aplicação e a camada de gerenciamento de banco de dados que se encarrega das operações de banco  de dados. Em sistemas centralizados essas operações não precisam ser nitidamente separadas.

Sem título3

Arquitetrua de duas camadas

A arquitetura cliente-servidor mais simples é chamada de arquitetura de duas camadas em que um aplicaçao é organizada como  um servidor e um conjunto de clientes. Podem utilizar um  modelo cliente-magro onde o cliente só responde pela camada de apresentação (pode apresentar problemas de esclabilidade e desempenho)  ou um modelo cliente-gordo (pode apresentar problermas de gerenciamento) onde o cliente implementa a lógica de aplicação e as interações com os usuários do sistema.

Sem título4

Na solução de duas camadas, três camadas lógicas devem ser mapeadas em dois sistemas de computadores. A linguagem java e a possibilidade de recorrer a applets por download permite desenvolver um modelo cliente-servidor intermediário entre os modelos magro e gordo.

Uma abordagem alternativa é utilizar uma arquitetura cliente-servidor de três camadas Nessa arquitetura , apresentação, processamento de aplicações e o gerenciamento  de dados são processos logicamente separados. Essa arquitetura é inerentemente mais escalável.

Sem título5

Arquitetura de objetos distribuídos.

Uma abordagem mais geral para sistemas distri9búidos é eliminar a distinção entre cliente e servidor e projetar a arquitetura de sistema como um arquitetura de objetos distribuídos. Os componentes do sistema são objetos que oferecem uma interface para um conjunto de serviços que eles fornecem. Outros objetos solicitam esses serviços sem fazer distinção lógica entre um cliente (quem recebe o serviço) e um servidor (quem provê o serviço).

Nesse caso pode-se pensar na camada de middleware como um barramento de software. Ela permite que objetos se comuniquem e sejam acrescentados aos sistemas Essa arquitetura permite adiar decisões sobre onde ou como os serviços devem ser fornecidos e também permite que novos recursos sejam acrescentados conforme necessário. .

 Referência :

Coulouris et all, 1994

Sommervile, Ian. Engenharia de Software, sexta edição, Tradução, Pearson, 2003.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>