Você está na página 1de 19

TÓPICO 2 | ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

3.1 MODELO CLIENT-SERVER


Segundo Fernandes (1999, p. 38), “o modelo cliente-servidor é uma resposta
estratégica da tecnologia às novas exigências do mercado: maior flexibilidade,
maior agilidade e maior competitividade no tratamento das informações da
empresa, por possibilitar a criação de um ambiente “online” robusto e de alto
desempenho, sendo considerada uma tecnologia emergente e que vem ganhando
adeptos rapidamente.”

Surgiu como um aprimoramento do processamento distribuído baseado


simplesmente na utilização de redes de PCs e no processo de Downsizing, que
apresentava algumas desvantagens em relação à arquitetura centralizada do
Mainframe, caracterizada principalmente pela maior dificuldade de administração dos
dados, resultando em redundâncias e inconsistências das informações da empresa.

E
IMPORTANT

Downsizing (em português: achatamento) é uma das técnicas da Administração


contemporânea, que tem por objetivo a eliminação da burocracia corporativa desnecessária,
pois ela é focada no centro da pirâmide hierárquica, isto é, na área de recursos humanos
(RH). Trata-se de um projeto de racionalização planejado em todas as suas etapas, que deve
estar consistente com o Planejamento estratégico do negócio e cuja meta global é construir
uma organização o mais eficiente e capaz possível, privilegiando práticas que mantenham a
organização mais enxuta possível. A curto prazo envolve demissões, achatamento da estrutura
organizacional, reestruturação, redução de custos, e racionalização. A longo prazo revitaliza a
empresa com a expansão de seu mercado, desenvolve melhores produtos e serviços, melhora
a moral dos funcionários, moderniza a empresa e principalmente, a mantém enxuta, de forma
que a burocracia não venha a se instalar novamente, uma vez amenizadas as pressões. FONTE:
WIKIPÉDIA. Disponível em: <http://pt.wikipedia.org/wiki/Downsizing>. Acesso em: 13 jul. 2012.

Possibilita uma maior produtividade, característica do ambiente de redes


de microcomputadores, e um maior controle, característica esta oriunda do
ambiente Mainframe e da computação centralizada. Talvez sua maior vantagem
seja a preservação dos investimentos já realizados em equipamentos e sistemas,
pois os recursos existentes não precisam necessariamente ser descartados, mas
redistribuídos segundo o enfoque do modelo cliente-servidor:

• Componentes consumidores de recursos (clientes).


• Componentes fornecedores de recursos (servidores).
• Componentes pares, tanto consumidores quanto fornecedores (peer-to-peer).

123
UNIDADE 3 |SISTEMAS DISTRIBUÍDOS

NOTA

Componentes pares (peer-to-peer) são processos que colaboram e se comunicam


de maneira simétrica para realizar uma tarefa, sem distinção entre processos clientes e
servidores, nem entre os computadores em que são executados.

Neste modelo, que possibilita grande flexibilidade, podem ser integrados


desde o menor PC de uma corporação até o maior Mainframe, permitindo constantes
realocações e crescimento incremental, de acordo com a evolução dos negócios da
corporação. Um computador inicialmente alocado como servidor pode ser substituído
por outro maior, passando a exercer funções de cliente em outra aplicação.

De acordo com Fernandes (1999, p. 38-39), “o hardware de uma arquitetura


cliente-servidor é composto de computadores que se utilizam de serviços e dados
e de outros computadores que administram e disponibilizam esses serviços e
dados”. Todos os computadores, usuários ou fornecedores desses recursos são
interconectados por meio de uma rede, local ou remota, não importando a tipologia
de construção da rede ou o protocolo utilizado na comunicação.

O software de uma arquitetura Cliente/Servidor é aquele que garante que


toda aplicação pode utilizar os recursos disponibilizados na rede, estabelecendo
uma forma bem definida de comunicação entre a aplicação que fornece recursos à
rede (aplicação servidora) e a aplicação que os consome (aplicação cliente).

Esta é, sem dúvida, a arquitetura mais citada quando se discutem sistemas


distribuídos, sendo historicamente a mais importante e amplamente empregada
atualmente. A figura a seguir mostra a disposição de processos (elipses) nos
computadores (caixas cinza), ilustrando a estrutura simples na qual os processos
clientes interagem com processos servidores, localizados em distintos computadores
hospedeiros, para acessar os recursos compartilhados que estes gerenciam. Os
termos “invoca” e “resultado” são usados para rotular as mensagens, que poderiam
ser rotuladas também como pedido e resposta, ou ainda remessa e retorno.

FIGURA 48 – CLIENTES REALIZANDO PEDIDOS A SERVIDORES

FONTE: Adaptado de: COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T. Distributed


Systems: concepts and design. 3. ed. England: Addison Wesley, 2001, p. 34.

124
TÓPICO 2 | ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

Os servidores podem ser clientes de outros servidores, conforme indicado


na figura acima. Um exemplo disso é um servidor internet, que é com frequência
um cliente de um servidor de arquivos local que gerencia os arquivos nos quais
as páginas web estão armazenadas. Por sua vez, os servidores internet e a maioria
dos outros serviços internet são clientes do serviço DNS, que faz o mapeamento
entre nomes de domínio internet e endereços IP de rede. Outro exemplo, também
relacionado à internet, são os mecanismos de busca, “que permitem usuários
efetuar pesquisas de informações disponíveis em páginas web em sites de toda a
internet. Tais resumos são efetuados por programas web crawler, também chamados
spiders, executados em segundo plano em sites de mecanismos de busca e usando
requisições HTTP para acessar servidores web em toda a internet”. (COULOURIS;
DOLLIMORE; KINDBERG, 2007, p. 43).

