Buscar

Sistemas distribuidos Parte1

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
Sistemas Distribuídos
Prof. Flávio Euripedes de Oliveira
Introdução
*
*
Definição
Um sistema distribuído é um conjunto de computadores independentes, interligados por uma rede de conexão, executando um software distribuído.
Processo
● Executados concorrentemente 
● Interagem para alcançar um objetivo comum ●Coordenação feita através de troca de mensagens, utilizando a rede de conexão
*
Definição
Um sistema distribuído é uma coleção de computadores autônomos conectados por uma rede de comunicação que é percebida pelos usuários como um único computador que provê um serviço ou resolve um problema.(Tanenbaum & Steen, 2002)
Um sistema distribuído é composto por computadores conectados em rede (hardware e software) que se comunicam e coordenam suas ações somente através do envio de mensagens.(Coulouris et al., 2001)
*
*
Definição
“Você sabe que existe um sistema distribuído quando a falha de um computador que você nunca ouviu falar impede que você faça qualquer trabalho”. (Leslie Lamport)
*
*
Evolução Computacional
Invenção de redes de computadores de alta velocidade (anos 70): 
Rede local (Local Area Network - LAN) 
Rede global (Wide Area Network - WAN) 
Desenvolvimento de microprocessadores potentes (anos 80).
*
*
Sistemas Distribuídos
É relativamente fácil agrupar um grande número de CPUs, conectando-as por uma rede de alta velocidade.
O software para sistemas distribuídos é completamente diferente do software para sistemas centralizados.
*
*
Por quê SDs?
Vantagens:
Cooperação e compartilhamento de recursos
Benefícios: 
Redução de custos, aumento da confiabilidade, disponibilidade e desempenho
*
*
Qual é a Importância?
*
*
Exemplo1: WEB
*
*
Exemplo2: Bancos
*
*
Exemplo3: Napster
*
*
Exemplo3: Outros Exemplos
Similares ao NAPSTER
EMULE
BITORRENT
SKYPE (VoIP)
MSN MESSENGER, YAHOO
Outros
APLICAÇÕES DE MULTIMÍDIA
WEB conferência
Difusão de streams on-line (voz, vídeo)
*
*
Exemplo4: Cluster(1)
CLUSTERS ou AGRUPAMENTOS
Máquinas conectadas por rede de alta velocidade 
Necessidade de alto desempenho computacional 
Evitar custo de máquinas de alto desempenho
Objetivo: compartilhar recursos computacionais
De processamento
De armazenamento
De memória
Outros
*
*
Exemplo4: Cluster(2)
*
JAGUAR 
Cluster de máquinas do Oak Ridge National Laboratory (EUA)
Primeiro da lista dos TOP 500 SUPERCOMPUTERS
 INSTALADO EM 2009 
