ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
desafios na implementacao de sistemas distribuidos
1. Os Desafios que Envolvem o Desenvolvimento e Implantação de
um Sistemas de Informação Distribuído
Neste capítulo abordaremos os principais desafios existentes para desenvolver e
implantar um sistema de informação distribuído. Citaremos cada um desses desafios
destacando suas características e particularidades e expondo exemplos de sistema
distribuídos conhecidos e citados anteriormente.
1. A heterogeneidade do sistema
Quando falamos em heterogeneidade (variedade, diferença) de um sistema,
pensamos logo na internet, pois ela permite que diferentes tipos de usuários
acessem e executem algum tipo de aplicativo, através de variados tipos de
computadores que estão conectados a ela. Podemos ligar a heterogeneidade de um
sistema de informação distribuído às seguintes características:
1. As redes envolvidas no sistema: Um sistema de informação distribuído
pode ser composto por vários tipos de redes, onde as diferenças existentes
entes elas, são mascaradas pelos protocolos de comunicação.
2. Os diferentes tipos de Sistemas Operacionais (S.O) que compõem o
sistema: Observamos acima que um sistema de informação distribuído pode
ser composto por vários tipos de redes de computadores. Essas redes são
interligadas por variados tipos de sistemas operacionais. O sistema
operacional não precisa necessariamente possuir a mesma interface de
programação, mas sim o conhecimento do protocolo que permite a
comunicação entre os outros sistemas operacionais.
3. A implementação do sistema feita por desenvolvedores diferentes: Um
sistema distribuído que foi construído por diferentes desenvolvedores,
necessita utilizar padrões que são de conhecimento de todos os envolvidos
no desenvolvimento, para permitir a comunicação de ambas as partes que
foram construídas separadamente.
O que é middleware e qual o seu papel na heterogeneidade de um sistema
distribuído?
Podemos dizer que o middleware é uma camada de software que possui como
característica principal, a abstração e o mascaramento de hardware, software, S.O,
rede e a linguagem de programação envolvida.
OBS: Abordaremos um capítulo completo sobre middleware, destacando sua
importância para os sistemas distribuídos.
2. Abertura do sistema para expansões
Quando um sistema distribuído permite a sua reimplementação e expansão de
diversas maneiras diferentes, podemos dizer então que esse sistema é um sistema
aberto. Essa abertura permite, por exemplo, que novos serviços sejam adicionados e
disponibilizados para o uso de diferentes tipos de usuários.
2. Quando o sistema está sendo desenvolvido, a documentação de todas as suas
características e praticidades também deve ser criada, para permitir aos futuros
desenvolvedores encarar com maior facilidade toda a complexidade dos
componentes envolvidos.
3. A Segurança do sistema
Quando distribuímos as informações através de sistemas distribuídos, devemos
estar atentos a segurança que deve ser disponibilizada para essas informações. É
necessário que seja observado os três requisitos básicos para manter a segurança
de uma informação. São eles:
• Confidencialidade: Proteção contra o acesso de usuários não autorizados.
• Integridade: proteção das informações contra alterações ou erros.
• Disponibilidade: proteger a informação para que ela esteja sempre
disponível.
A comunicação de um sistema distribuído é feita através da troca de mensagens,
sendo que essas mensagens trafegam através de uma rede. A Atualização ou
implantação de um firewall é necessária, para que seja feito um controle de tudo que
entre e tudo que saia pela rede, restringindo o acesso indevido de informações.
4. A escalabilidade do sistema
Um sistema distribuído é escalável, quando ele mantém a sua eficiência diante de
uma grande quantidade de usuários e de recursos.
O projeto de um sistema distribuído escalável deve envolver as seguintes
características:
• Controle de custo dos recursos físicos: a ampliação do sistema deve ser
feita a um custo razoável, à medida que a necessidade por recursos aumenta.
• Controle da perda de desempenho: deve ser feito um controle sobre a
perda de desempenho do sistema, à medida que a quantidade de usuários
aumenta.
• Controle do esgotamento de recursos: o controle de recursos é algo
complicado de ser feito, principalmente quando envolve projeções futuras. Os
Para que um sistema de informação distribuído,
construído a partir de hardwares e componentes de
softwares diferentes, obtenha sucesso na sua expansão,
é necessário que todos os seus componentes sejam
compatíveis através de padrões.
3. vezes subestimar crescimentos futuros causa mais problemas do que efetuar
mudanças quando houver necessidade.
• Controle de gargalos no sistema: o controle do congestionamento deve ser
feito para evitar a queda de desempenho do sistema.
A escalabilidade é um termo de muita importância para os sistemas distribuídos. Ela
ocupa uma posição de destaque tanto no projeto como na implementação do
sistema.
5. Tratamento de erros
Qualquer tipo de sistema está sujeito a erros, só que as falhas que ocorram nos
sistemas distribuídos são diferenciadas dos outros sistemas, pois elas são falhas
parciais. Isto é,quando algum componente de um sistema distribuído falha, os outros
componentes continuam em operação e o sistema não deixa de funcionar. A
desvantagem dessa característica, é que tratar essa falha é bem mais complexo do
que quando o sistema para por completo.
Existem algumas técnicas que são utilizadas para tratarem falhas em sistemas
distribuídos, são elas:
Detectar a falha: Algumas falhas podem ser detectadas e outras não. Existe um
desafio enorme em detectar as falhas que ocorram no sistema.
Mascarar as falhas que ocorram: algumas falhas que ocorram no sistema podem
ser ocultadas.
Ex: a retransmissão de uma mensagem quando ela não chega ao seu destino.
Tolerância a falhas: se observarmos a internet, a maioria dos seus serviços
apresenta falha. Quando uma falha acontece em um navegador, ele informa ao
usuário sobre a falha para que este decida se quer tentar novamente a conexão.
Recuperação de falhas: Quando uma falha acontece, é interessante que a
operação que ocasionou a falha possa ser retrocedida, evitando a inconsistência de
alguns dados que necessitam da operação citada.
Redundância: A redundância é um bom caminho para resolver problemas de falhas
nos sistemas distribuídos.
EX:
• Banco de dados replicado em vários servidores;
• Arquivos salvos em discos espelhados;
• Rotas diferentes para o tráfego de uma mesma mensagem.
4. 6. Transparência do sistema
Termo importante no “mundo” dos sistemas distribuídos, a transparência tem como
característica a ocultação de componentes e recursos, fazendo com que o sistema
distribuído seja visto tanto para os usuários como para os programadores como um
único sistema.
Citaremos abaixo os tipos de transparência existentes:
1. Transparência de acesso: permite aos usuários acessarem recursos que
estão alocados localmente ou remotamente da mesma maneira.
2. Transparência de localização: permite que os usuários acessem os
recursos disponíveis, independente da sua localização, e sem o
conhecimento desta.
3. Transparência de concorrência: permite que os processos acessem os
recursos disponíveis, concorrentemente, sem que exista interferência entre
ambos.
4. Transparência de replicação: várias instâncias de um recurso podem ser
utilizadas sem o conhecimento dos usuários que estão utilizando, permitindo
o aumento no desempenho e confiabilidade do sistema.
5. Transparência de falhas: ocultam algumas falhas que acontecem no
sistema, permitindo que os usuários executem suas tarefas, sem serem
afetados.
6. Transparência de mobilidade: recursos e usuários podem se movimentar
dentro do sistema, sem que afetem as suas operações.
7. Transparência de desempenho: permite que o sistema seja alterado e
recodificado com o intuito de melhorar o desempenho, sem que o usuário
perceba as modificações.
8. Transparência de escalabilidade: permite a expansão do sistema e seus
aplicativos, sem alterar a sua estrutura.
Nos sistemas de informação distribuídos, as duas transparências de maior destaque
são a de acesso e localização, pois elas afetam fortemente a utilização dos recursos
distribuídos.
Os sistemas distribuídos possuem um alto grau de disponibilidade,
permitindo que quando uma falha acontece, apenas a operação
que estava sendo executada pelo componente defeituoso seja
afetada.