Você está na página 1de 10

Sumário

1.1 Modelo de arquitectura de Sistemas ................................................................... 2


1.1.1 Modelo Cliente Servidor............................................................................. 2
1.1.2 Serviços Providenciados por Múltiplos Servidores .................................... 4
1.1.3 Servidores proxies e caches ........................................................................ 5
1.1.4 Modelo P2P (Peer to Peer) ........................................................................ 6
1.2 Variações do modelo Cliente Servidor ............................................................... 8
1.2.1 Código Móvel ............................................................................................. 8
1.2.2 Agentes Móveis .......................................................................................... 9
1.2.3 Computadores em rede ............................................................................. 10

Índice de Figuras
Fig. 6: Clientes invocam servidor individual...................................................................... 2
Fig. 7: Web crawler ............................................................................................................ 3
Fig. 8: Um serviço providenciado por múltiplos servidores............................................... 5
Fig. 9: Servidor proxy ......................................................................................................... 6
Fig. 10: Uma aplicação distribuída baseada em processos peer......................................... 8
Fig. 11: Applets Web........................................................................................................... 8

Página 1 de 10
1.1 Modelo de arquitectura de Sistemas

A divisão de responsabilidades entre componentes do sistema (aplicações, servidores e


outros processos) e a colocação desses componentes em computadores em rede é, talvez,
o aspecto mais evidente do desenho de sistemas distribuídos. Esta divisão de
responsabilidades tem maiores implicações para a desempenho, confiabilidade e
segurança do sistema. Neste ponto, mostram-se os principais modelos de arquitectura,
nos quais esta distribuição de responsabilidades é baseada.

Em sistemas distribuídos, processos com responsabilidades bem definidas interagem


entre eles, para realizar uma actividade. Os principais tipos de modelos de arquitectura
são mostrados da fig. 6 a fig. 9.

1.1.1 Modelo Cliente Servidor

Esta arquitectura é a frequentemente mais citada quando se aborda sistemas distribuídos.


É historicamente a mais importante e continua a mais largamente aplicada. A fig. 6 ilustra
uma simples arquitectura, na qual processos clientes interagem com os processos de
servidores independentes em máquinas separadas, de forma a aceder o canal partilhado
por eles.

Fig. 1: Clientes invocam servidor individual

Página 2 de 10
Em algum momento os servidores podem ser clientes de outros servidores, como ilustra a
fig. 6. Por exemplo, um servidor Web é frequentemente um cliente para um servidor local
de ficheiros, que faz a gestão das páginas Web em si armazenadas. Servidores Web e
muitos outros serviços de Internet são clientes dos serviços DNS (Domain Name System),
que traduz os nomes dos domínios da Internet para endereços de rede. Outro exemplo,
também relacionado com a Web, são os motores de busca que permitem aos usuários
pesquisar resumos de páginas Web em sites da Internet. Estes resumos são feitos, por
programas chamados Web crawler 1 (vide fig. 7), que correm por detrás do site do motor
de busca usando requisições http 2 para aceder servidores Web através da Internet.

Fig. 2: Web crawler

1
De acordo com Crovella, Lindemann e Reiser (2000), os sistemas de busca na Internet cresceram
consideravelmente nos últimos anos. Esses sistemas operam geralmente através de agentes. A maior parte
destes mecanismos de procura e indexação de informações são chamadas de Web crawlers.
2
Hyper Text Transfer Protocol

Página 3 de 10
Um motor de busca é ao mesmo tempo um servidor e um cliente: ele responde a
solicitações de navegadores cliente e ele executa Web crawlers que age como cliente para
outros servidores Web. Neste exemplo, as tarefas do servidor (respondendo as
requisições dos usuários) e as tarefas do crawler (fazendo requisições a outros servidores
Web são totalmente independentes); existe uma pequena necessidade de sincronizá-los e
eles podem correr de forma concorrente. De facto, um motor de busca típico incluiria
muitas threads de execução concorrentes, alguns servindo seus clientes e outros
executando Web crawlers .

1.1.2 Serviços Providenciados por Múltiplos Servidores

Serviços podem ser implementados como múltiplos processos de servidores em


computadores diferentes, interagindo quando necessário para providenciar serviços a
processos clientes (vide fig. 8). Os servidores podem particionar um conjunto de
objectos, nos quais os serviços estão baseados e distribuí-los pelos diferentes servidores,
ou eles podem manter cópias replicadas desses objectos em cada um dos servidores. Estas
duas opções estão ilustradas nos seguintes exemplos.

Página 4 de 10
Fig. 3: Um serviço providenciado por múltiplos servidores

Servidor

Cliente

Servidor

Cliente

Servidor

A Web providencia um exemplo comum de particionamento de dados, em que cada


servidor Web gere cada um dos seus recursos. Um usuário pode utilizar o browser para
aceder recursos de qualquer um dos servidores.

A replicação é usada para aumentar a desempenho, disponibilidade e minimizar a


tolerância a falhas. Por exemplo, o Web service providenciado no site é mapeado em
vários servidores que têm as bases de dados replicadas. Um outros exemplo de um
serviço baseado na replicação de dados é NIS (Network Information Service) da Sun, que
é usado pelos computadores uma LAN quando os usuários fazem o log on. Cada servidor
NIS possui uma réplica própria dos username’s e passwords encriptadas.

1.1.3 Servidores proxies e caches

Cache área de armazenamento temporário onde se guarda objectos recentemente usados


que estão mais perto que os próprios objectos. Quando um novo objecto é recebido num
computador é adicionado ao cache, sobrepondo alguns objectos se for necessário.
Quando objecto é requisitado por um processo cliente, os serviços cache verificam
primeiro o cache e providenciam o objecto a partir daí, se uma cópia recente desse
objecto estiver disponível. Caso contrário, uma cópia recente do objecto é solicitada.