224.162 CORES 1.759.000 Gflops
FONTE http://www.top500.org/list/2010/06/100 
Solução: agrupamento físico de máquinas de menor porte = cluster:
•Mesmo espaço geográfico 
•Normalmente dentro da mesma organização, com software/hardware homogêneos 
•Softwares: OpenMosix, Condor e Oscar
Cluster atual:
https://tecnoblog.net/104684/ibm-sequoia-supercomputador/
http://www.top500.org/list
*
Exemplo4: Cluster(3)
Clusters são utilizados para...
Aumentar a disponibilidade de serviço 
se um nodo falha, outro assume
Equilibrar carga de trabalho 
um ou mais computadores do cluster atuam como distribuidores da carga entre os demais
Alto desempenho 
Para resolver tarefas complexas que podem ser decompostas em sub-tarefas, cada uma rodando num nodo do cluster.
Implementação mais comum: LINUX e software livre para implementar paralelismo = Beowulf cluster
*
*
Exemplo5: Grid(1)
GRID ou GRADE= as máquinas encontram-se distantes geograficamente.
É uma cooperativa de máquinas 
não pertencem necessariamente a mesma organização!
são ditas organizações virtuais 
não há administração central dos recursos computacionais 
utilização de protocolos/padrões aberto
*
*
Exemplo5: Grid(2)
Aplicações
Tarefas complexas decompostas
Reunião dos resultados parciais
Exemplos de grids de pesquisa 
Laboratório Nacional de Computação Científica: 
http://portalvcg.lncc.br/
Campina Grande: http://ourgrid.org
*
*
Exemplo5: Grid(3)
Exemplos – participação de qualquer usuário final
World Community Grid: http://www.worldcommunitygrid.org
Identificar quais defeitos em proteínas produzidas pelos genes humanos podem causar doenças
Utiliza BOINC (Mensura quanto cada usuário contribuiu)
TeraGrid da universidade de Purdue (www.teragrid.org)
BBC Climate Change Experiment: http://climateprediction.net/ 
Tentativa de prever o clima para o século 21
Utiliza BOINC
*
*
Razões para construir um SD 
Desempenho > sistema centralizado 
Distribuição natural das aplicações: bancárias, videoconf., etc. 
Robustez: frente a falhas
Escalabilidade: sist. pode ser aumentado sem perda de desempenho? 
Compartilhamento de recursos
Impressoras e outros hardwares 
Arquivos (inclusive páginas Web) 
CPU 
Memória 
Espaço em disco 
Dados
*
*
Dificuldades:
O desenvolvimento de um sistema distribuído é mais complexo do que um centralizado
*
*
Exemplo:
Baseando-se no exemplo da aplicação bancária mostrada no início destes slides e considerando que:
Há acessos múltiplos (concorrentes) à mesma conta;
Transações bancárias podem envolver contas armazenadas em diferentes bancos de dados (BD);
Não interessa ao cliente se os dados de sua conta estão armazenados no BD1 ou BD2
pode-se concluir que as características importantes para este tipo de sistema são...
*
*
Exemplo:
Acessos múltiplos (concorrentes) à mesma conta: vários usuários acessam a mesma conta ou um sistema do banco (emissão de relatórios) acessa ao mesmo tempo em que usuários realizam transações.
Transações bancárias podem envolver contas armazenadas em diferentes bancos ou localidades.
O serviço deve ser transparente ao usuário –não interessa se os dados de sua conta estão armazenados no banco 1 ou banco 2, a aplicação não deve em nenhum momento deixar transparecer aspectos internos do sistema
O serviço deve ser confiável e seguro
Bases de dados replicadas devem ser consistentes
Tolerância a falhas 
*
*
Como lidar com a Heterogeneidade?
Sistemas distribuídos costumam ser organizados por meio de uma camada de software
 
