Arquitetura dos Sistemas de Informação Distribuídos

Propaganda
Arquitetura dos Sistemas de Informação Distribuídos
Quando se projeta um sistema cuja utilização é destinada a ser feita em ambientes
do mundo real, projeções devem ser feitas para que o sistema possa funcionar
corretamente em diferentes tipos de circunstâncias e diante de diversas dificuldades
e ameaças.
Dificuldades e ameaças para um sistema de informação distribuído:
•
Modo variável de utilização: Variações nas cargas de trabalho que são
aplicadas ao sistema (página web acessada por milhares de usuários),
componentes mal conectados ou desconectados (computadores móveis),
requisitos especiais como grande largura de banda e baixa latência
(aplicativos multimídia).
•
Variáveis do ambiente do sistema: Os sistemas distribuídos devem
acomodar sistemas operacionais, redes e hardwares homogêneos.
o Redes sem fio operam em taxas inferiores as redes cabeadas.
o Sistemas operacionais apresentam ordens de grandeza diferentes.
•
Problemas internos: Relógios não sincronizados, danos nos componentes,
falhas de hardware e software.
•
Ameaças externas: Ataque a integridade e ao sigilo dos dados.
A arquitetura de um sistema é sua estrutura em termos de componentes, tendo
como objetivo global garantir que a estrutura do sistema possa atender a demanda
atual e futura. A maior preocupação é tornar o sistema:
•
•
•
•
Confiável;
Adaptável;
Gerenciável;
Rentável.
Descreveremos a seguir, os principais modelos arquitetônicos que são empregados
nos sistemas de informação distribuídos.
Os modelos de arquitetura de um sistema distribuídos simplificam e abstraem
funções dos componentes individuais, considerando o posicionamento dos
componentes em uma rede de computadores, em busca de definir a distribuição de
dados e cargas de trabalho, e o inter-relacionamento dos componentes visando a
seus papéis funcionais e a comunicação entre eles.
Os processos são classificados em:
•
Processos servidores;
•
•
Processos clientes;
Processos peer-to-peer (processos que colaboram e se comunicam de
maneira simétrica).
Essa classificação identifica a funcionalidade de cada processo, permitindo que seja
avaliada a carga de trabalho e os impactos causados por falhas em cada um deles.
Com o resultado da análise feita sobre os processos, é possível especificar o
posicionamento de cada processo, permitindo atender a objetivos de desempenho e
confiabilidade do sistema distribuído.
Existem vários padrões que são amplamente utilizados
para dividir tarefas em um sistema distribuído, tendo
um impacto importante no desempenho e na eficiência
do sistema.
Processos servidores
Um processo servidor aceita solicitações de outros processos, podendo ser
fornecido por um ou mais servidores, que interagem uns com os outros, e com
processos clientes.
Plataforma: Denominação para as camadas de baixo nível
de um sistema de informação distribuído, composta pelos
sistemas operacionais, hardware e rede, que fornece
serviços para as camadas acima, facilitando a
comunicação entre os processos.
]
Middleware: Camada de software que tem o objetivo de
mascarar a heterogeneidade do sistema, fornecendo um
modelo de programação que seja conveniente para os
programadores de aplicativos.
Um middleware é composto por um conjunto de objetos e
processos que interagem entre si, para a implementação
da
comunicação
e
oferecer
suporte
para
o
compartilhamento de recursos e aplicativos distribuídos.
Arquitetura
A divisão de responsabilidades entre aplicativos, servidores e outros processos, que
são componentes de um sistema, é a distribuição destes nos diversos computadores
que forma uma rede. Talvez seja o aspecto mais evidente no projeto de um sistema
de informação distribuído, implicando no desempenho, confiabilidade e segurança
do sistema resultante. Os processos possuem responsabilidades bem definidas e
interagem para a realizações de atividades úteis.
Cliente-servidor
É a arquitetura mais falada quando os sistemas de informação distribuídos estão em
discussão, sendo a mais importante e a mais empregada.
A imagem acima apresenta uma estrutura simples em que os processos clientes
interagem com os processos servidores. Observe que os servidores podem ser
clientes de outros servidores.
Ex: Servidor Web é cliente local do servidor de banco de dados.
Peer-to-peer
Todos os processos que estão envolvidos em uma determinada atividade, realizam
funções semelhantes interagindo corporativamente. Não existe distinção entre
processos clientes e processos servidores, nem entre os computadores em que são
executados.
O modelo cliente-servidor não é flexível em termos de
escalabilidade, oferecendo uma estratégia simples e
direta para o compartilhamento de dados e recursos.
O peer-to-peer tem como objetivo principal, explorar recursos de um grande número
de computadores para o cumprimento de uma dada atividade. Alguns aplicativos
que utilizam o peer-to-peer tem surgido, permitindo que milhares de computadores
forneçam acesso a dados e outros recursos armazenados e gerenciados
coletivamente.
Ex: Napster
Os aplicativos em formato peer-to-peer são compostos por um grande número de
processos (peers), sendo executados em comutadores diferentes, sendo que o
padrão de comunicação entre eles depende inteiramente do que o aplicativo faz.
Observe na imagem que um grande número de objetos está compartilhado, um
computador individual contém uma parte desses objetos, permitindo que as cargas
de processamento, armazenamento e comunicação para acessar os objetos, sejam
distribuídos por diversos computadores e conexões de rede.
Cada objeto pode ser replicado em vários computadores, distribuindo melhor a carga
e solucionando problemas com desconexões individuais.
Todas essas características tornam a arquitetura peer-to-peer bem mais complexa
que a arquitetura cliente-servidor, principalmente pela necessidade de colocar
objetos individuais, recuperá-los e manter réplicas entre vários computadores.
Os modelos de arquitetura de sistemas distribuídos são compostos por processos
que se comunicam através da troca de mensagens que trafegam em uma rede de
computadores. É interessante que esses modelos se preocupem com o
desempenho e a confiabilidade dos processos, das redes de comunicação e com a
segurança dos recursos que estão presentes no sistema.
Requisitos para o projeto da arquitetura de um sistema de informação
distribuído
Os fatores que motivam a distribuição de processos de um sistema de informação
distribuído são numerosos, sendo sua importância relevante. Citaremos abaixo
alguns requisitos importantes para projetar a arquitetura de um sistema distribuído:
1. Desempenho
A distribuição dos recursos vai muito além das necessidades de gerenciamento de
atualizações concorrentes, os principais problemas de desempenho causados pela
limitação de recursos de processamento e comunicação, como:
Reatividade: os usuários exigem respostas rápidas e consistentes, só que em
alguns dos programas clientes acessam recursos compartilhados que produzem
atrasos no processamento da solicitação.
Ex: a velocidade de resposta de servidores remotos é determinada pelo
desempenho da rede, do servidor, e dos componentes de software envolvidos.
Para obter um bom tempo de resposta é necessário que o sistema de informação
distribuído seja formado por poucas camadas de software, e transfira pequenos
volumes de dados entre clientes e servidores.
2. Throughtput
Velocidade com que um trabalho computacional é feito, medido através de taxas de
rendimento do sistema. A capacidade de um sistema de informação distribuído
realizar trabalhos para seus usuários é afetada pela velocidade de processamento
tanto nos clientes, como nos servidores e pela taxa de transferência dos dados. A
taxa de rendimento das camadas de software e de rede são importantes para medir
a taxa de rendimento do sistema.
3. Balancamento de carga
Tem o objetivo de permitir que os aplicativos de um sistema de informação
distribuído trabalhem paralelamente, sem disputar os mesmos recursos, mas
explorem recursos computacionais disponíveis como processador, memória e
recursos de rede.
Ex: Quando algum cliente executa um aplicativo localmente, ele remove as cargas
de processamento do servidor.
4. Qualidade de serviço
A qualidade de serviço é utilizada para medir a capacidade do sistema de atender a
prazos. Para que ela seja realizada é necessário que exista uma dependência dos
recursos disponibilizados em momentos apropriados, implicando no fornecimento de
recursos de comunicação e computação, que sejam garantidos, suficientes para
permitir que os aplicativos concluam suas tarefas a tempo.
Download