Vantagens e desvantagens de sistemas distribuídos

Download Características Básicas de Sistemas Distribuídos...

Motivação ● Crescente dependência dos usuários aos sistemas: – necessidade de partilhar dados e recursos entre utilizadores; – porque os recursos estão naturalmente em máquinas diferentes. ● Demanda computacional se torna maior do que os avanços de software e hardware combinados; ● Algumas características inexistentes em sistemas centralizados como: – tolerância a falhas; – capacidade de escalabilidade; – separação física; – vantagens financeiras.

Vantagens de Sistemas Distribuídos ● Melhor relação custo/benefício; ● Maior capacidade de processamento; ● Maior confiabilidade e disponibilidade; ● Crescimento gradativo de capacidade; ● Compartilhamento de recursos: – Hardware, software e dados.

Desvantagens de Sistemas Distribuídos ● Desenvolvimento de software adequado; ● Falhas e saturação da rede de comunicação: – Podem eliminar as vantagens destes sistemas; ● Segurança pode ser comprometida: – Acesso a dados e recursos reservados.

Características Básicas de Sistemas Distribuídos ● Compartilhamento de recursos ● Heterogeneidade ● Escalabilidade ● Transparência ● Concorrência ● Tolerância a falhas ● Segurança

Compartilhamento de Recursos ● Recurso: – Termo abstrato e compreende tanto objetos de hardware, como discos e impressoras, quanto entidades de software como arquivos e banco de dados; ● Motivações: – Economia: compartilhamento de impressoras, supercomputadores, sistemas de armazenamento, etc... – Colaboração e troca de informações: arquivos, correio eletrônico, documentos, áudio e vídeo, teleconferência, etc...

Heterogeneidade ● Variedade e diferença em termos de: – Hardware; – Sistemas operacional; – Rede; – Linguagem de programação; – Implementações de diferentes desenvolvedores. ● Exemplos de heterogeneidade na Internet: – Diferentes implementações do mesmo conjunto de protocolos para diferentes tipos de rede: IP, TCP, UDP, SMTP; – Diferentes padrões de representação de dados: IDL, XML; – Diferentes padrões de bibliotecas: POSIX, DLL; – Diferentes padrões de invocação de serviços: COM, CORBA,RMI, SOAP; – Diferentes plataformas de execução: JVM (Java), CLR (.NET).

Escalabilidade ● Capacidade do sistema permanecer operando de forma efetiva mesmo diante de um aumento significativo do número de usuários e/ou dos recursos disponíveis; ● Principais desafios: – Controlar o custo dos recursos físicos; – Controlar perdas de desempenho; – Evitar “gargalos” de desempenho na rede ou nos próprios servidores. ● Se uma quantidade maior de usuários ou recursos devem ser considerados deve-se tomar cuidado com serviços, dados centralizados: Conceito Exemplo Serviços Centralizados: Um único servidor para todos os usuários Dados Centralizados: Uma única lista telefônica online Algoritmos Centralizados: Multiplicação de cadeias de Matrizes de maneira seqüencial. ● Eles se tornam gargalos, pontos únicos de falhas e saturam a rede onde residem.

Escalabilidade: Algoritmos Distribuídos ● Algoritmos distribuídos possuem as seguintes diferenças com relação aos centralizados: – Nenhum nó possui informação completa do estado do sistema; – Cada nó toma decisões baseado somente em informações locais; – A falha de um nó não inviabiliza a execução do algoritmo; – Não se pressupõe a existência de um relógio global.

Escalabilidade: Algoritmos Distribuídos ● Método de comunicação entre processos: – Memória compartilhada; – Mensagens ponto-a-ponto; – Difusão de mensagens (broadcast); – Chamadas remotas a procedimentos (RPC).

Tolerância a falhas ● Falhas são inevitáveis em sistemas computacionais: – Resultados incorretos; – Interrupção não planejada do serviço antes de sua conclusão; ● Falhas em sistemas distribuídos são parciais; ● Técnicas de tratamento de falhas mais comuns: – Detecção: bits de paridade, somas de verificação; – Ocultamento: retransmissão de mensagens; – Tolerância: informar o usuário do problema.

Transparência ● Abstração/Ocultação para os usuários e programadores de aplicação: – Sistema percebido como um “todo” coerente ao invés de uma coleção de partes independentes; ● Uma medida de sucesso de um sistema distribuído é dada pela sua transparência: – Em que medida é indistinguível de um sistema centralizado com a mesma funcionalidade? ● Transparência de acesso: – Permite o acesso a componentes remotos e locais através das mesmas operações; – Ex: Google Drive.

● Transparência de localização: – Permite o acesso a componentes sem conhecimento da sua localização física; – Existência de um mecanismo que determina a localização baseada em um nome; – Ex: URL. ● Transparência de concorrência: – Permite a execução concorrente de múltipla operações sobre o mesmo conjunto de recursos sem causar interferência entre elas; – Ex: Impressoras compartilhadas, leilão virtual. ● Transparência de escala: – Permite a expansão do sistema e de suas aplicações sem exigir mudanças significativas na infraestrutura existente; ● O sistema não possui gargalos ● Transparência de mobilidade (migração): – Permite a realocação de recursos e aplicações sem afetar o seu uso. ● Transparência de Replicação: – O usuário desconhece a existência de várias cópias do recurso; – Fundamental para desempenho e tolerância a falhas.

● Transparência de falhas: – A presença de falhas no sistema não é percebida pelos usuários; – Implica na ausência de um ponto único de falha.

