Você está na página 1de 42

INTRODUÇÃO

As melhorias que ocorreram na tecnologia de computadores nos


últimos 50 anos é muito grande, sem precedentes em outros
setores

Rapidamente passamos de máquinas que custavam 100 milhões de


dólares e executavam 1 instrução por segundo, para máquinas que custam
1000 dólares e são capazes de executar 10 milhões de instruções por
segundo

Hoje em dia o computador mais rápido do mundo é o Tianhe-2. Sua


capacidade foi medida em 33.86 petaflop/s

Comparando com o avanço na área automobilística, um Rolls


Royce deveria custar 1 dólar!
INTRODUÇÃO

Dois importantes avanços na tecnologia de computadores


surgiram na década de 80

Desenvolvimento de microprocessadores poderosos

Invenção de redes de interconexão de alta velocidade

Assim, foi possível montar sistemas de computadores


compostos por grandes quantidades de componentes
conectados por uma rede de alta velocidade.
DEFINIÇÃO

Um sistema distribuído é uma coleção de


computadores independentes que é visto pelo
usuário como um sistema único

Cada computador funciona independentemente de fazer parte ou


não do SD conjunto de componentes autônomos

O usuário não tem ciência que há diversos computadores, nem


onde estes estão localizados ideia de sistema único

Os componentes autônomos do sistema precisam colaborar


COMPUTAÇÃO DISTRIBUÍDA

A computação distribuída envolve o projeto, implementação


e avaliação de algoritmos que executam em processadores
distintos, interconectados por meio de canais de
comunicação

Cenários de SDs: telecomunicações, serviços Web,


computação científica, controle de processos de tempo real,
“cidades inteligentes", etc.
PRINCIPAIS CARACTERÍSTICAS

A diferença entre os componentes e o modo como estes se


conectam estão em grande parte ocultas ao usuário

Os usuários e programas podem interagir com o SD de


maneira uniforme e consistente independentemente de onde
a interação ocorra

Desde poderosos computadores até nós de sensores podem


compor um SD

Os sistemas distribuídos devem ser fáceis de expandir e


escalar
PRINCIPAIS CARACTERÍSTICAS

Usuários não devem notar quando partes do sistema estão


sendo trocadas, adicionadas ou reparadas

A ideia é que o SD esteja continuamente disponível, ainda que


algumas de suas partes estejam desligadas.

Para suportar componentes e interconexões heterogêneas e


fornecer a visão de um sistema único, os SDs costumam ser
organizados por meio de uma camada de software chamada
de middleware
SISTEMA DISTRIBUÍDO

Uma camada de SW é logicamente colocada entre o


usuário/aplicação e o sistema operacional Middleware
EXEMPLOS
Sistema que suporta um processamento automático de pedidos

Os usuários do departamento de vendas podem estar distribuídos


por todo país

Pedidos são feitos de notebooks ou celulares conectados através


da rede

Os pedidos chegam, são processados e enviados


automaticamente para algum setor disponível

Usuários não sabem por onde os pedidos navegam pelo sistema

Para os usuários, o sistema parece que opera com um único


banco de dados centralizado
EXEMPLOS
Internet

A internet oferece um modelo uniforme e consistente de


documentos distribuídos

Para ver um documento, o usuário necessita apenas ativar a


referência

Não há necessidade de saber de qual servidor vem o documento

Publicar um documento é simples, basta que ele tenha um nome


único

Neste caso, a Internet pode ser vista pelo usuário como um


enorme sistema centralizado de documentos
OBJETIVOS
Conectar usuários e recursos

Transparência

Abertura

Escalabilidade

Um SD deve oferecer fácil acesso aos recursos; deve


ocultar razoavelmente bem o fato que os recursos são
distribuídos; deve ser aberto e deve poder ser
expandido.
OBJETIVOS
Conectar usuários e recursos

Permitir que recursos remotos sejam facilmente acessados e