E
IMPORTANT

Conforme a Cyclades Brasil (2001, p. 22), “os equipamentos na internet são


normalmente referenciados por um nome simbólico, que está associado ao seu endereço IP.
Esta associação é feita por um conjunto de servidores, de forma que o conjunto formado por
esses servidores e sua interface com as aplicações da internet é conhecido como Domain
Name System (DNS), sendo estruturado em dois pontos básicos: a organização da internet em
domínios, e a distribuição dos servidores DNS na internet.”

No exemplo da figura acima, as tarefas do servidor – responder a


consultas de usuários – e às tarefas da web crawler – fazer pedidos para outros
servidores internet – são totalmente independentes, possuindo pouca necessidade
de sincronismo, e podendo ser executadas de maneira concomitante. De fato,
um mecanismo típico de busca normalmente é efetuado por muitas threads
concorrentes, algumas servindo seus clientes e outras executando web crawlers.
Portanto, um mecanismo de busca é tanto um servidor quanto um cliente, pois
responde a requisições de clientes e executa web crawlers que atuam como clientes
de outros servidores internet.

NOTA

Segundo a Wikipédia (2012), “uma thread é uma forma de um processo dividir


a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. O
suporte à thread é fornecido pelo próprio sistema operacional, ou implementada através de
uma biblioteca de uma determinada linguagem de programação. Permite que o usuário de
um programa utilize uma funcionalidade do ambiente enquanto outras linhas de execução
realizam outros cálculos e operações.” Disponível em:<http://pt.wikipedia.org/wiki/Thread_
(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)>. Acesso em: 13 out. 2012.

125
UNIDADE 3 |SISTEMAS DISTRIBUÍDOS

3.2 SERVIÇOS ATENDIDOS POR MÚLTIPLOS SERVIDORES

FIGURA 49 – UM SERVIÇO FORNECIDO POR VÁRIOS SERVIDORES

FONTE: Adaptado de: COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T.


Distributed systems: concepts and design. 3. ed. England: Addison Wesley,
2001, p. 35.

De acordo com Coulouris, Dollimore e Kindberg (2007, p. 44-45), “os


serviços podem ser implementados como vários processos servidores em diferentes
computadores hospedeiros, interagindo conforme for necessário para fornecer um
serviço para os processos clientes” (vide figura anterior). Os servidores podem
particionar o conjunto de objetos nos quais o serviço é baseado e distribuí-los entre
eles mesmos ou podem, ainda, manter cópias duplicadas deles em vários outros
hospedeiros. Essas duas opções são ilustradas pelos exemplos a seguir.

“A web oferece um exemplo comum de particionamento de dados no qual


cada servidor web gerencia seu próprio conjunto de recursos. Um usuário pode
usar um navegador para acessar um recurso em qualquer um desses servidores”.
(COULOURIS; DOLLIMORE; KINDBERG, 2007, p. 45).

Um exemplo de serviço baseado em dados replicados, de acordo com


Coulouris, Dollimore e Kindberg (2007, p. 45), “é o NIS (Network Information
Service) da Sun, usado por computadores em uma rede local quando os usuários
se conectam. Cada servidor NIS tem sua própria cópia (réplica) de um arquivo de
senhas que contêm uma lista de nomes de login dos usuários e suas respectivas
senhas criptografadas”. Segundo Coulouris, Dollimore e Kindberg (2007, p. 45-46),

126
TÓPICO 2 | ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

(...) um tipo de arquitetura onde ocorre uma interação maior entre vários
servidores, e por isso, denominada de arquitetura fortemente acoplada,
é o baseado em cluster. Essa arquitetura é comumente empregada por
serviços web que necessitam oferecer um grande grau de escalabilidade,
como os mecanismos de busca e as lojas online. Um cluster é construído
a partir de várias, às vezes centenas, de unidades de processamento.

Nessa arquitetura, a execução de um serviço pode ser particionada ou


duplicada entre as unidades de processamento.

De acordo com Dantas (2005, p. 265), “clusters são configurações que podem
ser entendidas como uma agregação de computadores de uma forma dedicada (ou
não) para a execução de aplicações específicas de uma organização”.

NOTA

De acordo com nota de redação técnica de Coulouris, Dollimore e Kindberg


(2007, p. 45), “é comum encontrarmos os termos agregados, ou agrupamentos, como tradução
da palavra cluster. Na realidade, existem dois tipos de clusters. Os denominados de fortemente
acoplados são compostos por vários processadores e atuam como multiprocessadores.
Normalmente são empregados para atingir alta disponibilidade e balanceamento de carga. Os
fracamente acoplados são formados por um conjunto de computadores interligados em rede
e são comumente utilizados para processamento paralelo e de alto desempenho.”

3.3 SERVIDOR PROXY E CACHE


“O cache tem por objetivo realizar o armazenamento de objetos de dados
utilizados recentemente em um local mais próximo do que a original localização
de tais objetos. Quando um novo objeto é recebido em um computador, ele é
adicionado ao cache, substituindo, caso necessário, alguns objetos já existentes”.
(GROSS, 2008, p. 49).