MIDLLEWARE 
Situado logicamente entre uma camada de nível mais alto, composta de usuários e aplicações, e uma camada adjacente (SOs e comunicação)
*
*
Middleware
Oculta a distribuição, isto é, o fato que a aplicação está sendo executada em diferentes máquinas distribuídas geograficamente
Oculta a heterogeneidade: diferentes sistemas operacionais, diferentes protocolos de comunicação
*
*
Middleware
*
*
Metas: 
Acesso a recursos
Transparência
Abertura
Escalabilidade
*
*
Meta I – Acesso a Recursos
Facilitar aos usuários e aplicações acesso a recursos remotos e o compartilhamento de maneira controlada e eficiente.
● Razão óbvia: Economia 
● Impressoras, computadores, dados, página Web 
●Conectividade e compartilhamento de informações
Problema: Segurança
*
*
Meta II – Transparência da Distribuição (1/8) 
Consiste em ocultar o fato de que os processos e recursos estão fisicamente distribuídos por vários computadores.
*
*
Meta II – Transparência da Distribuição (2/8) 
Tipos:
*
*
Meta II – Transparência da Distribuição (3/8) 
Acesso:
Ocultar diferenças entre arquiteturas de máquinas
Mais importante: Acordo sobre como os dados devem ser representados
Exemplo: Nomeação de arquivos em SOs diferentes
*
*
Meta II – Transparência da Distribuição (4/8) 
Localização:
Usuários não são capazes de dizer a localização física do recurso 
Nomeação 
www.google.com → nome não dá pistas da localização física de um dos servidores google 
( Não vale adotar o comando traceroute ! :) ) 
*
*
Meta II – Transparência da Distribuição (5/8) 
Migração: 
Recursos podem ser movimentados sem afetar o modo como podem ser acessados 
Exemplo: Mudança de um servidor WEB 
Relocação: 
Recursos podem ser relocados enquanto estão sendo acessados 
Exemplos:
 uso móvel de laptops (redes
wireless)
Celular se movimentando dentro da mesma área de cobertura 
*
*
Meta II – Transparência da Distribuição (6/8) 
Replicação:
Permite que várias instâncias de recursos sejam usadas para aumentar a confiabilidade e o desempenho ;
Deve mascarar o conhecimento das réplicas por parte dos usuários;
*
*
Meta II – Transparência da Distribuição (7/8) 
Concorrência:
Ocultar o fato que 2 ou mais usuários estejam acessando um recurso no mesmo instante;
Deve garantir consistência.
Falha:
Ocultar do usuário que um recurso deixou de funcionar bem e que o sistema se recuperou da falha.
Mascarar falhas é uma das questões mais difíceis.
*
*
Meta II – Transparência da Distribuição (8/8) 
Sempre Requerida?
Bela meta no projeto e na implementação de sistemas distribuídos, mas deve ser considerada em conjunto com outras questões, como desempenho e facilidade de compreensão.
Exemplo: Aplicações de Internet tentam contatar um servidor repetidas vezes antes de desistir. Talvez seja melhor desistir mais cedo ou permitir que o usuário cancele as tentativas 
*
*
Meta III – Abertura
Característica que determina se um sistema pode ser estendido de diferentes maneiras 
Hardware
 - Inclusão de dispositivos de fabricantes distintos 