compartilhados com outros usuários de maneira controlada

Impressoras, computadores, dados, arquivos, redes,


páginas web, etc

Uma razão óbvia para o compartilhamento de recursos é a


economia

Conectar usuários torna mais fácil a colaboração e troca de


informações entre eles

A medida que o compartilhamento e a conectividade aumenta a


segurança se torna mais importante
OBJETIVOS

Alguns problemas de segurança:

Compra com cartão de crédito não se comprova que o


comprador é mesmo o dono do cartão, basta conhecer os
números

Rastreamento de comunicações para montar um perfil de


preferências de um usuário violação explícita de privacidade

Malas direta sem permissão


OBJETIVOS
Transparência

Uma meta importante de um SD é esconder de usuários e


aplicações que os recursos estão fisicamente distribuídos através
de várias plataformas

Um SD que é capaz de se apresentar como um único sistema de


computador é denominado transparente

Existem diferentes tipos de transparência em Sistemas


Distribuídos

Porém, uma questão mais importante é definir se a transparência é


sempre requerida. Isto é, se sempre vale a pena “pagar” por esta
característica.
OBJETIVOS
Transparência Descrição

Oculta diferenças na representação de dados e no


Acesso
modo de acesso a um recurso
Localização Oculta o lugar onde o recurso está localizado
Oculta que um recurso pode ser movido para outra
Migração
localização
Oculta que um recurso pode ser movido para outra
Realocação
localização enquanto ele está sendo usado

Replicação Oculta que um recurso é replicado

Oculta que um recurso pode ser compartilhado por


Concorrência
diversos usuários

Falhas Oculta a falha e a recuperação de um recurso


TRANSPARÊNCIA DE ACESSO

Um SD pode ter sistemas de computação que executam


diferentes sistemas operacionais e possuem máquinas com
diferentes tipos de arquiteturas

Deve existir um acordo sobre como os dados devem ser


representados por máquinas e SOs diferentes

Por exemplo, cada sistema operacional pode possuir suas


próprias convenções para nomeação de arquivos

Diferenças entre nomeação e o modo como os arquivos devem


ser manipulados devem ser ocultos aos usuários
TRANSPARÊNCIA DE LOCALIZAÇÃO

A nomeação em sistemas distribuídos desempenha papel


importante para se conseguir transparência de localização.

Assim, pode-se atribuir nomes lógicos aos recursos.

Os nomes lógicos não indicam a localização de um recurso

Exemplo: www.prenhall.com/index.html

A URL não dá nenhuma pista sobre a localização do servidor


WEB da Prentice Hall
TRANSPARÊNCIA DE MIGRAÇÃO

Acontece quando um recurso é migrado em tempo de


execução e o usuário não percebe esta mudança.

Exemplo: Uso móvel de Laptop, cujos usuários podem


continuar a usá-lo quando vão de um lugar para outro, sem
nem ao menos se desconectarem temporariamente.
TRANSPARÊNCIA DE REALOCAÇÃO

Esta transparência ocorre, quando os recursos podem ser


movimentados sem afetar o modo como eles podem ser
acessados.

Exemplo: www.prenhall.com/index.html

Não é possível determinar se o recurso index.html sempre


esteve na mesma localização ou se foi movido recentemente.
TRANSPARÊNCIA DE REPLICAÇÃO

A replicação é importante para aumentar a disponibilidade


ou aumentar o desempenho do sistema.

Para ocultar a replicação, é necessário que todas as réplicas


tenham o mesmo nome

Normalmente um SD que oferece transparência de


replicação também oferece transparência de localização,
pois caso contrário seria impossível se referir às réplicas em
diferentes localizações.
TRANSPARÊNCIA DE CONCORRÊNCIA

Uma das metas de um SD é fornecer compartilhamento de


recursos

Na transparência de concorrência deve se considerar que o


acesso concorrente a um recurso deve deixá-lo em estado
consistente