De acordo com Gross (2008, p. 49), “quando um processo cliente requisita


um objeto, o serviço de cache primeiramente verifica se possui uma cópia atualizada
desse objeto armazenada. Caso possua, ele é entregue ao processo cliente. Se o
objeto não estiver armazenado, ou se a cópia armazenada não estiver atualizada,
ele é acessado diretamente na sua origem”.

A figura a seguir mostra como um servidor proxy web fornece um cache


compartilhado de recursos web para máquinas clientes de um ou vários sites. O
objetivo dos servidores proxy é o aumento da disponibilidade e do desempenho
do serviço, reduzindo a carga sobre a rede remota e sobre os servidores internet.

127
UNIDADE 3 |SISTEMAS DISTRIBUÍDOS

FIGURA 50 – SERVIDOR PROXY WEB

FONTE: Adaptado de: COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T. Distributed systems:
concepts and design. 3. ed. England: Addison Wesley, 2001, p. 36.

Conforme Coulouris, Dollimore e Kindberg (2007, p. 46), “a utilização


de caches na prática é bastante comum. Por exemplo, os navegadores de internet
mantêm no sistema de arquivos local um cache das páginas recentemente visitadas
e, antes de exibi-las, com o auxílio de uma requisição HTTP especial, verifica nos
servidores originais se as páginas armazenadas no cache estão atualizadas”.

NOTA

“O cache pode ser mantido nos próprios clientes, ou localizados em um servidor


proxy que possa ser compartilhado por eles”. (GROSS, 2008, p. 49).

Os servidores proxy podem também assumir outras funções, tais como


serem usados para acesso de servidores internet através de um firewall. Embora
a função de um firewall seja a de controlar ou até mesmo isolar o tráfego entre
duas redes quaisquer, a motivação principal para a sua popularização foi a de
“proteger” redes corporativas ligadas à internet de ataques de usuários mal
intencionados (hackers, crackers etc.). A utilização de firewall em se tratando de
conexões à internet se aplicam sempre, independente do objetivo dessa conexão,
especialmente quando existe informação vital a ser protegida, como é o caso de
intranets (extranets) e provedores de informações. O nível de segurança desejado
é o que vai determinar como será a implementação desse firewall (GROSS, 2008)

128
TÓPICO 2 | ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

DICAS

Um excelente filme para conhecer mais sobre hacke-


rs e crackers é o filme “Hackers: criminosos e anjos”.
Enquanto as ciências da computação buscam abranger cada vez
mais todas as áreas e atividades do nosso cotidiano, governos,
empresas e o público em geral tornam-se vítimas do terroris-
mo cibernético, da espionagem industrial e múltiplas formas de
fraude. Este documentário investiga o mundo do crime ciberné-
tico: as vítimas, os invasores, seus métodos e suas motivações.
Vamos nos aprofundar nesse mundo sombrio, enquanto os or-
ganismos da lei contam com a ajuda de ex-hackers para tentar
proteger cidadãos e instituições do que se pode prever como
um verdadeiro caos eletrônico.
HACKERS: CRIMINOSOS E ANJOS. Direção de Mike Smith. EUA:
Discovery Channel / September Films, 2002, DVD (50 min), color.

3.4 PROCESSOS PARES


Conforme Coulouris, Dollimore e Kindberg (2007, p. 44), nesta arquitetura,
também conhecida como peer-to-peer, “todos os processos envolvidos em uma tare-
fa ou atividade desempenham funções semelhantes, interagindo cooperativamente
como pares (peers), sem distinção entre processos clientes e processos servidores, nem
entre os computadores em que são executados”.

Embora o modelo cliente-servidor ofereça uma estratégia direta e relati-


vamente simples para o compartilhamento de dados e outros recursos, ele não é
flexível em termos de escalabilidade. “A centralização do fornecimento e gerenci-
amento de serviços, acarretada pela colocação de um serviço em um único com-
putador, não favorece um aumento de escala, além daquela limitada pela capaci-
dade do computador que contém o serviço e da largura de banda de suas conexões
de rede”. (GROSS, 2008, p. 51).

No subtópico 4 serão descritas algumas variações do modelo de arquitetu-


ra cliente-servidor que evoluíram como uma resposta a este problema, contudo
nenhuma trata do problema fundamental – a necessidade de se distribuir recursos
compartilhados de maneira mais ampla para se dividir cargas de computação e co-
municação entre um número muito grande de computadores e conexões de rede.

A capacidade do hardware e a funcionalidade do sistema operacional dos


computadores desktop atuais, segundo Coulouris, Dollimore e Kindberg (2007, p.
44), “ultrapassam aquelas dos servidores antigos, e ainda, a maioria desses com-
putadores está equipada com conexões de rede de banda larga e sempre ativas”.

129
UNIDADE 3 |SISTEMAS DISTRIBUÍDOS

O objetivo da arquitetura peer-to-peer é explorar os recursos (tanto dados


como hardware) de um grande número de computadores para o cumprimento de
uma determinada tarefa ou atividade. Tem-se construído, com sucesso, “aplicativos
e sistemas peer-to-peer que permitem a dezenas, ou até mesmo a centenas de mil-
hares de computadores fornecerem acesso a dados e a outros recursos que eles ar-
mazenam e gerenciam coletivamente”. (COULOURIS; DOLLIMORE; KINDBERG,
2007, p. 44).