Software
–Módulos de SO 
–Protocolos de Comunicação 
–Recursos compartilhados
*
*
Meta III – Abertura
SD abertos baseiam-se em: 
Mecanismos de comunicação uniformes
Especificados por organismos tais como OMG e IETF 
Ex. CORBA (OMG)
Publicação de interfaces de serviços: 
para esconder a heterogeneidade de implementação dos serviços, as implementações devem aderir a uma forma de publicar as interfaces dos serviços
*
*
Meta III – Abertura
CORBA (abreviado de Common Object Request Broker Architecture) é a arquitetura padrão criada pelo Object Management Group para estabelecer e simplificar a troca de dados entre sistemas distribuídos heterogêneos. 
Em face da diversidade de hardware e software que encontramos atualmente, a CORBA atua de modo que os objetos (componentes dos softwares) possam se comunicar de forma transparente ao usuário, mesmo que para isso seja necessário interoperar com outro software, em outro sistema operacional e em outra ferramenta de desenvolvimento. 
CORBA é um dos modelos mais populares de objetos distribuídos, juntamente com o DCOM, formato proprietário da Microsoft.
*
Meta III – Abertura
ORB
A arquitetura CORBA define o ORB (Object Request Broker) como um módulo intermediário entre cliente e objeto, sendo responsável em aceitar a requisição do cliente, enviá-la para o objeto competente e, assim que disponível a resposta, entregá-la para o cliente.
IDL
A CORBA utiliza a IDL (Interface Definition Language), uma linguagem baseada em C++ que não possui algoritmos nem variáveis, ou seja, é puramente declarativa, e, portanto, é independente da linguagem de programação utilizada para acessá-la. Há padrão de IDL definido pelo OMG para C, C++, Java, TTCN, COBOL, Smalltalk, Ada, Lisp, C#, Python e IDLscript. Possibilita a interoperabilidade entre os diversos sistemas, visto a separação que é definida entre interface e execução. A interface de cada objeto é definida de forma bastante específica, enquanto a sua execução (código fonte e dados) permanece oculta para o resto do sistema.
*
Meta III – Abertura
Interoperabilidade:
Caracteriza até que ponto duas implementações de sistemas ou componentes de fornecedores diferentes devem coexistir e trabalhar em conjunto 
Portabilidade: 
Caracteriza até que ponto uma aplicação desenvolvida para uma sistema distribuído A pode ser executada, sem modificação, em um sistema distribuído diferente B que implementa as mesmas interfaces que A
*
*
Meta IV – Escalabilidade
Um SD é escalável se, ao adicionarmos novos recursos e usuários, seu desempenho permanece satisfatório.
Exemplos: 
Endereços IPv4 de 32 bits => IPv6 128 bits
DNS, no início, era uma tabela => foi particionada e é tratada localmente contendo replicações.
Técnicas para garantir escalabilidade:
Replicação de dados
Caching
Replicação de serviços
*
*
Meta IV – Escalabilidade
Três Dimensões 
Tamanho 
Termos Geográficos 
Termos Administrativos
*
*
Meta IV – Escalabilidade:
Tamanho
Aumento do número de usuários e/ou processos
PROBLEMAS
*
Meta IV – Escalabilidade:
Tamanho
Serviços Centralizados 
Serviços que são implementados por meio de apenas um único servidor que executa em uma máquina específica no sistema distribuído
Possível Gargalho no sistema
*
*
Meta IV – Escalabilidade:
Tamanho
Dados Centralizados 
Números telefônicos estivessem em um único banco de dados → saturação de todas as linhas de comunicação que o acessam 
DNS
*
*
Meta IV – Escalabilidade:
Tamanho
Algoritmos Centralizados 
Para evitar troca de mensagens → colher informações de todas as máquinas e linhas e executar um algoritmo para computar todas as rotas ótimas → propagar as informações por todo o sistema 
Péssima idéia!!
*
*
Meta IV – Escalabilidade:
Termos Geográficos
Usuários e/ou recursos podem estar longe um dos outros 
PROBLEMAS 
Dificuldade de ampliar sistemas distribuidos existentes que foram originalmente projetados para redes locais: COMUNICAÇÃO SÍNCRONA
Comunicação em redes de longa distância é inerentemente não confiável, ponto-a-ponto
Localização de serviços 
*
*
Meta IV – Escalabilidade:
Administrativa
Sistema pode ser fácil de gerenciar, mesmo que abranja muitas organizações diferentes 
PROBLEMAS 
Políticas conflitantes em relação a utilização – e pagamento – de recursos, gerencialmente e segurança
*
*
Meta IV – Escalabilidade:
Administrativa
Os usuários de um único domínio podem confiar em componentes de um sistema distribuído que residam dentro desse mesmo domínio.
Confiança não ultrapassa as fronteiras do domínio: a administração do sistema deve testar e certificar aplicações e tomar providências especiais para garantir que os componentes não sofram nenhuma ação indevida.
*
*
Meta IV – Escalabilidade
Três técnicas
Ocultar latências de comunicação 
Distribuição 
Replicação
*
*
Técnicas de Escalabilidade: Ocultar Latências
Escalabilidade Geográfica
Evitar esperar por respostas a requisições remotas 
Comunicação Assíncrona
*
*
Técnicas de Escalabilidade: Ocultar Latências
Aplicações Interativas devem esperar por uma resposta 
Solução: Reduzir comunicação global, passando parte da computação do servidor para o cliente que está requerendo o serviço
*
*
Técnicas de Escalabilidade: Ocultar Latências
Exemplo: Acesso a banco de dados por meio de formulários
*
*
Técnicas de Escalabilidade: Distribuição
Escalabilidade de Tamanho
Dividir um componente em partes menores e espalhar as sub-partes pelo sistema
*
*
Técnicas de Escalabilidade: Distribuição
Exemplo: DNS: hierarquia em árvore de domínios, dividida em zonas se sobreposição
*
*
Técnicas de Escalabilidade: Replicação
Aumenta a disponibilidade dos recursos 
Equilibra a carga entre os componentes 
Sistemas com ampla dispersão geográfica ->ocultar os problemas de latência 
Cache 
Forma especial de replicação 
Cache é uma decisão do cliente do sistema
*
*
Ciladas
Premissas falsas adotadas ao se desenvolver pela primeira vez uma aplicação distribuída
Rede é confiável 
Rede é segura 
Rede é homogênea 
Topologia constante 
Latência zero 
Largura de banda é infinita 
Custo de Transporte é zero 
Existe somente um administrador
*
*
Tipos de Sistemas Distribuídos:
Sistemas de Computação 
Sistemas de Informação 
Sistemas Pervasivos
*
*
Tipos: Sistemas de Computação
Computação de Cluster
Computação em Grade
*
*
Sistemas de Computação: Cluster
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
*
*
Sistemas de Computação: Cluster
*
*
Sistemas de Computação: Grade
Heterogeneidade 
Recursos de diferentes organizações são reunidos para permitir a colaboração de um grupo de pessoas ou instituições 
*
*
Sistemas de Informação
Sistemas empresariais desenvolvidos para integrar diversas aplicações individuais, onde a interoperabilidade se mostrou “dolorosa”
Sistemas de processamento de Transações
Integração de Aplicações Empresariais
*
*
Sistemas de Informação: Processamento de Transações
Requer primitivas especiais que devem ser fornecidas pelo sistema distribuído ou pelo sistema de linguagem
*
*
Sistemas de Informação: Processamento de Transações
Características
 