Para isso, deve se usar mecanismos que dão a cada


usuário, um por vez, acesso exclusivo ao recurso desejado
TRANSPARÊNCIA DE FALHA

O usuário não deve perceber que um recurso deixou de


funcionar bem, ou que o sistema está se recuperando de
uma falha.

É difícil de se implementar

O sistema é incapaz de distinguir entre um recurso morto ou


insuportavelmente lento
GRAU DE TRANSPARÊNCIA

Um sistema distribuído totalmente transparente é desejável?

A transparência total é uma boa meta de projeto, mas deve


ser considerada com outras questões como:

Desempenho do sistema

Facilidade de compreensão

Quando o usuário conhece as limitações do sistema,


decorrentes do mesmo ser distribuído, ele possuirá maior
compreensão para entender o comportamento inesperado
de um SD
EXEMPLOS

Situações em que tentar ocultar completamente os aspectos


da distribuição para os usuário não é uma boa ideia.

Em um SD de longa distância que conecta processos em São


Francisco a Amsterdã, por exemplo, não é possível enviar
mensagens em menos de 35 ms.

Dependendo da rede pode demorar centenas de milissegundos.

Além de considerar a velocidade de transmissão que é limitada


pela velocidade da luz, existe a capacidade de processamento
dos componentes intermediários.
EXEMPLOS

Situações em que tentar ocultar completamente os aspectos


da distribuição para os usuário não é uma boa ideia.

Garantir que várias réplicas intercontinentais sejam consistentes


o tempo todo.

Uma única operação de atualização pode demorar alguns


segundos

Algo que não pode ser escondido do usuário


EXEMPLOS

Situações em que tentar ocultar completamente os aspectos


da distribuição para os usuário não é uma boa ideia.

Crescimento do uso de dispositivos móveis tornam a noção de


localização e contexto cada vez mais importante.

Pra uma secretária é melhor enviar o trabalho para a impressora


ocupada mais próxima, ou desocupada em um país diferente?
OBJETIVOS

Abertura

Sistemas abertos se caracterizam pelo fato de terem suas


interfaces especificadas e publicadas

Um sistema aberto oferece serviços de acordo com regras


padronizadas que descrevem a sintaxe e semântica destes
serviços

Em redes de computadores as regras são formalizadas através


de protocolos
OBJETIVOS

Abertura

Os serviços são especificados por meio de interfaces

Uso da IDL (Interface Definition Language)

Sintaxe especifica com precisão os nomes das funções


que estão disponíveis, tipos dos parâmetros, valores de
retorno, e possíveis exceções que podem surgir.

Semântica feita normalmente em linguagem natural.


OBJETIVOS

Abertura

Especificações devem ser completas e neutras.

Completa indica que tudo que é necessário para uma


implementação, foi especificado.

Neutras refere-se ao fato de que as especificações não


indicam como deve ser a aparência da implementação.

Completude e neutralidade são importantes para


interoperabilidade e portabilidade
OBJETIVOS

Interoperabilidade: até que ponto 2 implementações de


fornecedores diferentes podem coexistir e trabalhar em
conjunto com base na mera confiança mútua.

Portabilidade: até que ponto uma aplicação


desenvolvida para o SD A, pode ser executada sem
modificações em um SD B, que implementa as mesmas
interfaces de A.
OBJETIVOS

Para conseguir flexibilidade em um sistema distribuído


aberto, é importante que ele seja organizado como um
conjunto de componentes relativamente pequenos e de fácil
substituição ou adaptação

Devem ser definidas não somente interfaces de nível mais


alto, mas também definições de interface das partes internas
do sistema e como elas interagem
OBJETIVOS

Escalabilidade

Capacidade de aumentar e manter o desempenho satisfatório

Pode ser medida através de 3 dimensões:

Tamanho: adicionar mais usuários ou recursos

Geografia: usuários e recursos podem estar separados por grandes


distâncias

Administração: fácil de gerenciar mesmo que tenha várias