De acordo com Coulouris, Dollimore e Kindberg (2007, p. 44), “o exemplo


mais antigo e conhecido desse tipo de arquitetura é o aplicativo Napster, empre-
gado para o compartilhamento de arquivos de música digital”. Embora tenha se
tornado famoso por outro motivo que não sua arquitetura, sua demonstração de
exequibilidade resultou no desenvolvimento desse modelo de arquitetura em dif-
erentes e importantes diferentes direções.

E
IMPORTANT

De acordo com Gross (2008, p. 52), ”o Napster foi o primeiro programa de


compartilhamento massivo de arquivos através de tecnologia ponto a ponto (peer-to-peer).
Criado por Shawn Fanning, o programa compartilhava somente arquivos de música no formato
MP3. O Napster permitia que os usuários baixassem arquivos diretamente nos computadores
de outros usuários. Criou assim, uma imensa comunidade global com milhares de músicas
disponíveis, onde um usuário baixava do outro e disponibilizava suas músicas para toda a rede.”

A figura a seguir ilustra processos executando regras similares em


computadores distintos, interagindo como pares, sem distinção entre clientes
e servidores, com o código mantendo a consistência dos recursos em nível de
aplicação e sincronizando ações, quando necessário. Em geral, um número
n de processos pares pode interagir uns com os outros, sendo que o padrão de
comunicação irá depender dos requisitos da aplicação.

FIGURA 51 – UMA APLICAÇÃO DISTRIBUÍDA BASEADA EM PROCESSOS


PARES

FONTE: Adaptado de COULOURIS, G.; DOLLIMORE, J.; KINDBERG,


T. Distributed systems: concepts and design. 3. ed. England: Addison
Wesley, 2001, p. 37.

130
TÓPICO 2 | ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

4 VARIAÇÕES DO MODELO CLIENTE-SERVIDOR


De acordo com Gross (2008, p. 52), algumas variações dos modelos
anteriores podem ser extraídas considerando-se os seguintes fatores:

• O uso de código móvel e de agentes móveis.


• A necessidade de usuários possuírem computadores de baixo custo, com
recursos de hardware limitados e fáceis de gerenciar.
• O requisito de adição e remoção de dispositivos móveis de maneira conveniente.

4.1 CÓDIGO MÓVEL


Segundo Coulouris, Dollimore e Kindberg (2007, p. 29), o termo código
móvel, ou ainda migração de código, é usado para se referir ao código que pode ser
enviado de um computador para outro e ser executado no destino. Applets Java
são exemplos bem conhecidos e muito utilizados de código móvel, onde o usuário,
executando um navegador, seleciona um link que aponta para um applet, cujo
código é armazenado em um servidor internet; o código é carregado no navegador
e, como se vê na figura a seguir, posteriormente executado.

FIGURA 52 – APPLETS WEB


a) Requisição do cliente resulta no dowload do código de um applet

b) O cliente interage com o applet

FONTE: Adaptado de COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T. Distributed systems:


oncepts and design. 3. ed. England: Addison Wesley, 2001, p. 37.

131
UNIDADE 3 |SISTEMAS DISTRIBUÍDOS

E
IMPORTANT

Conforme a Wikipédia (2012), um applet é um software aplicativo que é executado


no contexto de outro programa, geralmente possuindo algum tipo de interface com o usuário,
ou fazem parte de uma parte destas dentro de uma página web, tendo a capacidade de
interagir com e/ou influenciar seu programa hospedeiro. Diferente de um programa comum,
um applet não pode rodar sozinho, devendo rodar em um container, um programa hospedeiro,
através de um plugin ou uma variedade de outros aplicativos, incluindo aparelhos móveis que
suportam o modelo de programação de applet. Outro exemplo de applet são os vídeos em
Flash ou os applets de players de vídeo (como o Windows Media Player) que executam dentro
de navegadores de internet que suportam os plugins. Disponível em: <http://pt.wikipedia.org/
wiki/Applet>. Acesso em: 13 out. 2012.

Um código destinado à execução em um computador não é necessariamente


adequado para outro computador, pois, normalmente, os programas executáveis
são específicos a um conjunto de instruções e a um sistema operacional. Por
exemplo, “arquivos executáveis enviados como anexos de e-mail por usuários de
Windows/x86 não funcionarão em um computador x86 executando Linux ou em
um computador Macintosh executando Mac OS X”. (COULOURIS; DOLLIMORE;
KINDBERG, 2007, p. 29).

De acordo com Coulouris, Dollimore e Kindberg (2007, p. 29), “a estratégia


de máquina virtual oferece uma maneira de tornar um código executável em
qualquer tipo de processador (hardware) e sistema operacional. Nessa estratégia,
o compilador de uma linguagem em particular gera código para uma máquina
virtual, em vez de código para um processador e sistema operacional específicos”;
por exemplo, o compilador Java produz código para a máquina virtual Java (JVM
– Java Virtual Machine).

Ainda segundo Coulouris, Dollimore e Kindberg (2007, p. 29), “para


permitir a execução de programas Java, torna-se necessário ter uma versão da
JVM implementada para o processador e sistema operacional da máquina alvo”.
Uma vantagem de se executar um código localmente é que ele pode dar uma boa
resposta interativa, pois não sofre os atrasos, nem a variação da largura de banda
associada à comunicação na rede. Entretanto, a solução Java não é aplicável de
forma generalizada aos programas escritos em outras linguagens.