Atômicas: para o mundo exterior, indivisível 
Consistentes: não viola invariantes de sistema 
Isoladas: transações concorrentes não interferem umas com as outras 
Duráveis: uma vez comprometida uma transação, as alterações são permanentes
*
*
Sistemas de Informação: Processamento de Transações
Transação Aninhada
Transação é construída com base em uma quantidade de subtransações
*
*
Sistemas de Informação: Processamento de Transações
No começo, o componente que manipulava transações distribuídas, ou aninhadas, formava o núcleo para integração de aplicações no nível do servidor ou do banco de dados 
Monitor de processamento de transação: permitir que uma aplicação acessasse vários servidores/bancos de dados
*
*
Sistemas de Informação: Processamento de Transações
*
*
Sistemas de Informação: Integração de Aplicações Empresariais
Aplicações querem muito mais em termos de comunicação, não somente modelo de requisição/resposta 
Middleware de Comunicação 
Chamadas de Procedimento Remoto 
Invocações de Método Remoto 
Middleware Orientado a Mensagem
*
*
Sistemas de Informação: Integração de Aplicações Empresariais
*
*
Sistemas de Informação: Integração de Aplicações Empresariais
Chamadas de Procedimento Remoto (RPC) 
Componente de aplicação pode enviar a um outro componente de aplicação 
Requisição e Resposta são empacotadas em mensagens
*
*
Sistemas de Informação: Integração de Aplicações Empresariais
Invocações de Método Remoto (RMI) 
Popularidade da Tecnologia de Objetos 
RMI semelhante a RPC, exceto que funciona com objetos em vez de com aplicações
*
*
Sistemas de Informação: Integração de Aplicações Empresariais
Desvantagens do RPC e RMI: 
Componentes da comunicação devem estar ligados e em funcionamento 
Precisam saber exatamente como se referir um ao outro 
Middleware Orientado a Mensagem (MOM) 
Aplicações enviam mensagens a pontos lógicos de contato 
O Middleware se encarrega de entregar todas as mensagens destinadas a uma aplicação
*
*
Sistemas Pervasivos
Instabilidade é o comportamento esperado destes sistemas 
Dispositivos de computação móveis e embutidos 
Pequenos 
Alimentação por bateria 
Mobilidade Conexão sem fio 
*
*
Sistemas Pervasivos
Parte do nosso entorno 
Ausência geral de controle administrativo humano 
Requisitos para as aplicações pervasivas: 
Adotar mudanças contextuais 
Incentivar composição ad hoc 
Reconhecer compartilhamento como padrão
*
*
Sistemas Distribuídos: Resumo
Altamente difundidos atualmente 
Baseado em um conjunto de diferentes tecnologias 
Entendimento dos conceitos e principiais problemas extremamente importantes para gerenciamento, implementação e programação
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais