Introdução à
Sistemas
Distribuídos
Capítulo 1 – Parte 1
Definição de Sistema Distribuído (SD)
“Um sistema distribuído é uma coleção de computadores
independentes que aparenta ao usuário ser um computador
único.” [Tanenbaum]
Essa definição tem vários aspectos importantes:
• Um SD consiste em componentes;
• Usuários acham que estão tratando com um único sistema;
• Componentes autônomos precisam colaborar;
• Nenhuma premissa em relação ao tipo de computadores;
Avanços Tecnológicos
•
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).
Considerações
•
É 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 e está
apenas começando a se desenvolver.
Exemplos de Sistemas Distribuídos
•
Um rede de computadores de uma empresa.
•
Uma rede bancária, com computadores centrais, agências,
caixas-eletrônicos.
•
Um sistema de reservas, venda e emissão de passagens
aéreas.
•
Um sistema de controle de estoque, vendas e entregas numa
cadeia de lojas.
•
Um portal de informações na internet, com vídeos, músicas,
notícias, chat, previsão do tempo, etc...
Exemplo: Bit Torrent
Vantagens de Sistemas Distribuídos sobre Sistemas
Centralizados
• Melhor relação custo/benefício.
• Capacidade de processamento além dos limites práticos de SC (velocidade da luz, aquecimento).
• Maior confiabilidade e disponibilidade.
• Crescimento gradativo da capacidade de processamento.
• Compartilhamento de dados comuns entre usuários.
• Compartilhamento de recursos de hardware e software.
• Comunicação entre pessoas.
Desvantagens de Sistemas Distribuídos sobre
Sistemas Centralizados
•
Falta de software adequado.
•
Falhas e saturação da rede de comunicação podem eliminar
as vantagens de SD.
•
Segurança pode ser comprometida: fácil acesso a dados e
recursos reservados.
Classificação dos SDs
Sistemas Distribuídos Sistemas Multiprocessadores Sistemas Multicomputadores • A memória é compartilhada. • Fortemente acoplado. • A memória é segregada. • Fracamente acoplado.Sistemas Distribuídos Heterogêneos
•
Sistemas distribuídos costumam ser organizados por meio de
uma camada de software para suportar computadores e
redes heterogêneas e, simultaneamente, oferecer uma visão
de sistema único para o usuário ou aplicação.
Middleware
•
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).
Características de um Middleware
•
Oculta a heterogeneidade: diferenças de Hardware, Protocolos
de Comunicação e Sistemas Operacionais para cada aplicação.
•
Oculta a distribuição, isto é, o fato que a aplicação está sendo
Metas de Sistemas Distribuídos
•
O fato de ser possível montar SDs, não significa que seja
uma boa idéia.
•
Existem 4 metas importantes que devem ser cumpridas na
construção de um sistema distribuído para que valha a pena
o esforço de implementação.
•
Acesso à Recursos;
•
Transparência na distribuição;
•
Abertura;
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!
•
Os recursos remotos podem ser os mais diversos como:
Impressoras, computadores, dados, página Web.
•
Conectividade e compartilhamento de informações.
Transparência da Distribuição
•
Consiste em ocultar o fato de que os processos e recursos
estão fisicamente distribuídos por vários computadores.
•
Tipos:
• Acesso; • Localização; • Migração; • Replicação; • Concorrência;Transparência da Distribuição
Transparência de Acesso
• Ocultar diferenças em representação de dados, e o modo como os recursos podem ser acessados por usuários.
• Exemplo: representação de inteiros little endian, big endian.
• No método little-endian o valor mais significativo é colocado nos bytes de menor numeração. Já no método big-endian o valor mais
significativo é colocado nos bytes de maior numeração, é também conhecido como convenção left-right.
• Por exemplo, o número 104 em little-endian é apresentado na ordem 401 e em big-endian na ordem 104.
Transparência da Distribuição
Transparência de Localização
• Ocultar o lugar em que o recurso está localizado.
• Nomeação: Pode se conseguir
transparência de localização ao se atribuir somente nomes lógicos aos recursos.
Transparência da Distribuição
Transparência de Migração
• Recursos podem ser movimentados sem afetar o modo como podem ser acessados.
• Exemplo: Mudança de um servidor WEB.
Transparência de Relocação
• Recursos podem ser relocados enquanto estão sendo acessados.
• Exemplo: uso móvel de laptops (redes wireless).
Transparência da Distribuição
Transparência de Replicação
• Ocultar o fato de que existem várias cópias de um recurso (redundância).
• Aumentar a disponibilidade, confiabilidade ou melhorar o desempenho.
Transparência da Distribuição
Transparência de Concorrência
• Ocultar o fato que 2 ou mais usuários estejam acessando um recurso no mesmo instante.
• Exemplo: Quantos usuários estão neste momento comprando uma passagem aérea?
Transparência da Distribuição
Transparência à Falha
• Ocultar do usuário que um
recurso deixou de funcionar bem e que o sistema se recuperou da falha.
• A principal dificuldade para mascarar falhas está na
incapacidade de distinguir entre um recurso morto e um recurso que está funcionando de
maneira degradada (lento).
Erro
Transparência da Distribuição
Transparência é 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.
• Nem sempre vale a pena tentar conseguir total transparência, pois o preço que se paga por isso pode ser surpreendentemente alto.
Abertura
•
Um SD aberto é um sistema que oferece serviços de acordo
com regras padronizadas que descrevem a sintaxe e a
semântica desses serviços.
•
Em redes de computadores: Protocolos (regras padronizadas
que governam o formato, o conteúdo e o significado das
mensagens enviadas e recebidas).
•
Em SDs: Linguagem de definição de interface (IDL)
Abertura
Proporciona os seguintes benefícios:
Interoperabilidade
• Caracteriza até que ponto duas implementações de sistemas ou componentes de fornecedores diferentes devem coexistir e trabalharem 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.
Extensibilidade
• Deve ser fácil adicionar novos componentes ou substituir existentes sem afetar os que continuam no mesmo lugar.
Abertura
•
Para se conseguir flexibilidade em SDs abertos é crucial que
o sistema seja organizado como um conjunto de
componentes relativamente pequenos e de fácil substituição
ou adaptação.
•
As interfaces precisam ser bem definidas:
• Interface com o nível mais alto: Usuários e aplicação.
• Interface com partes internas do próprio sistema: Importante descrever como as partes internas de um SD interagem.
Escalabilidade
Um sistema é descrito como escalável se permanece eficiente
quando há um aumento significativo no número de recursos e
usuários. Exemplo: Internet
35.424.956 171.638.297 2003 5.560.866 56.218.000 1999 0 130.000 1989 0 188 1979 Servidores Web Computadores com IP registrados na
Internet Ano
Escalabilidade
Pode ser medida segundo três dimensões:
•
Tamanho: Facilidade em adicionar mais usuários e recursos
ao sistema.
•
Geográfico: Usuários e recursos podem estar longes uns
dos outros.
•
Administrativo: Facilidade de gerenciamento, mesmo que
Problemas de Escalabilidade
Tamanho – Problemas: Servidores Centralizados:
• Utilização de um único servidor: gargalo, à medida que o número de usuários e aplicações cresce.
• Em alguns casos é inevitável.
• Exemplo: Serviço de gerenciamento de informações altamente confidenciais. Copiar o servidor para diversas
localizações pode tornar o serviço menos seguro.
CPD
Área restrita com proteção de segurança
Problemas de Escalabilidade
Tamanho – Problemas: Dados Centralizados:
• Conservação de dados em um único repositório: gargalo
promovido pela saturação em todas as linhas de comunicação que acessam o repositório.
• Exemplo: Cadastro de
endereços e telefones de 50 milhões de pessoas.
Cadastro
Problemas de Escalabilidade
Tamanho – Problemas: Algoritmos Centralizados:
• Evitar troca de mensagens ao colher informações de todas as maquinas executar um algoritmo único propagar as informações por todo o sistema.
• Péssima idéia!! 1. Coleta de Informações 2. Execução de Algoritmo Centralizado 3. Propagação de Informações
Geográfico – Problemas:
• Dificuldade de ampliar sistemas distribuídos existentes que foram originalmente projetados para redes locais: originalmente baseados em comunicação síncrona.
• Comunicação em redes de longa distancia é não confiável e ponto-a-ponto.
• Já as redes locais tem alta
confiança, com base em broadcast
Problemas de Escalabilidade
O computador B pergunta para todas as estações qual está executando o serviço que precisa. As estações que possuírem o serviço respondem ao computador B.
Rede Local
Rede de Longa Distância
A B C D
T U
Administrativo – Problemas:
• Políticas conflitantes em relação à utilização: recursos, gerenciamento e segurança.
• Confiança não ultrapassa as fronteiras do domínio.
• Exemplo: 4 organizações
compartilham um mesmo sistema distribuído. Os usuários da
Organização A confiam nos
componentes que residam dentro de seu domínio.
Problemas de Escalabilidade
Organização A Organização B Organização C Organização D Sistema DistribuídoOcultar latências de comunicação
• Evitar esperar por respostas a requisições remotas
• Solução: Reduzir comunicação global, passando parte da computação do servidor para o cliente que esta requerendo o serviço.
• Exemplo: Acesso a banco de dados por meio de formulários.
• Importante para conseguir Escalabilidade Geográfica
Técnicas de Escalabilidade
(a) O servidor verifica os erros de sintaxe antes de executar uma entrada.
(b) O cliente recebe o código para preencher os formulários e verificar as entradas. O
Distribuição (1/2)
• Dividir um componente em partes menores e espalhar as sub-partes pelo sistema.
• Exemplo: DNS
Distribuição (2/2)
• Como obter o endereço da rede do servidor hospedeiro do endereço nl.vu.cs.flits
Técnicas de Escalabilidade
1) O nome é passado ao servidor da Zona Z1, que retorna o endereço para a Zona Z2 para qual o resto do nome (vu.cs.flits) pode ser entregue.
Replicação
• Aumenta a disponibilidade dos recursos: cópia dos recursos.
• Equilibra a carga entre os componentes: melhor desempenho.
• Sistemas com ampla dispersão geográfica: ocultar os problemas de latência com cópias próximas.
E a Escalabilidade Administrativa? • Problemas políticos estão envolvidos
• P2P – usuários finais tomam o controle: Vários problemas de direitos autorais.
Caso Napster
Seu criador visava facilitar a forma como obtinha música
MP3 na Internet.
1999
Série de ações legais e o serviço foi fechado.
2001
Passou a vender as músicas arquivadas aos usuários, com
repasse de direitos autorais.
2002
• Novos programas que faziam o mesmo que o Napster surgiram:
Premissas falsas adotadas ao se desenvolver pela primeira vez um SD: • 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.