organizações administrativas diferentes
PROBLEMAS DE ESCALABILIDADE - TAMANHO

Serviços, dados ou algoritmos centralizados podem ser um


gargalo quando o número de usuários aumenta
PROBLEMAS DE ESCALABILIDADE - TAMANHO

O servidor normalmente se transforma no gargalo à medida


que o número de usuários e aplicações cresce.

Mesmo que tenhamos capacidade de armazenamento e


processamento ilimitados a comunicação com o servidor
acaba impedindo o crescimento.

As vezes é inevitável oferecer um serviço centralizado:


Considere um sistema com informações médicas confidenciais
ou de contas de banco.
Por questões de segurança é mais fácil gerenciar o serviço em
um único servidor.
PROBLEMAS DE ESCALABILIDADE - TAMANHO

Algoritmos Centralizados sobrecarregam o sistema além de


criarem um único ponto de falha.

Devem ser usados algoritmos descentralizados


Nenhuma máquina tem informações completas sobre o estado
do sistema.
As máquinas tomam decisões tendo como base somente
informações locais.
A falha de uma máquina não arruína o algoritmo.
Não há nenhuma premissa implícita quanto à existência de um
relógio global
PROBLEMAS DE ESCALABILIDADE - GEOGRÁFICA

Impossível prover comunicação síncrona para grandes


distâncias.

Comunicação em redes de longa distância não é confiável e


quase sempre é ponto a ponto.

Soluções centralizadas atrapalham a escalabilidade de


tamanho.
Imagine um único servidor de correios utilizado em um país
inteiro.
Ao enviar um email ao seu vizinho, ele primeiro viajaria até o
servidor central com certeza não é o melhor caminho
PROBLEMAS DE ESCALABILIDADE - ADMINISTRATIVA

Um problema importante é resolver políticas conflitantes em


relação a utilização/pagamento de recursos, gerenciamento
e segurança

Quando um SD se expande pra um outro domínio, é preciso


tomar medidas de segurança:

O SD tem que se proteger contra ataques maliciosos do novo


domínio e vice-versa

O problema é como impor as limitações de segurança


TÉCNICAS DE ESCALABILIDADE

Como tentar resolver os problemas de escalabilidade de


maneira geral?

Os problemas de escalabilidade normalmente aparecem


como problemas de desempenho causados por capacidade
limitada de servidores e rede

Existem basicamente três técnicas para ampliar sistemas:

Ocultar latências de comunicação

Distribuição

Replicação
TÉCNICAS DE ESCALABILIDADE
Uma maneira importante de lidar com a escalabilidade
geográfica é ocultar latências de comunicação.

Tipicamente SD baseados em redes locais utilizam


comunicação síncrona Em um sistema de larga escala e
longas distâncias isto seria impraticável

A ideia é simples: utilizar comunicação assíncrona e tentar


evitar esperar por respostas a requisições remotas.
TÉCNICAS DE ESCALABILIDADE

Ocultar latência de Comunicação


TÉCNICAS DE ESCALABILIDADE

Distribuição: envolve subdividir um componente em partes


menores, e espalhar esses componentes pelo sistema.
TÉCNICAS DE ESCALABILIDADE

Replicação

Replicar componentes em um SD aumenta a disponibilidade e


ajuda a equilibrar a carga entre os componentes
aumentando o desempenho

Por exemplo, em um SD de longa distância, uma cópia por


perto pode diminuir bastante os problemas de latência

Replicação e Utilização de cache geram um outro problema: a


consistência dos dados
PRINCIPAIS CILADAS

Premissas falsas adotadas ao desenvolver uma aplicação


distribuída pela primeira vez
1. A rede é confiável

2. A rede é segura

3. A rede é homogênea

4. A topologia não muda

5. A latência é zero

6. A largura da banda é infinita

7. O custo de transporte é zero

8. Há apenas um administrador

Você também pode gostar