Sistemas Distribuídos: Conceitos e Arquiteturas
Classificado em Computação
Escrito em em português com um tamanho de 9,42 KB.
Definições de Sistemas Distribuídos
"Consiste de uma coleção de computadores autônomos ligados através de uma rede e equipados com software de sistemas distribuídos" (Coulouris).
"Um sistema distribuído é uma coleção de computadores independentes que aparecem para os usuários do sistema como um único computador" (Tanenbaum).
- Software de distribuição: Habilita os computadores a coordenar suas atividades e compartilhar recursos do sistema (hardware, software e dados).
- Os usuários de um sistema distribuído devem perceber como uma facilidade de computação única, integrada, mesmo que seja implementada por vários computadores.
- Hardware: Máquinas autônomas.
- Software: Os usuários pensam no sistema como um único computador.
Evolução dos Sistemas Distribuídos
- O desenvolvimento de sistemas distribuídos iniciou em 1970, seguindo o progresso das redes de computadores de alta velocidade.
- Esse crescimento tem sido alcançado devido ao desenvolvimento de software para sistemas distribuídos destinados a suportar o desenvolvimento de aplicações distribuídas.
Fatores que contribuem para a evolução dos Sistemas Distribuídos
- Baixo custo dos microprocessadores.
- Interconexão e abrangência das redes.
- Aplicações multimídia em expansão.
Aplicações Distribuídas
- Aplicações de conferência e acesso a informações multimídia.
- Aplicações que empreguem representação digital de imagens, áudio, vídeo que suportem usuários realizando ações de ensino a distância, trabalhos ou projetos cooperativos, videoconferências, transações comerciais, dentre outras atividades.
- Muitas aplicações multimídia executam sobre um sistema distribuído, habilitando muitos usuários a interagirem entre si e compartilhar recursos.
- Requisitos especiais a serem considerados em projetos deste tipo:
- Vídeo e áudio são mídias contínuas.
- Aplicações interativas devem apresentar um delay entre o início da conversação em um site e a sua reprodução no outro inferior a 100 ms, pois, caso contrário, o atraso torna-se perceptível.
Multiprocessadores e Multicomputadores
- Multiprocessadores: Caracterizam-se pelo uso de dois ou mais processadores no mesmo sistema.
- Multicomputadores: Caracterizam-se pela ligação e intercalação de dois ou mais computadores (geralmente dispostos em Cluster/Grid).
- Independentemente de onde esteja sendo implementado, o objetivo é realizar processamento paralelo.
Paralelismo
O processamento paralelo pode ser definido como “uma forma eficiente do processamento de informação com ênfase na exploração de eventos concorrentes no processo computacional” (HWANG, 1984).
Tipos de Paralelismo
- Paralelismo Temporal: É feito por operações sobrepostas, onde os eventos ocorrem em instantes de tempos sobrepostos.
- Pipeline: Onde a tarefa é subdividida numa sequência de subtarefas, cada uma executada por um estágio de hardware específico (E1), que trabalha concorrentemente com outros estágios do Pipeline (E2 ... En), criando o que tecnicamente é chamado de Paralelismo Temporal na execução das subtarefas.
- Paralelismo Espacial Síncrono: Onde os eventos são simultâneos, pois ocorrem em múltiplos recursos no mesmo instante de tempo. Nesta arquitetura, uma unidade de controle distribui para vários elementos de processamento (EP) a mesma instrução, que será executada em paralelo por estes EPs sobre seus dados no mesmo instante de tempo. O processador matricial, Array Processor, encontrado em arquitetura SIMD, executa tal processo.
- Paralelismo Espacial Assíncrono: Onde os eventos não são simultâneos. Neste caso, diversos processadores trabalham em paralelo processando suas tarefas concorrentemente de forma assíncrona para certo intervalo de tempo. Esse tipo de concorrência é encontrada em multiprocessadores de arquitetura MIMD.
Motivação para o Estudo de Sistemas Distribuídos
- O uso de sistemas de informação e redes de comunicação torna-se cada vez mais importante.
- Com o aumento da complexidade dos sistemas em geral, os sistemas distribuídos passam a ser cruciais nas infraestruturas de informação de hoje e do futuro.
Vantagens do uso de SDs
Comparando com os sistemas centralizados
- Apresentam economia, já que microprocessadores oferecem melhor relação preço/desempenho do que os antigos mainframes.
- Velocidade: Maior poder total da computação do que o mainframe.
- 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.
Comparando com os sistemas isolados
- Compartilhamento de dados.
- Compartilhamento de dispositivos.
- Comunicação: E-mail, por exemplo.
- Flexibilidade: Distribuição de carga e adaptabilidade.
Desvantagens do uso de SDs
- Pouco software disponível.
- A rede pode causar problemas de comunicação.
- Segurança: Vários pontos de acesso.
Arquiteturas não paralelas
- RISC - Reduced Instruction Set Computer: Caracteriza-se por executar instruções simplificadas (não exige um poder computacional muito alto) em curto período de tempo.
- CISC - Complex Instruction Set Computer: Caracteriza-se por executar instruções complexas (exige alto poder computacional) em um período de tempo, ao menos, 10-13 maior que o tempo gasto na arquitetura RISC.
Arquiteturas paralelas
- SISD - Single Instruction stream Single Data stream: Possui uma unidade de processamento e uma unidade de controle.
- SIMD - Single Instruction stream Multiple Data stream: Caracteriza-se por uma arquitetura vetorial onde a mesma operação é executada sobre múltiplos operandos.
- MISD - Multiple Instruction stream Single Data stream: Caracteriza-se por executar um Pipeline em processadores cujos dados vão sendo processados e passados para outros processadores.
- MIMD - Multiple Instruction stream Multiple Data stream: Várias instruções podem ser executadas ao mesmo tempo em unidades diferentes controladas por unidades de controle independentes.
Tolerância a Falhas em SDs
Modelos de Tempo
Modelos síncrono e assíncrono podem ser considerados extremos teóricos. Outros modelos misturam características desses extremos.
Sistema Assíncrono
- Não existe limite de tempo.
- Impossível alcançar consenso em sistemas assíncronos.
Sistema Síncrono
- Existe um limite de tempo finito e conhecido.
- Falha de componentes pode ser deduzida pela ausência de resposta.
- Timeout - Detecção de defeitos em nodos e perda de mensagens.
Exemplos de Falhas
- Processador (Cache).
- Rede de comunicação (todos os tipos).
- Clock (temporização).
- Meio de armazenamento (temporização, omissão ou resposta).
- Software (resposta).
O modelo de falhas é uma simplificação da realidade.
Modelo Lógico
- Aplicação distribuída.
- Conjunto de processos concorrentes.
- Processos cooperativos.
- Cada processo é sequencial.
- Cada processo pode estar em um nó diferente.
- Progresso Finito.
- Rede completamente conectada.
- Topologia não é considerada.
- Processos.
- Canais.
Middleware
É uma camada de software de distribuição que abstrai a complexidade e a heterogeneidade do ambiente distribuído sobre uma rede com diversas tecnologias, arquiteturas de máquinas, sistemas operacionais e linguagens de programação.
Possui o objetivo de projetar, programar e gerenciar aplicações distribuídas através do provimento de um simples, consistente e integrado ambiente para programação distribuída.
Diferentes plataformas de middleware suportam diferentes modelos de programação para objetos distribuídos.
Middleware Baseado em Objetos
- Um dos mais populares modelos de middleware.
- Ambiente de programação.
- Distribuição + orientação a objetos.
- Utilização de IDL´s.
- Serviços.
- A comunicação poderá ser síncrona ou assíncrona.
- Assume a utilização de um transporte confiável: Protocolo TCP.
Transmissão de Dados
- Dados em programas são estruturados, enquanto que mensagens carregam informação sequencial.
- Necessidade de linearização/restauração de dados.
- Heterogeneidade na representação de dados em computadores:
- Uso de um formato externo comum.