SlideShare uma empresa Scribd logo
Introdução
Nosso principal objetivo hoje
Definir o termo Sistemas Distribuídos
Poderiam citar exemplos de
Sistemas Operacionais?
…
● Linux, Win8, Unix, FreeBSD, Mountain, Lion
● 2K, Aegis, Hydra, Mach, SPIN
● OS/2, Express, Flux, Spring
● AntaresOS, EOS, LittleOS, TINOS
● iOS, PalmOS, WinCE, TinyOS, Android
...
Mas o que é um SO?
● Interface de usuário para acesso ao hardware
(device driver)
● Fornece diferentes abstrações (processos,
sistema de arquivos, etc...)
● Gerenciamento de recursos (escalonamento)
● Meios de comunicação (rede de comunicação)
...
Definição no FOLDOC
● Sistema operacional:
– Software de baixo nível responsável pela interface
de manipulação dos periféricos de hardware,
escalonadores de tarefas, dispositivos de
armazenamento, além de fornecer uma interface
padrão aos usuários quando nenhuma aplicação
está em execução sobre o sistema
FOLDOC=Free On-Line Dictionary of Computing
Agora, forneça alguns exemplos de
Sistemas Distribuídos que você
conhece?
● Cliente-servidor NFS
● A Web
● A Internet
● Uma rede sem fio (Wireless)
● DNS
● Gnutella ou BitTorrent (peer-to-peer sobrepostas)
● Uma “cloud”, p. ex. Amazon EC2/S3, Microsoft Azure
● Um datacenter, p. ex. NCSA, Google Datacenter,
PlanetLab
● Sociedade?!
O que é um Sistema Distribuído
● Sistema Distribuído:
– Uma coleção (possivelmente heterogênea) de
elementos de processamento (computador,
celular, palm, etc.) cuja distribuição é transparente
p/ o usuário, que tem uma visão única do
sistema, como se fosse uma máquina local. Essa
definição contrasta com a de uma Rede, na qual o
usuário está ciente de que há várias máquinas e
sua localização, armazenamento, replicação,
balanceamento de carga e outras funcionalidades
não estão transparentes. Sistemas distribuídos,
geralmente, utilizam algum tipo de organização
cliente-servidor.
FOLDOC=Free On-Line Dictionary of Computing
Definição de autores da área
● Tanenbaum & Van Steen:
– “Um sistema distribuído é um conjunto de
computadores independentes que se apresenta
aos seus usuários como um sistema único e
coerente”
● Coulouris et al.:
– “Um sistema cujos componentes de hardware e
de software embutidos em uma rede de
interligação comunicam-se e coordenam suas
ações por meio do paradigma de troca de
mensagens”
Uma definição prática para nós
● Um sistema distribuído é uma coleção de
entidades autônomas, programáveis,
assíncronas e sujeitas a falhas. Comunicam-
se através de uma tecnlogia de transmissão
não confiável.
– Entidade: um processo em um dispositivo (PC,
Celular, Palm, etc.)
– Meio de transmissão: rede com ou sem fio
– Nosso interesse em SDs envolve:
● Projeto e implementação
● Manutenção
● Algoritmos
Definição
● Algumas considerações importantes:
– Presença de componentes autônomos
– Usuários e programas têm a impressão de que o
sistema é único
● Componentes precisam colaborar!
● Para suportar computadores e redes
heterogêneas
– Camadas de softwares
● Middlewares
Exemplos de SD – domínio Web
● Quem são as
entidades?
● Quais os meios de
comunicação?
Exemplos de SD – sistema p2p
Gnutella
● Quem são as entidades?
● Quais os meios de comunicação?
Exemplos de SD – um datacenter
Internet – revisão
● É a base de muitos sistemas distribuídos
● Uma vasta coleção de elementos interligados por
diferentes tipos de redes
● Intranets – subredes que operam em uma empresa
ou organização
● Intranets contêm LANs e outras subredes
● WANs consistem de LANs
● ISPs – empresas que fornecem links e outros tipos
de tecnologias para conexão de usuários
● Intranets estão conectadas a backbones – links de
rede de alta velocidade, tais como satélite, fibra,
circuitos com alta largura de banda
Uma Intranet está sob um sistema
de arquivo distribuído
Um SD está implementado sobre
camadas de rede
Protocolos de SDs Protocolos de Rede
O segredo da WWW: padrão HTTP
● HTTP: hypertext transfer protocol
● Protocolo de camada de aplicação
WWW
● Modelo cliente/servidor
– Cli: navegador solicita, recebe
e apresenta objetos WWW
– Srv: servidor WWW armazena
wesite e envia objetos em
resposta as requisições
● HTTP1.0: RFC 1945
● HTTP1.1: RFC 2068
– Aproveita a mesma conexão
para baixar imagens, scripts,
etc...
Protocolo HTTP
● HTTP: serviço de transporte
TCP
– Cliente inicia uma conexão
TCP (cria um socket) p/ o
servidor, porta 80
– Servidor aceita a conexão
TCP do cliente
– Mensagens HTTP (msgs
de protocolo da camada de
app trocadas entre
navegador (cliente http) e o
servidor WWW (servidor
http))
– Conexão TCP encerrada
● HTTP é stateless
– Servidor não matém
informações sobre
requisições passadas dos
cliente
● Protocolos que mantém
sessões (estado) são
complexos
– Histórico deve ser mantido
e atualizado
– Se cliente/servidor falhar,
suas visões de “estado”
podem ser inconsistentes,
e devem ser resolvidas
– Protocolos RESTful são
stateless
Exemplo HTTP
1a. cliente http inicia
uma conexão TCP c/ o
servidor (processo)
facom.ufms.br na porta
80
2. cliente http envia uma
msg de requisição http
(contendo URL) p/
socket de conexão TCP
1b. servidor http no host
facom.ufms.br aguarda
por uma conexão TCP na
porta 80. Aceita conexões
e notifica cliente
3. servidor http recebe
mensagens de requisição,
monta mensagem de
resposta contendo objetos
solicitados (index.html),
envia mensagem através
do socket
● Considere um usuário acessando a URL:
www.facom.ufms.br Contém texto e
referências a imagens
Tempo
Exemplo HTTP (cont.)
5. cliente http recebe
msg de resposta
contendo arq. html,
objetos, etc
6. etapas 1-5 são
repetidas até que
todos os objetos
estejam no cliente
4. servidor http encerra
conexão TCP
Tempo
Usuário como um navegador
(lado cliente)
1. Telnet no seu servidor WWW:
2. Entre com uma requisição GET HTTP
telnet facom.ufms.br 80
Abre conexão TCP na porta 80
(porta default do servidor) em facom.ufms.br
Tudo que for digitado é enviado p/ porta 80 no
servidor facom.ufms.br
{
GET /index.html HTTP/1.0
telnet facom.ufms.br 80
Ao digitar esse comando, é encaminhada uma
requisição (mínima, porém completa) HTTP
GET ao servidor
{
3. Observe a mensagem de resposta
encaminhada pelo servidor HTTP!
Nossa definição é adequada p/
HTTP WEB?
● Um sistema distribuído é uma coleção de
entidades autônomas, programáveis,
assíncronas e sujeitas a falhas. Comunicam-
se através de uma tecnlogia de transmissão
não confiável.
– Entidade: um processo em um dispositivo (PC,
Celular, Palm, etc.)
– Meio de transmissão: rede com ou sem fio
– Nosso interesse em SDs envolve:
● Projeto e implementação
● Manutenção
● Algoritmos
Questões importantes em SD
● Não há relógio global: sem noção global única
de tempo correto (assíncrono)
● Falhas imprevisíveis em componentes: falta
de resposta pode ser devida a falha na rede,
na entidade, etc.
● Largura de banda variável: 16Kbps a Tbps
● Alta variação de latência: poucos ms a
minutos
● Grande quantidade de hosts: de 2 a milhões
Há uma série de problemas
interessantes p/ projetistas de SDs
● Sistemas distribuídos de tempo real
– Cloud, p2p, armazenamento chave-valor/NoSQL,
sistemas de arquivos distribuídos, redes de
sensores, ...
● Problemas clássicos
– Detecção de falhas, assincronismo, multicast,
consenso, exclusão mútua, eleição, ...
● Concorrência
– RPCs, controle de concorrência, controle de
replicação, ...
● Segurança
● Outros
Arquitetura
● SD permite que componentes de aplicações
comuniquem entre si
● Oculta as diferenças de hardware e tipos de
sistemas operacionais
Características
● Heterogeneidade
● Transparência
● Abertura
● Escalabilidade
● Segurança
Heterogeneidade
● A Internet permite que usuários acessem
serviços e executem apps sobre uma coleção
de redes e computadores heterogêneos:
– Redes de comunicação
– Hardware dos computadores
– Sistemas operacionais
– Linguagens de programação
– Implementações realizadas por diferentes
desenvolvedores
Heterogeneidade
intranet
ISP
desktop computer:
backbone
satellite link
server:
☎
network link:
☎
☎
☎
Heterogeneidade
● O middleware permite abstração da programação bem como a
heterogeneidade de redes, SOs e linguagens de programação
– CORBA
– RMI
– Web Services (SOA)
● Código móvel (mobile code)
– Refere-se a programas que podem ser transferidos e executados no
destinatários
● Applets java
– Máquinas virtuais
● Abordagem que permite a execução de código em diferentes
arquiteturas
– p.ex., compilador java gera código para JVM, executa através da
interpretação
– Outro exemplo: inclusão de códigos Javascript em páginas Web
Transparência
● Ocultar o fato de que seus processos e
recursos estão fisicamente distribuídos por
vários computadores
Transparência
Transparência Descrição
Descrição
Acesso Oculta diferenças na representação de dados e no modo de acesso a um
recurso
Localização Oculta o lugar em que um recurso está localizado
Migração Oculta que um recurso pode ser movido para outra localização
Relocação Oculta que um recurso pode ser movido para outra localização enquanto
em uso
Replicação Oculta que um recurso é replicado
Concorrência Oculta que um recurso pode ser compartilhado por diversos usuários
concorrentes
Falha Oculta a falha e a recuperação de um recurso
Transparência
● Transparência de acesso:
– Sistemas operacionais diferentes, convenções p/
nomeação de arquivos, etc
● Transparência de localização:
– Usuários não têm acesso a localização física dos
recursos: nomes lógicos, URL
● Transparência de migração:
– A URL não dá pistas se sua localização corrente
→ sempre esteve na mesma localização
● Transparência de relocação:
– Uso móvel de laptops, cujos usuários continuam a
usá-los quando vão de um local para outro
Transparência
● Transparência de replicação:
– Aumentar disponibilidade ou desempenho:
sistemas de arquivos distribuídos
● Transparência de concorrência:
– Manter a consistência de recursos
compartilhados: uso de transações
● Transparência a falhas:
– Usuário não percebe que um recurso deixou de
funcionar bem e que, subsequentemente, o
sistema se recuperou da falha. Servidor Web
ocupado.
Abertura
● SD deve oferecer serviços de acordo com regras
padronizadas
– Sintaxe e semântica desses serviços
● Em geral, serviços são especificados por meio de
interfaces
– Completude e neutralidade
● Interoperabilidade
– Até que ponto duas implementações de
sistemas/componentes de fornecedores distintos
devem coexistir e trabalhar em conjunto
● Portabilidade
– Até que ponto uma app desenvolvida por um SD
“A”
“A” pode ser executada, sem modificação, em um
SD “B”
“B”
Escalabilidade
● SDs operam efetivamente em diferentes
escalas, desde pequenas intranets à Internet
● Três dimensões diferentes:
– Tamanho: fácil add usuários e recursos
– Geográfica: usuários e recursos podem estar
dispersos
– Administrativo: gerenciamento simples, mesmo
envolvendo organizações adminstrativas
diferentes
Escalabilidade
● Problemas de escalabilidade:
Conceito
Conceito Exemplo
Exemplo
Serviços centralizados Um único servidor para todos os serviços
Dados centralizados Uma única lista telefônica on-line
Algoritmos centralizados Realizar roteamento com base em informações
completas
● Serviços centralizados:
– gargalo do sistema
● Dados centralizados:
– DNS
● Algoritmos centralizados:
– Em um SD de grande porte, mensagens devem
ser roteados por muitas linhas
Escalabilidade
● Algoritmos centralizados:
– 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 inviabiliza o
algoritmo
– Não há nenhuma premissa implícita quanto à
existência de um relógio global
Escalabilidade
● Comunicação síncrona
– SDs foram originalmente projetados para redes
locais
– Um cliente requisita um serviço e fica bloqueado
até obter uma resposta
– Para redes de longa distância o tempo de
resposta cresce em 3 ordens de grandeza
● Comunicação não confiável
– Políticas conflitantes em relação à utilização
(pagamento) de recursos, gerenciamento e
segurança
Técnicas de escalabilidade
● Problemas de desempenho causados por
capacidade limitada de servidores e rede
● Há três técnicas para ampliar sistemas:
– Ocultar latências de comunicação
– Distribuição
– Replicação
Técnicas de escalabilidade
● Ocultar latências
– Ideia básica: evitar espera por requisições remotas de serviços
– Comunicação assíncrona
● Quando chega uma resposta, a app é interrompida e um
manipulador especial é chamado para concluir a requisição
emitida anteriormente
– Comum em sistemas de lote e computação paralela
– Apps interativas, em geral, não possuem atividades em espera
● Solução é diminuir comunicação global, passar parte da
computação que normalmente é executada no servidor para
o cliente
– Acesso a banco de dados por meio de formulários
● Despacho de código é suportado na Web sob a forma de
applets Java e Javascript (Figura)
Técnicas de escalabilidade
Técnicas de escalabilidade
● Distribuição
– Envolve tomar um componente, subdividi-lo em
partes menores, espalhar essas partes no sistema
– DNS
● Hierarquia em uma árvore de domínios
● Zonas sem sobreposição
Técnicas de escalabilidade
● Distribuição
– Outro exemplo é a Web
● Enorme sistema baseado em documentos
● Fisicamente distribuída por um grande número de
servidores
● O nome do servidor que manipula um documento está
codificado na URL
Técnicas de escalabilidade
● Replicação
– Aumenta a disponibilidade do sistema
– Ajuda a equilibrar a carga entre componentes, o
que pode resultar em melhor desempenho
– Técnicas de cache resultam em fazer uma cópia
de um recurso, em geral na proximidade do
acesso do cliente àquele recurso (decisão do
cliente)
– Ambos podem resultar em problemas de
consistência!
Segurança
● Três componentes fundamentais:
– Confidencialidade: proteção contra indivíduos não
autorizados
– Integridade: proteção contra alterações,
atualizações ou corrupção de dados
– Disponibilidade: proteção contra interferências no
acesso aos recursos
Tipos de sistemas distribuídos
● Sistemas de computação distribuídos
● Sistemas de informação distribuídos
● Sistemas embutidos distribuídos
Sistemas de computação
distribuídos
● Utilizados para tarefas de computação de alto
desempenho (HPC)
– Computação em cluster
– Computação em grid
– Computação em nuvem (será abordada em outra
aula!)
Computação em cluster
● Relação custo/desempenho de computadores
pessoais
● Redes de alta velocidade
● Em geral, empregada para computação
paralela
– Beowulf baseado em Linux
– Mosix adota abordagem simétrica
● Imagem de sistema único, migração de processos
Computação em cluster
Computação em grade
● Alto grau de hetorogeneidade
– Nenhuma premissa é adotada em relação a
hardware, SO, redes, domínios administrativos,
políticas de segurança, etc.
● Diferentes organizações são reunidas para
permitir colaboração entre grupos de pessoas
e intituições
– Organização virtual
– Servidores de computação, supercomputadores,
equipamentos específicos (telescópios),
facilidades de armazenamentos (bancos de dados
distribuídos, sistemas de arquivos distribuídos)
Computação em grade
Computação em grade
● Camada base:
– Provê interfaces para recursos locais
– Permitem compartilhamento de recursos
– Funções de gerenciamento de recursos,
● Consulta estado e capacidade dos recursos
● Camada de conectividade
– Protocolos de comunicação
– Serviços de autenticação e questões de
segurança
Computação em grade
● Camada de recursos
– Responsável pelo gerenciamento de um único
recurso
– Informações sobre configuração de um recurso
específico
– Controle de acesso, pode utilizar serviços da
camada de conectividade
Computação em grade
● Camada coletiva:
– Manipula acessos múltiplos a recursos
– Descoberta de serviços, escalonamento de
tarefas, replicação de dados, etc
● Camada de aplicação
– Aplicações que executam em um organização
virtual e utilizam o ambiente de computação em
grade
Computação em grade
● Tendência atual de migração para uma
“arquitetura orientada a serviços”
– OGSA (Open Grid Service Architecture)
– Consistem de várias camadas e muitos
componentes, em geral, serviços Web
Sistemas de informação distribuídos
● Aplicações empresariais cujos clientes enviam
requisições ao servidores
– Processamento de transações distribuídas
– Integração de apps empresariais
● EAI (Enterprise Application Integration)
Sistemas de processamento de
transações
Sistemas de processamento de
transações
● Propriedades das transações:
– A
Atômicas: indivisível
– C
Consistentes: não viola invariantes do sistema
– I
Isoladas: transações concorrentes não interferem
umas nas outras
– D
Duráveis: uma vez realizada, as alterações são
permanentes
Sistemas de processamento de
transações
Sistemas de processamento de
transações
Integração de apps empresariais
Sistemas distribuídos pervasivos
● Ausência geral de controle administrativo
humano
● Requisitos
– Adotar mudanças contextuais
– Incentivar composição ad hoc
– Reconhecer compartilhamento como padrão
Sistema eletrônico para tratamento
de saúde
● Monitoração de uma pessoa em um sistema
pervasivo
– (a) Hub local
– (b) Conexão contínua sem fio
Redes de sensores
● Questões importantes
– Como montar (dinamicamente) uma árvore
eficiente em uma rede de sensores?
– Como ocorre a agregação de resultados? Ela
pode ser controlada?
– O que acontece quando enlaces de rede falham?
Redes de sensores
● Organizando um BD de rede de sensores
– (a) armazenando e processando dados somente
no site do operador
Redes de sensores
● Organizando um BD de rede de sensores
– (b) armazenando e processando dados somente
nos sensores
Problemas
● Uma definição alternativa para um sistema distribuído: ele é
um conjunto de computadores independentes que fornece a
impressão de ser um sistema único, isto é, o fato de haver
vários computadores fica completamente oculto para os
usuários. Dê um exemplo para o qual essa visão viria muito a
calhar.
● Qual é o papel do middleware em um sistema distribuído?
● Explique o significado de transparência e de exemplos de
diferentes tipos de transparência?
● O que é um sistema distribuído aberto e quais são os
benefícios que a abertura proporciona?
● Descreva o significado de sistema escalável.
● Por que é tão difícil ocultar a ocorrência e a recuperação de
falhas em um sistema distribuído?

Mais conteúdo relacionado

Semelhante a Aula 1 - Introducao.pdf

Sistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidosSistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidos
robsons75
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
Adriano Teixeira de Souza
 
Introducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIntroducao a Sistemas Operacionais
Introducao a Sistemas Operacionais
Isaac Vieira
 
Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a Web
Luiz Cláudio Silva
 

Semelhante a Aula 1 - Introducao.pdf (20)

Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para Web
 
Joaopinheiro
JoaopinheiroJoaopinheiro
Joaopinheiro
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídos
 
Sistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidosSistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidos
 
Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )
Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )
Telematica, tipos de telematica , Autenticacao, Redes virtuais privadas ( VPN )
 
A internet
A internetA internet
A internet
 
A internet
A internetA internet
A internet
 
Referencia de redes.pdf
Referencia de redes.pdfReferencia de redes.pdf
Referencia de redes.pdf
 
Modelo de Referência OSI
Modelo de Referência OSIModelo de Referência OSI
Modelo de Referência OSI
 
Redes2 aula02
Redes2 aula02Redes2 aula02
Redes2 aula02
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
 
Aula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosdsAula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosds
 
Introducao a Sistemas Operacionais
Introducao a Sistemas OperacionaisIntroducao a Sistemas Operacionais
Introducao a Sistemas Operacionais
 
SI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoSI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de Código
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
 
Técnicas de Programação para a Web
Técnicas de Programação para a WebTécnicas de Programação para a Web
Técnicas de Programação para a Web
 
Internet
InternetInternet
Internet
 
Trabalho de informatica slide
Trabalho de informatica slideTrabalho de informatica slide
Trabalho de informatica slide
 
Servidores de Aplicações
Servidores de AplicaçõesServidores de Aplicações
Servidores de Aplicações
 
Sistema
SistemaSistema
Sistema
 

Aula 1 - Introducao.pdf

  • 2. Nosso principal objetivo hoje Definir o termo Sistemas Distribuídos
  • 3. Poderiam citar exemplos de Sistemas Operacionais? … ● Linux, Win8, Unix, FreeBSD, Mountain, Lion ● 2K, Aegis, Hydra, Mach, SPIN ● OS/2, Express, Flux, Spring ● AntaresOS, EOS, LittleOS, TINOS ● iOS, PalmOS, WinCE, TinyOS, Android ...
  • 4. Mas o que é um SO? ● Interface de usuário para acesso ao hardware (device driver) ● Fornece diferentes abstrações (processos, sistema de arquivos, etc...) ● Gerenciamento de recursos (escalonamento) ● Meios de comunicação (rede de comunicação) ...
  • 5. Definição no FOLDOC ● Sistema operacional: – Software de baixo nível responsável pela interface de manipulação dos periféricos de hardware, escalonadores de tarefas, dispositivos de armazenamento, além de fornecer uma interface padrão aos usuários quando nenhuma aplicação está em execução sobre o sistema FOLDOC=Free On-Line Dictionary of Computing
  • 6. Agora, forneça alguns exemplos de Sistemas Distribuídos que você conhece? ● Cliente-servidor NFS ● A Web ● A Internet ● Uma rede sem fio (Wireless) ● DNS ● Gnutella ou BitTorrent (peer-to-peer sobrepostas) ● Uma “cloud”, p. ex. Amazon EC2/S3, Microsoft Azure ● Um datacenter, p. ex. NCSA, Google Datacenter, PlanetLab ● Sociedade?!
  • 7. O que é um Sistema Distribuído ● Sistema Distribuído: – Uma coleção (possivelmente heterogênea) de elementos de processamento (computador, celular, palm, etc.) cuja distribuição é transparente p/ o usuário, que tem uma visão única do sistema, como se fosse uma máquina local. Essa definição contrasta com a de uma Rede, na qual o usuário está ciente de que há várias máquinas e sua localização, armazenamento, replicação, balanceamento de carga e outras funcionalidades não estão transparentes. Sistemas distribuídos, geralmente, utilizam algum tipo de organização cliente-servidor. FOLDOC=Free On-Line Dictionary of Computing
  • 8. Definição de autores da área ● Tanenbaum & Van Steen: – “Um sistema distribuído é um conjunto de computadores independentes que se apresenta aos seus usuários como um sistema único e coerente” ● Coulouris et al.: – “Um sistema cujos componentes de hardware e de software embutidos em uma rede de interligação comunicam-se e coordenam suas ações por meio do paradigma de troca de mensagens”
  • 9. Uma definição prática para nós ● Um sistema distribuído é uma coleção de entidades autônomas, programáveis, assíncronas e sujeitas a falhas. Comunicam- se através de uma tecnlogia de transmissão não confiável. – Entidade: um processo em um dispositivo (PC, Celular, Palm, etc.) – Meio de transmissão: rede com ou sem fio – Nosso interesse em SDs envolve: ● Projeto e implementação ● Manutenção ● Algoritmos
  • 10. Definição ● Algumas considerações importantes: – Presença de componentes autônomos – Usuários e programas têm a impressão de que o sistema é único ● Componentes precisam colaborar! ● Para suportar computadores e redes heterogêneas – Camadas de softwares ● Middlewares
  • 11. Exemplos de SD – domínio Web ● Quem são as entidades? ● Quais os meios de comunicação?
  • 12. Exemplos de SD – sistema p2p Gnutella ● Quem são as entidades? ● Quais os meios de comunicação?
  • 13. Exemplos de SD – um datacenter
  • 14. Internet – revisão ● É a base de muitos sistemas distribuídos ● Uma vasta coleção de elementos interligados por diferentes tipos de redes ● Intranets – subredes que operam em uma empresa ou organização ● Intranets contêm LANs e outras subredes ● WANs consistem de LANs ● ISPs – empresas que fornecem links e outros tipos de tecnologias para conexão de usuários ● Intranets estão conectadas a backbones – links de rede de alta velocidade, tais como satélite, fibra, circuitos com alta largura de banda
  • 15. Uma Intranet está sob um sistema de arquivo distribuído
  • 16. Um SD está implementado sobre camadas de rede Protocolos de SDs Protocolos de Rede
  • 17. O segredo da WWW: padrão HTTP ● HTTP: hypertext transfer protocol ● Protocolo de camada de aplicação WWW ● Modelo cliente/servidor – Cli: navegador solicita, recebe e apresenta objetos WWW – Srv: servidor WWW armazena wesite e envia objetos em resposta as requisições ● HTTP1.0: RFC 1945 ● HTTP1.1: RFC 2068 – Aproveita a mesma conexão para baixar imagens, scripts, etc...
  • 18. Protocolo HTTP ● HTTP: serviço de transporte TCP – Cliente inicia uma conexão TCP (cria um socket) p/ o servidor, porta 80 – Servidor aceita a conexão TCP do cliente – Mensagens HTTP (msgs de protocolo da camada de app trocadas entre navegador (cliente http) e o servidor WWW (servidor http)) – Conexão TCP encerrada ● HTTP é stateless – Servidor não matém informações sobre requisições passadas dos cliente ● Protocolos que mantém sessões (estado) são complexos – Histórico deve ser mantido e atualizado – Se cliente/servidor falhar, suas visões de “estado” podem ser inconsistentes, e devem ser resolvidas – Protocolos RESTful são stateless
  • 19. Exemplo HTTP 1a. cliente http inicia uma conexão TCP c/ o servidor (processo) facom.ufms.br na porta 80 2. cliente http envia uma msg de requisição http (contendo URL) p/ socket de conexão TCP 1b. servidor http no host facom.ufms.br aguarda por uma conexão TCP na porta 80. Aceita conexões e notifica cliente 3. servidor http recebe mensagens de requisição, monta mensagem de resposta contendo objetos solicitados (index.html), envia mensagem através do socket ● Considere um usuário acessando a URL: www.facom.ufms.br Contém texto e referências a imagens Tempo
  • 20. Exemplo HTTP (cont.) 5. cliente http recebe msg de resposta contendo arq. html, objetos, etc 6. etapas 1-5 são repetidas até que todos os objetos estejam no cliente 4. servidor http encerra conexão TCP Tempo
  • 21. Usuário como um navegador (lado cliente) 1. Telnet no seu servidor WWW: 2. Entre com uma requisição GET HTTP telnet facom.ufms.br 80 Abre conexão TCP na porta 80 (porta default do servidor) em facom.ufms.br Tudo que for digitado é enviado p/ porta 80 no servidor facom.ufms.br { GET /index.html HTTP/1.0 telnet facom.ufms.br 80 Ao digitar esse comando, é encaminhada uma requisição (mínima, porém completa) HTTP GET ao servidor { 3. Observe a mensagem de resposta encaminhada pelo servidor HTTP!
  • 22. Nossa definição é adequada p/ HTTP WEB? ● Um sistema distribuído é uma coleção de entidades autônomas, programáveis, assíncronas e sujeitas a falhas. Comunicam- se através de uma tecnlogia de transmissão não confiável. – Entidade: um processo em um dispositivo (PC, Celular, Palm, etc.) – Meio de transmissão: rede com ou sem fio – Nosso interesse em SDs envolve: ● Projeto e implementação ● Manutenção ● Algoritmos
  • 23. Questões importantes em SD ● Não há relógio global: sem noção global única de tempo correto (assíncrono) ● Falhas imprevisíveis em componentes: falta de resposta pode ser devida a falha na rede, na entidade, etc. ● Largura de banda variável: 16Kbps a Tbps ● Alta variação de latência: poucos ms a minutos ● Grande quantidade de hosts: de 2 a milhões
  • 24. Há uma série de problemas interessantes p/ projetistas de SDs ● Sistemas distribuídos de tempo real – Cloud, p2p, armazenamento chave-valor/NoSQL, sistemas de arquivos distribuídos, redes de sensores, ... ● Problemas clássicos – Detecção de falhas, assincronismo, multicast, consenso, exclusão mútua, eleição, ... ● Concorrência – RPCs, controle de concorrência, controle de replicação, ... ● Segurança ● Outros
  • 25. Arquitetura ● SD permite que componentes de aplicações comuniquem entre si ● Oculta as diferenças de hardware e tipos de sistemas operacionais
  • 26. Características ● Heterogeneidade ● Transparência ● Abertura ● Escalabilidade ● Segurança
  • 27. Heterogeneidade ● A Internet permite que usuários acessem serviços e executem apps sobre uma coleção de redes e computadores heterogêneos: – Redes de comunicação – Hardware dos computadores – Sistemas operacionais – Linguagens de programação – Implementações realizadas por diferentes desenvolvedores
  • 29. Heterogeneidade ● O middleware permite abstração da programação bem como a heterogeneidade de redes, SOs e linguagens de programação – CORBA – RMI – Web Services (SOA) ● Código móvel (mobile code) – Refere-se a programas que podem ser transferidos e executados no destinatários ● Applets java – Máquinas virtuais ● Abordagem que permite a execução de código em diferentes arquiteturas – p.ex., compilador java gera código para JVM, executa através da interpretação – Outro exemplo: inclusão de códigos Javascript em páginas Web
  • 30. Transparência ● Ocultar o fato de que seus processos e recursos estão fisicamente distribuídos por vários computadores Transparência Transparência Descrição Descrição Acesso Oculta diferenças na representação de dados e no modo de acesso a um recurso Localização Oculta o lugar em que um recurso está localizado Migração Oculta que um recurso pode ser movido para outra localização Relocação Oculta que um recurso pode ser movido para outra localização enquanto em uso Replicação Oculta que um recurso é replicado Concorrência Oculta que um recurso pode ser compartilhado por diversos usuários concorrentes Falha Oculta a falha e a recuperação de um recurso
  • 31. Transparência ● Transparência de acesso: – Sistemas operacionais diferentes, convenções p/ nomeação de arquivos, etc ● Transparência de localização: – Usuários não têm acesso a localização física dos recursos: nomes lógicos, URL ● Transparência de migração: – A URL não dá pistas se sua localização corrente → sempre esteve na mesma localização ● Transparência de relocação: – Uso móvel de laptops, cujos usuários continuam a usá-los quando vão de um local para outro
  • 32. Transparência ● Transparência de replicação: – Aumentar disponibilidade ou desempenho: sistemas de arquivos distribuídos ● Transparência de concorrência: – Manter a consistência de recursos compartilhados: uso de transações ● Transparência a falhas: – Usuário não percebe que um recurso deixou de funcionar bem e que, subsequentemente, o sistema se recuperou da falha. Servidor Web ocupado.
  • 33. Abertura ● SD deve oferecer serviços de acordo com regras padronizadas – Sintaxe e semântica desses serviços ● Em geral, serviços são especificados por meio de interfaces – Completude e neutralidade ● Interoperabilidade – Até que ponto duas implementações de sistemas/componentes de fornecedores distintos devem coexistir e trabalhar em conjunto ● Portabilidade – Até que ponto uma app desenvolvida por um SD “A” “A” pode ser executada, sem modificação, em um SD “B” “B”
  • 34. Escalabilidade ● SDs operam efetivamente em diferentes escalas, desde pequenas intranets à Internet ● Três dimensões diferentes: – Tamanho: fácil add usuários e recursos – Geográfica: usuários e recursos podem estar dispersos – Administrativo: gerenciamento simples, mesmo envolvendo organizações adminstrativas diferentes
  • 35. Escalabilidade ● Problemas de escalabilidade: Conceito Conceito Exemplo Exemplo Serviços centralizados Um único servidor para todos os serviços Dados centralizados Uma única lista telefônica on-line Algoritmos centralizados Realizar roteamento com base em informações completas ● Serviços centralizados: – gargalo do sistema ● Dados centralizados: – DNS ● Algoritmos centralizados: – Em um SD de grande porte, mensagens devem ser roteados por muitas linhas
  • 36. Escalabilidade ● Algoritmos centralizados: – 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 inviabiliza o algoritmo – Não há nenhuma premissa implícita quanto à existência de um relógio global
  • 37. Escalabilidade ● Comunicação síncrona – SDs foram originalmente projetados para redes locais – Um cliente requisita um serviço e fica bloqueado até obter uma resposta – Para redes de longa distância o tempo de resposta cresce em 3 ordens de grandeza ● Comunicação não confiável – Políticas conflitantes em relação à utilização (pagamento) de recursos, gerenciamento e segurança
  • 38. Técnicas de escalabilidade ● Problemas de desempenho causados por capacidade limitada de servidores e rede ● Há três técnicas para ampliar sistemas: – Ocultar latências de comunicação – Distribuição – Replicação
  • 39. Técnicas de escalabilidade ● Ocultar latências – Ideia básica: evitar espera por requisições remotas de serviços – Comunicação assíncrona ● Quando chega uma resposta, a app é interrompida e um manipulador especial é chamado para concluir a requisição emitida anteriormente – Comum em sistemas de lote e computação paralela – Apps interativas, em geral, não possuem atividades em espera ● Solução é diminuir comunicação global, passar parte da computação que normalmente é executada no servidor para o cliente – Acesso a banco de dados por meio de formulários ● Despacho de código é suportado na Web sob a forma de applets Java e Javascript (Figura)
  • 41. Técnicas de escalabilidade ● Distribuição – Envolve tomar um componente, subdividi-lo em partes menores, espalhar essas partes no sistema – DNS ● Hierarquia em uma árvore de domínios ● Zonas sem sobreposição
  • 42. Técnicas de escalabilidade ● Distribuição – Outro exemplo é a Web ● Enorme sistema baseado em documentos ● Fisicamente distribuída por um grande número de servidores ● O nome do servidor que manipula um documento está codificado na URL
  • 43. Técnicas de escalabilidade ● Replicação – Aumenta a disponibilidade do sistema – Ajuda a equilibrar a carga entre componentes, o que pode resultar em melhor desempenho – Técnicas de cache resultam em fazer uma cópia de um recurso, em geral na proximidade do acesso do cliente àquele recurso (decisão do cliente) – Ambos podem resultar em problemas de consistência!
  • 44. Segurança ● Três componentes fundamentais: – Confidencialidade: proteção contra indivíduos não autorizados – Integridade: proteção contra alterações, atualizações ou corrupção de dados – Disponibilidade: proteção contra interferências no acesso aos recursos
  • 45. Tipos de sistemas distribuídos ● Sistemas de computação distribuídos ● Sistemas de informação distribuídos ● Sistemas embutidos distribuídos
  • 46. Sistemas de computação distribuídos ● Utilizados para tarefas de computação de alto desempenho (HPC) – Computação em cluster – Computação em grid – Computação em nuvem (será abordada em outra aula!)
  • 47. Computação em cluster ● Relação custo/desempenho de computadores pessoais ● Redes de alta velocidade ● Em geral, empregada para computação paralela – Beowulf baseado em Linux – Mosix adota abordagem simétrica ● Imagem de sistema único, migração de processos
  • 49. Computação em grade ● Alto grau de hetorogeneidade – Nenhuma premissa é adotada em relação a hardware, SO, redes, domínios administrativos, políticas de segurança, etc. ● Diferentes organizações são reunidas para permitir colaboração entre grupos de pessoas e intituições – Organização virtual – Servidores de computação, supercomputadores, equipamentos específicos (telescópios), facilidades de armazenamentos (bancos de dados distribuídos, sistemas de arquivos distribuídos)
  • 51. Computação em grade ● Camada base: – Provê interfaces para recursos locais – Permitem compartilhamento de recursos – Funções de gerenciamento de recursos, ● Consulta estado e capacidade dos recursos ● Camada de conectividade – Protocolos de comunicação – Serviços de autenticação e questões de segurança
  • 52. Computação em grade ● Camada de recursos – Responsável pelo gerenciamento de um único recurso – Informações sobre configuração de um recurso específico – Controle de acesso, pode utilizar serviços da camada de conectividade
  • 53. Computação em grade ● Camada coletiva: – Manipula acessos múltiplos a recursos – Descoberta de serviços, escalonamento de tarefas, replicação de dados, etc ● Camada de aplicação – Aplicações que executam em um organização virtual e utilizam o ambiente de computação em grade
  • 54. Computação em grade ● Tendência atual de migração para uma “arquitetura orientada a serviços” – OGSA (Open Grid Service Architecture) – Consistem de várias camadas e muitos componentes, em geral, serviços Web
  • 55. Sistemas de informação distribuídos ● Aplicações empresariais cujos clientes enviam requisições ao servidores – Processamento de transações distribuídas – Integração de apps empresariais ● EAI (Enterprise Application Integration)
  • 56. Sistemas de processamento de transações
  • 57. Sistemas de processamento de transações ● Propriedades das transações: – A Atômicas: indivisível – C Consistentes: não viola invariantes do sistema – I Isoladas: transações concorrentes não interferem umas nas outras – D Duráveis: uma vez realizada, as alterações são permanentes
  • 58. Sistemas de processamento de transações
  • 59. Sistemas de processamento de transações
  • 60. Integração de apps empresariais
  • 61. Sistemas distribuídos pervasivos ● Ausência geral de controle administrativo humano ● Requisitos – Adotar mudanças contextuais – Incentivar composição ad hoc – Reconhecer compartilhamento como padrão
  • 62. Sistema eletrônico para tratamento de saúde ● Monitoração de uma pessoa em um sistema pervasivo – (a) Hub local – (b) Conexão contínua sem fio
  • 63. Redes de sensores ● Questões importantes – Como montar (dinamicamente) uma árvore eficiente em uma rede de sensores? – Como ocorre a agregação de resultados? Ela pode ser controlada? – O que acontece quando enlaces de rede falham?
  • 64. Redes de sensores ● Organizando um BD de rede de sensores – (a) armazenando e processando dados somente no site do operador
  • 65. Redes de sensores ● Organizando um BD de rede de sensores – (b) armazenando e processando dados somente nos sensores
  • 66. Problemas ● Uma definição alternativa para um sistema distribuído: ele é um conjunto de computadores independentes que fornece a impressão de ser um sistema único, isto é, o fato de haver vários computadores fica completamente oculto para os usuários. Dê um exemplo para o qual essa visão viria muito a calhar. ● Qual é o papel do middleware em um sistema distribuído? ● Explique o significado de transparência e de exemplos de diferentes tipos de transparência? ● O que é um sistema distribuído aberto e quais são os benefícios que a abertura proporciona? ● Descreva o significado de sistema escalável. ● Por que é tão difícil ocultar a ocorrência e a recuperação de falhas em um sistema distribuído?