Acessar serviços significa executar código que pode ativar suas operações.
Alguns serviços são tão padronizados que podemos acessá-los com um aplicativo já
existente e bem conhecido – “a web é o exemplo mais comum disso, mas mesmo nela,
alguns sites usam funcionalidades não disponíveis em navegadores padrão e exigem o
download de código adicional. Esse código adicional pode, por exemplo, se comunicar
com um servidor”. (COULOURIS; DOLLIMORE; KINDBERG, 2007, p. 47).

132
TÓPICO 2 | ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

Considere uma aplicação que exige que os usuários precisem estar


atualizados com relação às alterações que ocorrerem em uma fonte de informações
em um servidor. Isso não pode ser obtido pelas interações normais com o servidor
web, pois essas são sempre iniciadas pelo cliente. “A solução é usar software adicional
que opere de uma maneira frequentemente referida como modelo push – no qual
o servidor inicia as interações, em vez do cliente” (COULOURIS; DOLLIMORE;
KINDBERG, 2007, p. 47).

Como exemplo disso, Coulouris, Dollimore e Kindberg (2007, p. 47)


sugerem que um corretor de bolsa de valores poderia fornecer um serviço
personalizado para notificar os usuários sobre alterações nos preços das ações. Para
usar esse serviço, “cada indivíduo teria que fazer o download de um applet especial
que recebesse atualizações do servidor do corretor, as exibisse para o usuário e,
talvez, executasse automaticamente operações de compra e venda, disparadas por
condições preestabelecidas e armazenadas por uma pessoa em seu computador”.

NOTA

O uso de código móvel é uma ameaça potencial à segurança do computador


destino. Como uma das formas empregadas para reduzir esse risco, os navegadores de internet
dão aos applets um acesso limitado a seus recursos locais (GROSS, 2008, p. 54).

4.2 AGENTES MÓVEIS


Coulouris, Dollimore e Kindberg (2007, p. 47) definem um agente móvel
como sendo “um programa em execução (inclui código e dados) que passa de
um computador para outro em um ambiente de rede, realizando uma tarefa em
nome de alguém, como uma coleta de informações, e finalmente retornando com
os resultados obtidos a esse alguém”.

Um agente móvel pode efetuar várias requisições aos recursos locais de


cada site que visita como, por exemplo, acessar entradas de bancos de dados. “Se
compararmos essa arquitetura com um cliente estático que solicita, via requisições
remotas, acesso a alguns recursos, possivelmente transferindo grandes volumes de
dados, há uma redução no custo e no tempo da comunicação graças à substituição
das requisições remotas por requisições locais”. (COULOURIS; DOLLIMORE;
KINDBERG, 2007, p. 47).

Segundo Coulouris, Dollimore e Kindberg (2007, p. 47), “podem ser usados


para instalar e manter softwares em computadores dentro de uma empresa, ou para
comparativo de preços de produtos de diversos fornecedores, visitando o site de
cada fornecedor e executando uma série de operações de consulta”.

133
UNIDADE 3 |SISTEMAS DISTRIBUÍDOS

Ainda de acordo com Coulouris, Dollimore e Kindberg (2007), assim


como o código móvel, os agentes móveis também são uma ameaça em potencial à
segurança para os recursos existentes nos computadores que visitam. O ambiente
que recebe um agente móvel deve decidir, com base na identidade do usuário, em
nome de quem o agente está atuando, qual dos recursos locais ele pode usar. A
identidade deve ser inclusa de maneira segura com o código e com os dados do
agente móvel. Além disso, os agentes móveis, em si, podem ser vulneráveis – eles
podem não conseguir completar sua tarefa, caso o acesso às informações de que
precisam sejam recusadas.

Para contornar esse problema, as tarefas executadas pelos agentes


móveis podem ser feitas usando-se outras técnicas. Por exemplo, os web crawlers
que precisam acessar recursos em servidores web em toda a internet funcionam
com muito sucesso, fazendo requisições remotas de processos servidores. Por
esses motivos, “a aplicabilidade dos agentes móveis é limitada” (COULOURIS;
DOLLIMORE; KINDBERG, 2007, p. 48).

NOTA

“Os aglets são objetos Java que podem se mover de um lugar para outro da
internet. Assim sendo, um aglet que está executando em uma determinada máquina pode
interromper a sua execução, enviar-se para outra máquina remota e reassumir sua execução
neste novo local. Quando um aglet se move, ele carrega consigo seu código de programa bem
como o seu estado (dados correntes)”. (GROSS, 2008, p. 56).

“Aglets Workbench é uma plataforma de agentes móveis, desenvolvida em Java 1.1 pela IBM/
Japão. Posteriormente, o código fonte dessa plataforma foi aberto, em uma tentativa de se
obter voluntários, interessados em trabalhar no processo de adaptação desse código para as
versões posteriores do Java”. (GROSS, 2008, p. 56).

4.3 COMPUTADORES EM REDE


Na arquitetura ilustrada na figura a seguir, um usuário pode executar
uma série de aplicativos localmente em seu computador desktop. Os sistemas
operacionais e os softwares aplicativos desse tipo de computador exigem que
grande parte do código e dos dados ativos esteja armazenada localmente em um
disco rígido. Contudo, o gerenciamento de arquivos de aplicativos, e a própria
manutenção de uma base de software local, exige um considerável esforço técnico,
de uma maneira que a maioria dos usuários comuns não está qualificada a oferecer
(COULOURIS; DOLLIMORE; KINDBERG, 2007).

134
TÓPICO 2 | ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

FIGURA 53 – UMA TÍPICA INTRANET

FONTE: Braziltec. Disponível em: <http://braziltec.com/datacenter/images/


intranet.jpg>. Acesso em: 14 out. 2012.

De acordo com Coulouris, Dollimore e Kindberg (2007, p. 48), “o uso dos


computadores em rede surge como uma resposta a esse problema, permitindo
que tanto o sistema operacional como todo o software aplicativo necessário para o
usuário, seja carregado a partir de um servidor de arquivos remoto. Os aplicativos
são executados de forma local no computador do usuário, contudo são gerenciados
pelo servidor de arquivos remoto”. Aplicativos de rede, como por exemplo, um
navegador internet, também pode ser executado dessa forma. Como todos os
dados e código de aplicativo são armazenados em um servidor de arquivos, os
usuários podem migrar de um computador de rede para outro sem afetar o seu
trabalho. A capacidade do processador e da memória de um computador em rede
pode ser restrita de forma a reduzir o seu custo.

Ainda segundo Coulouris, Dollimore e Kindberg (2007), caso o computador


em rede tenha um disco rígido, ele poderá conter um mínimo necessário de software.
O restante do disco poderá ser usado como armazenamento cache, contendo cópias
do software e dos arquivos de dados recentemente recuperados pelos servidores.
A manutenção da validade das informações do cache não exige nenhum esforço
por parte dos usuários: os objetos ali armazenados podem ser automaticamente
invalidados quando uma nova versão de um arquivo for gravada em um
determinado servidor.

135
UNIDADE 3 |SISTEMAS DISTRIBUÍDOS

4.4 CLIENTES FRACOS

FIGURA 54 – THIN CLIENTS E SERVIDORES DE COMPUTAÇÃO

FONTE: Adaptado de COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T. Distributed Systems:


concepts and design. 3. ed. England: Addison Wesley, 2001, p. 39.

Clientes fracos, clientes magros ou clientes leves (em inglês, thin clients), se
referem a uma camada de software, em um computador local, que oferece ao usuário
uma interface que se baseia em janelas para que este possa executar programas
aplicativos em um computador remoto (figura anterior). Esta arquitetura, segundo
Coulouris, Dollimore e Kindberg (2007, p. 48), “tem os mesmos baixos custos de
gerenciamento e de hardware que o esquema de computadores em rede, porém,
ao invés de fazer o download do código de aplicativos no computador do usuário,
ela os executa em um servidor de computação – um computador com capacidade
suficiente para executar um grande número de aplicativos simultaneamente”.
Normalmente o servidor de computação é um computador com vários
processadores ou um cluster executando uma versão para multiprocessadores de
um sistema operacional, como o UNIX ou o Windows.

O principal inconveniente desta arquitetura está nas atividades gráficas


altamente interativas, como CAD e processamento de imagens, onde os atrasos
sentidos pelos usuários aumentam em função da necessidade de transferência de
imagens entre o thin client e o processo aplicativo, o que provoca latências na rede
e no sistema operacional (COULOURIS; DOLLIMORE; KINDBERG, 2007).

NOTA

“CAD (Computer Aided Design), ou desenho auxiliado pelo computador, é o


nome genérico dos sistemas computacionais utilizados para facilitar o projeto de desenhos
técnicos, consistindo em uma série de ferramentas para construção de entidades geométricas
planas (linhas, polígonos e curvas) ou ainda objetos tridimensionais (cubos, esferas, cilindros e
outros)”. (GROSS, 2008, p. 58).

136
TÓPICO 2 | ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

Segundo Coulouris, Dollimore e Kindberg (2007, p. 48-49), “os sistemas thin


client são conceitualmente simples e sua implementação em alguns ambientes é
direta. Por exemplo, a maioria das variações do sistema operacional UNIX inclui o
sistema de janelas X-11, um processo que gerencia a tela e dispositivos de entrada
interativos (teclado, mouse) do computador no qual ele é executado, fornecendo uma
ampla biblioteca de funções (o protocolo X-11) para exibição e modificação de objetos
gráficos em janelas, assim como a criação e manipulação das próprias janelas”.

E
IMPORTANT

“X-11 é o toolkit e o protocolo padrão para GUI nos sistemas UNIX e assemelhados,
como o Linux. Também existe em versões para outros sistemas operacionais, como, por exemplo,
o Microsoft Windows e o Mac OS. Desenvolvido pelo Instituto de Tecnologia de Massachussets
(MIT) em 1984, foi originalmente chamado simplesmente de X. Como atualmente encontra-se
na versão 11, carrega este número em seu nome”. (GROSS, 2008, p. 58).

O sistema X-11 é referenciado como um processo servidor de janelas.


Os programas aplicativos com os quais o usuário está interagindo no momento
são os clientes de um servidor X-11. Os programas clientes se comunicam com o
servidor através de requisições ao protocolo X-11, o que inclui as operações para
desenhar textos e objetos gráficos em janelas. Os clientes podem ou não executar
no mesmo computador que o servidor, pois as funções disponibilizadas pelo
servidor são sempre acionadas com um mecanismo RPC (Remote Procedure Call).
Portanto, o servidor de janelas X-11 tem as principais propriedades de um thin
client (COULOURIS; DOLLIMORE; KINDBERG, 2007).