Página 5 de 10
Caches podem ser colocados com cada cliente ou podem ser localizados num servidor
proxy que pode ser partilhado por diversos clientes.

Caches são usados extensivamente na prática. Navegadores Web mantém um cache de


página Web visitadas recentemente e outros recursos da Web no computador cliente,
usando uma requisição especial http para verificar se a página é recente no servidor cache
original, antes de mostrá-la ao cliente.

Servidores Web proxies (vide fig. 9) providencia um cache partilhado de recursos Web
para máquinas clientes num site ou para vários sites. O propósito de servidores proxies é
aumentar a disponibilidade e a desempenho do serviço diminuindo o tráfego na rede e
carga de processamento nos servidores Web. Servidores proxy podem assumir outras
funções, como por exemplo, serem usados para aceder remotamente um servidor Web
por meio de um firewall.

Fig. 4: Servidor proxy

1.1.4 Modelo P2P (Peer to Peer)

Nesta arquitectura, todos processos desempenham funções semelhantes, interagindo


cooperativamente para realizar uma actividade distribuída ou computação sem nenhuma
distinção entre clientes e servidores. Neste modelo, o código dos processos peer mantém
os recursos do nível aplicacional consistentes e os sincroniza, quando necessário. A fig. 8
mostra três computadores com a configuração deste modelo; Em geral n processos peer

Página 6 de 10
podem interagir uns com os outros e o padrão de comunicação depende dos requisitos da
aplicação.

Página 7 de 10
Fig. 5: Uma aplicação distribuída baseada em processos peer

Aplicação Aplicação
Código de Código de
coordenação coordenação

Aplicação
Código de
coordenação

A eliminação de processos servidores reduz atrasos de comunicação entre os processos


para aceder objectos locais.

1.2 Variações do modelo Cliente Servidor

Diversas variações neste modelo podem ser derivados da consideração dos seguintes
factores:
• O uso de código móvel em agentes móveis;
• Necessidades de usuário em uso de computadores de baixo custo com recursos de
hardware limitados que são simples de gerir.
• Os requisitos de adicionar e remover dispositivos móveis duma forma
conveniente.

1.2.1 Código Móvel

Applets são bem conhecidos e largamente usados como exemplo de código móvel é o
caso de o utilizador de um navegador Web seleccionar um link para Applet cujo código
esta num servidor Web; o código é descarregado para o navegador e é executado no
mesmo, como é mostrado na fig. 9. A vantagem de executar o código descarregado
localmente, é que pode boas respostas interactivas, pois não sofre atrasos nem
variabilidade da largura de banda associado com as comunicações.

Fig. 6: Applets Web


a) Requisição do cliente resulta no download do código Applet

Servidor
Cliente Web
Código Applet Página 8 de 10
b) Cliente interage com o Applet

Servidor
Cliente Applet Web

Acedendo serviços significa executar código que pode invocar outras operações. Alguns
serviços já estão estandardizados que podem ser acedidos com aplicações bem
conhecidas – a Web é o exemplo mais comum, mas mesmo na Web existem alguns sites
usam funcionalidades não encontradas em navegadores Web, que requerem código
adicional. O código adicional pode, por exemplo, comunicar com o servidor.
Considerando uma aplicação que requere que o usuários tenham informação actualizada à
medida que vão ocorrendo alterações no servidor. Isto não pode ser alcançado com uma
interacção normal com o servidor Web, que é sempre iniciada pelo cliente.

1.2.2 Agentes Móveis

Um agente móvel é um programa em execução (incluindo dados e código) que viajam de


um computador para outro numa rede. Um agente móvel pode invocar recursos locais em
cada site que visita – por exemplo aceder bases de dados individuais. Comparando esta
arquitectura com um cliente estático fazendo requisições remotas a alguns recursos,
possivelmente transferindo grandes quantidades de dados, existe uma redução de custos e
tempo na comunicação através da troca de requisições remotas em locais.

Agentes móveis (como código móvel) são potenciais ameaças para os recursos do
computador que acedem. O ambiente que recebe um agente móvel deve decidir, que
recursos locais são permitidos para o agente, baseados na identidade do usuário com
quem o agente está interagindo – a identidade deve ser incluído duma forma segura com
o código e os dados do agente móvel. Adicionalmente, agentes móveis podem eles
próprios ser vulneráveis – eles podem não completar a tarefa se forem recusados a aceder

Página 9 de 10
a informação que eles precisam. Por exemplo, Web crawlers que precisam aceder
recursos num servidor Web através da Internet que funcionam correctamente fazendo
requisições remotas a processos servidores. Por esta razão, a aplicação de agentes móveis
pode ser limitada.

1.2.3 Computadores em rede

Numa arquitectura stand-alone as aplicações correm em computadores locais. Nestes


casos, o sistema operativo e a aplicação requerem que o código e os dados sejam
colocados no disco local. Mas a manutenção dos dados e da aplicação local, requere um
esforço técnico adicional.

Os computadores em rede é a resposta para este problema. As aplicações são corridas


localmente, mas ficheiros ou dados são geridos por um servidor remoto de ficheiros.
Dado que todos dados da aplicação e o código estão guardados num servidor Web, os
usuários podem migrar de um computador de rede para outro. Nestes casos os
computadores da rede só precisam ter requisitos mínimos de hardware, podendo reduzir
os custos. Se tiver um disco, este pode ser usado como memória cache armazenando
cópias de software e dados recentemente descarregados do servidor. A manutenção da
memória cache não requere nenhum esforço manual: objectos cache são invalidados a
qualquer momento que uma nova versão do ficheiro é escrita no servidor.

Página 10 de 10

Você também pode gostar