quinta-feira, 3 de dezembro de 2009

Sistema Distribuido

A computação distribuída, ou sistema distribuído, é uma referência à computação paralela e descentralizada, realizada por dois ou mais computadores conectados através de uma rede, cujo objetivo é concluir uma tarefa em comum.

Definição

Um sistema distribuído segundo a definição de Andrew Tanenbaum é uma "colecção de computadores independentes que se apresenta ao usuário como um sistema único e consistente"; outra definição, de George Coulouris, diz: "colecção de computadores autónomos interligados através de uma rede de computadores e equipados com software que permita o compartilhamento dos recursos do sistema: hardware, software e dados"[carece de fontes?].

O suporte completo de um sistema de banco de dados distribuídos implica que uma única aplicação seja capaz de operar de modo transparente sobre dados dispersos em uma variedade de banco de dados diferentes, gerenciados por vários SGBDs diferentes, em execução em uma variedade de máquinas diferentes que podem estar rodando em diversas plataformas diferentes e uma variedade de sistemas operacionais. Onde o modo transparente diz respeito à aplicação operar sob um ponto de vista lógico como se os dados fossem gerenciados por um único SGBD, funcionando em uma única máquina com apenas um sistema operacional.
Assim, a computação distribuída consiste em adicionar o poder computacional de diversos computadores interligados por uma rede de computadores ou mais de um processador trabalhando em conjunto no mesmo computador, para processar colaborativamente determinada tarefa de forma coerente e transparente, ou seja, como se apenas um único e centralizado computador estivesse executando a tarefa. A união desses diversos computadores com o objectivo de compartilhar a execução de tarefas, é conhecida como sistema distribuído.

Características Fundamentais

Execução concorrente das componentes – paralelismo real
o Necessidade de coordenação entre os vários componentes

Falhas independentes das componentes e das comunicações

  • Impossível determinar se existe uma falha dum componente ou do sistema de comunicações
  • Necessidade de tratar as falhas

Ausência de relógio global – existem limites para a precisão da sincronização dos relógios locais

  • Impossível usar relógios locais para ordenar globalmente todos os eventos

Implicações

Nenhuma componente tem uma visão exacta e instantânea do estado global do sistema

Os componentes têm uma visão parcial do estado global do sistema

  • Os componentes do sistema estão distribuídos e só podem cooperar através da troca de mensagens, as quais levam um tempo não nulo a serem propagadas

Na presença de falhas, o estado global pode tornar-se incoerente → as visões parciais do estado global podem tornar-se incoerentes

  • Por exemplo, réplicas de um ficheiro podem ficar incoerentes

Vantagens

• Economia: melhor relação custo/desempenho
• Eficiência: maior poder total de computação
• Distribuição inerente: máquinas espacialmente separadas
• Confiabilidade: se uma máquina falha, o sistema como um todo pode ainda sobreviver
• Crescimento incremental: poder computacional adicionado em incrementos

Desvantagens

• Pouco software disponível (ainda!)
• Networking: a rede pode causar problemas
• Segurança: várias portas de acesso (mas...)

Sem comentários:

Enviar um comentário