De acordo com Coulouris, Dollimore e Kindberg (2007, p. 49),

(...) existem vários pontos na sequência de tratamento de informações


necessários para suportar adequadamente uma interface com o usuário,
nos quais o limite entre cliente e servidor pode ser definido. O produto
WinFrame da Citrix é uma implementação comercial, bastante utilizada,
do conceito thin client que opera de maneira semelhante ao X-11. Esse
produto fornece um processo cliente que pode ser executado em uma
grande variedade de plataformas e oferece um ambiente de trabalho
que permite o acesso interativo a aplicativos executados em máquinas
Windows.

Outras implementações incluem o sistema VNC (Virtual Network Computer),


desenvolvido nos laboratórios da AT&T em Cambridge, Inglaterra, suportando
operações gráficas em nível de pixels de tela e salvando o contexto do ambiente
gráfico dos usuários mesmo no caso de troca de computadores por parte destes.

137
UNIDADE 3 |SISTEMAS DISTRIBUÍDOS

4.5 DISPOSITIVOS MÓVEIS


De acordo com Coulouris, Dollimore e Kindberg (2007, p. 49), “enquanto
agentes móveis migram entre computadores físicos, dispositivos móveis são
componentes de computação, em hardware, que se movem entre locais físicos e,
portanto, em redes, transportando consigo componentes de software”.

Coulouris, Dollimore e Kindberg (2007) afirmam que há no mundo cada


vez mais dispositivos móveis, incluindo, entre outros, laptops, equipamentos de
mão, como os PDAs (Personal Digital Assistants - assistentes pessoais digitais),
telefones móveis, câmeras digitais e computadores acoplados ao corpo humano,
como os relógios de pulso inteligentes. Cada vez mais, muitos destes equipamentos
possuem a capacidade de se comunicar através do uso de redes sem fio. O raio de
ação das redes sem fio varia desde um nível nacional, ou mesmo maior, como as
redes de comunicação GSM e 3G, a algumas centenas de metros, como redes WiFi
(IEEE 802.11) ou ainda a cerca de uma dezena de metros, como o Bluetooth.

DICAS

Se você quiser conhecer mais sobre a tecnologia Bluetooth, leia o artigo


completo dessa tecnologia, publicado na Wikipédia, disponível em <http://pt.wikipedia.org/
wiki/Bluetooth>.

A mobilidade do dispositivo tem muitas implicações, dentre elas, várias


para os sistemas baseados na arquitetura cliente-servidor. Tanto clientes quanto
servidores podem coexistir em dispositivos móveis – sendo os clientes móveis o
caso mais comum (COULOURIS; DOLLIMORE; KINDBERG, 2007).

Considere uma família de navegantes que realiza um passeio pelo


mundo, explorando conectividade WiFi nos locais onde ela estiver disponível, ou
a infraestrutura da rede de telecomunicações via satélite em outros lugares. Os
familiares querem atualizar e ler um site que contém fotos e informações sobre o
passeio. A maneira mais óbvia de se conseguir isto seria que todos acessassem um
servidor fixo, com os navegantes fazendo upload e lendo dados a partir de seus
clientes móveis. Mas uma alternativa possível seria executar o servidor web no
próprio barco, para que o próprio servidor fosse móvel. “O servidor não apenas
poderia fornecer fotos e informações para os usuários, mas também poderia
fornecer um mapa mostrando a posição correta da embarcação, usando um
receptor GPS (Global Positioning System)”. (GROSS, 2008, p. 59-60).

138
TÓPICO 2 | ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

A transparência de mobilidade é um problema frequente para dispositivos


móveis, assim como para agentes móveis. Em particular, os clientes de um servidor
móvel, como o caso do exemplo da família de navegantes, não precisam saber de sua
movimentação entre as diferentes redes (mesmo que a família possa estar interessada
na localização geográfica de seu barco, conforme mostrado no mapa atualizado pelo
GPS). O IP móvel oferece uma solução por meio da qual o servidor do barco mantém
o seu endereço internet (IP), mesmo que se mova entre várias redes (GROSS, 2008).

A conectividade variável é outra questão importante, e que afeta tanto a


capacidade do barco de atuar como servidor, como a capacidade de seus passageiros
em acessar serviços externos. O barco pode perder a conexão com a rede sem fio de
forma intermitente, por breves períodos de tempo, enquanto passa por obstáculos que
bloqueiam o sinal de transmissão, como pontes, ou por períodos maiores, em regiões
onde a conectividade à rede sem fio cessa completamente, como as áreas de sobra de
sinal. Além disso, o servidor do barco está sujeito a uma largura de banda bastante
variável, ao se mover entre conexões da rede WiFi e da rede de telecomunicações.

4.6 INTEROPERABILIDADE ESPONTÂNEA


De acordo com Coulouris, Dollimore e Kindberg (2007, p. 50), “a
interoperabilidade espontânea é uma variação do modelo cliente-servidor na
qual associações entre dispositivos são rotineiramente criadas e destruídas”. Um
usuário poderia visitar uma organização anfitriã e usando seus dispositivos móveis
em conjunto com os dispositivos do anfitrião, como as impressoras.