● Transparência de desempenho: – Recurso adicionais são adicionados para suprir a nova demanda; – Serviços oferecidos pela Amazon (elasticidade).

Concorrência ● Suporte para múltiplos acessos simultâneos a um ou mais recursos compartilhados: – Possibilidade de inconsistências quando os recursos são alterados ● Serviços devem garantir que as operações de acesso os mantenham em um estado consistente – Válido para servidores e objetos de aplicações ● Técnicas mais comuns: – Sincronização de acesso (ex.: exclusão mútua distribuída) – Protocolos de controle de concorrência (ex.: 2PC)

Segurança ● Proteção para recursos compartilhados: – Confidencialidade (proteção contra usuários não autorizados): ● Ex.: Acesso a dados sobre salário, histórico médico; – Integridade (proteção contra alteração e corrupção): ● Ex.: Alteração indevida de dados usados em transações bancárias; – Disponibilidade (proteção contra interferência ao meio de acesso): ● Ex.: Queda ou sobrecarga do servidor ou do meio de comunicação; ● Principais mecanismos de segurança na Internet – Firewall; – Assinaturas digitais; – Canais de seguros de comunicação.

Cuidado! ● Premissas falsas adotadas ao se desenvolve pela primeira vez uma aplicação distribuída: – Rede é confiável; – Rede é segura – Rede é homogênea; – Topologia da rede não muda; – Latência zero; – Largura de banda é infinita.

Middleware ● Como suportar computadores e redes heterogêneos, oferecendo uma visão de sistema único? – Sistemas Distribuídos são organizados por meio de uma camada de software.

Tipos de Sistemas Distribuídos ● Sistemas de Computação Distribuídos: – Computação em Clusters; – Supercomputadores; – Computação em Grade (Grids); – Computação em Nuvem (Cloud Computing); ● Sistemas de Informação Distribuídos; ● Sistemas Distribuídos Pervasivos.

Clusters ● Hardware consiste em um conjunto de estações de trabalho ou PCs semelhantes; ● Conexão feita através de uma rede local; ● Em quase todos os casos, a computação de cluster é usada para programação paralela na qual um único programa é executado em paralelo.

Supercomputadores ● Clusters altamente “tunados” usando processadores de prateleira combinados a conexões de rede especiais e sistema operacional proprietário.

Grades Computacionais ● Computação em grade: muitos nós (clusters) de diversas origens e com baixo acoplamento. – Heterogêneos; – Dispersos através de várias organizações; ● Recursos de diferentes organizações são reunidos para permitir a colaboração de um grupo de pessoas ou instituições.

Sistemas Pervasivos ● Uma nova geração de sistemas distribuídos estão emergindo: sistemas de computação móvel e pervasivos; – Instabilidade é o comportamento esperado destes sistemas; – Heterogeneidade de rede e de dispositivos; – Problemas de segurança; – Dispositivos de computação móveis e embutidos: ● Pequenos; ● Alimentação por bateria; ● Têm como objetivo a mobilidade; ● Se utilizam de conexão sem fio. Exemplos de Sistemas Pervasivos ● Sistema pervasivo de monitoramento de saúde, usando (a) um hub local ou (b) uma conexão sem fio para transmitir os dados coletados.

Computação em Nuvem ● Um (novo) paradigma da computação distribuída motivado pela: – Economia de escala: ● O impacto combinado dessas economias de escala pode resultar em economias em longo prazo de até 80% quando comparadas com estruturas convencionais de hardware. – Virtualização: ● Ao simular ambientes autônomos em uma mesma máquina física, diminui-se a necessidade de hardware, de espaço físico e de energia. Além disso, os servidores virtuais, por poderem ser facilmente movidos entre máquinas físicas, favorecem a manutenção. – Recursos dinamicamente escaláveis; – Oferta e demanda através da Internet. ● Principais Nuvens – Industria: Google App Engine, Amazon, Windows Azure, Salesforce. – Academia: Magellan, FutureGrid. – Middleware para nuvem: Nimbus, Eucalyptus, OpenNebula.

Referências ● Slides do Professor Flávio R. C. Sousa. “Introdução a Sistemas Distribuídos”. Sistemas Distribuídos. Universidade Federal do Ceará. ● Slides do Professor Alexandre Nóbrega Duarte. “Introdução aos Sistemas Distribuídos”. Computação Intensiva em Dados. Universidade Federal da Paraíba. ● “Distributed Systems: Concepts and Design.” Third Edition. Coulouris, G.; Dollimore, J.; Kindberg, T.

Quais são as vantagens e desvantagens dos sistemas distribuídos?

Melhor relação custo/benéfico; Maior capacidade de processamento; Page 2 • Maior domínio de aplicações; • Maior confiabilidade; • Maior disponibilidade; • Crescimento gradativo de sua capacidade de processamento. Desvantagens dos sistemas de informação distribuídos sobre os sistemas de informação centralizados.

Quais as vantagens de um sistema distribuído?

A grande vantagem dos Sistemas Distribuídos é poder, com computadores baratos e de baixo processamento, formar um supercomputador que normalmente sairia muito caro.

São desvantagens dos sistemas distribuídos?

Principais desvantagens: Complexidade - este é um dos problemas mais difíceis de resolver em toda computação, coordenar tudo é complicado, custa caro em todos os sentidos e a chance de algo dar errado no processo é grande.

Quais as principais características dos sistemas distribuídos?

Um sistema distribuído é uma coleção de programas de computador que utilizam recursos computacionais em vários pontos centrais de computação diferentes para atingir um objetivo comum e compartilhado. Os sistemas distribuídos visam remover gargalos ou pontos centrais de falha de um sistema.