Analogamente, poderiam ser oferecidos aos passageiros do barco, serviços


integrados com os ambientes físicos pelos quais o barco passa, como informações
sobre as atrações turísticas locais. O principal desafio que se aplica a tais situações
é tornar a interoperabilidade rápida e conveniente (isto é, espontânea), mesmo que
o usuário esteja em um ambiente que nunca tenha visitado antes. Isso significa
ativar o dispositivo do visitante para se comunicar na rede do anfitrião e associá-lo
convenientemente aos serviços locais – um processo chamado de descoberta de serviço.

4.7 COMPUTAÇÃO UBÍQUA OU PERVASIVA


Coulouris, Dollimore e Kindberg (2007, p. 568) relatam que Mark Weiser
cunhou o termo computação ubíqua, em 1988. Às vezes, a computação ubíqua
também é conhecida como computação pervasiva e os dois termos normalmente
são considerados sinônimos. “Ubíquo” significa “em toda parte”. Weiser percebeu
a predominância cada vez maior dos dispositivos de computação levando a
mudanças revolucionárias na maneira como usaríamos os computadores.

139
UNIDADE 3 |SISTEMAS DISTRIBUÍDOS

E
IMPORTANT

“A computação ubíqua, também denominada de computação pervasiva, é a


utilização de vários dispositivos computacionais pequenos e baratos, que estão presentes nos
ambientes físicos dos usuários, incluindo suas casas, escritórios e até na rua”. (COULOURIS;
DOLLIMORE; KINDBERG, 2007, p. 19).

Cada pessoa no mundo utilizaria muitos computadores. Podemos comparar


isso à revolução da computação pessoal anterior a essa, que viu um computador
para cada pessoa. Embora pareça simples, essa mudança teve um efeito dramático
sobre a maneira como usamos os computadores, em comparação à era anterior dos
computadores de grande porte, quando havia apenas um computador para muitas
pessoas. A ideia de Weiser de “uma pessoa, muitos computadores” significa
algo muito diferente da situação comum, na qual cada um de nós tem vários
computadores mais ou menos parecidos – um no trabalho, um em casa, um laptop
e, talvez, um PDA que levamos conosco. Em vez disso, na computação ubíqua, os
computadores se multiplicam na forma e na função e não apenas no número, para
atender a diferentes tarefas (COULOURIS; DOLLIMORE; KINDBERG, 2007).

DICAS

PDA – Personal Digital Assistant – Assistente pessoal digital, é um computador


de dimensões reduzidas, dotado de grande capacidade computacional, cumprindo as funções
de agenda e sistema informático de escritório elementar, com possibilidade de interconexão
com um computador pessoal e uma rede informática sem fios para acesso a e-mail e internet.
FONTE: <http://pt.wikipedia.org/wiki/Personal_digital_assistant>. Acesso em: 14 out. 2012.

Considere o exemplo citado por Coulouris, Dollimore e Kindberg (2007,


p. 568).

Suponha que todos os meios de exibição e escrita fixos em uma


sala – quadros, livros, folhas de papel, notas adesivas etc. – fossem
substituídos por dezenas ou centenas de computadores individuais
com telas eletrônicas. Os quadros poderiam ajudar as pessoas a
desenhar, organizar e arquivar suas ideias; os livros poderiam se tornar
equipamentos que permitissem aos leitores pesquisarem seu texto,
procurarem o significado de palavras, buscarem ideias relacionadas
na web e verem conteúdo multimídia vinculado. Agora, incorpore
funcionalidade de computação em todas as ferramentas de escrita.
Por exemplo, as canetas e os marcadores se tornariam capazes de
armazenar o que o usuário escreveu e desenhou, e de reunir, copiar e

140
TÓPICO 2 | ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

mover conteúdo multimídia entre os muitos computadores situados nas


imediações. Esse cenário levanta questões de capacidade de utilização e
econômicos e toca apenas em uma pequena parte de nossas vidas, mas
nos dá uma ideia do que a “computação por toda parte” poderia ser.

A segunda mudança que Weiser previu foi que os computadores


“desapareceriam” – que eles “se incorporariam em utensílios e objetos
do dia a dia, até se tornarem indistinguíveis”. Essa é principalmente
uma noção psicológica, comparável ao modo como as pessoas aceitam
normalmente a mobília de uma casa e mal a notam. Ela reflete a
ideia de que a computação estará incorporada ao que consideramos
itens do cotidiano – aqueles que normalmente não achamos que
tenham recursos computacionais, nada diferente do que pensamos a
respeito das máquinas de lavar, ou dos veículos como “equipamentos
de computação”, mesmo tendo o controle de microprocessadores
incorporados – cerca de 100 microprocessadores, no caso de alguns
carros. (COULOURIS; DOLLIMORE; KINDBERG, 2007, p. 568).

De acordo com Coulouris, Dollimore e Kindberg (2007), embora a


visibilidade de certos dispositivos seja apropriada – nos casos como os sistemas
de computadores incorporados em um carro –, isto não vale para todos os
equipamentos que vamos considerar, particularmente para os dispositivos que os
usuários móveis normalmente carregam. Por exemplo, os telefones móveis eram
uns dos dispositivos de maior penetração, mas sua capacidade computacional
dificilmente era visível e, com certeza, nem deveria ser.

141

Você também pode gostar