2012-2013_9-Paradigmas_AD
-
Upload
celia-baldessar -
Category
Documents
-
view
212 -
download
0
description
Transcript of 2012-2013_9-Paradigmas_AD
Fonte da imagem: http://www.dsn.jhu.edu
9. Paradigmas de sistemas distribuídos
Fernando Ramos [email protected]
Departamento de Informática Faculdade de Ciências da Universidade de Lisboa
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Programa da disciplina Introdução aos sistemas distribuídos Arquitecturas de sistemas distribuídos Processos Comunicação Gestão de nomes Sincronização Consistência e replicação Tolerância a faltas Paradigmas de sistemas distribuídos Estudo de caso:
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Revisitando o programa
Introdução aos sistemas distribuídos – Definição, motivação, desafios, tendências – Tipos de sistemas distribuídos
Arquitecturas de sistemas distribuídos Processos
– Threads – Virtualização
Comunicação – Remote Procedure Calls (RPC) – Comunicação indireta e streams
Gestão de nomes Sincronização
– Relógios físicos e lógicos – Exclusão mútua – Algoritmos de eleição de líder
Consistência e replicação – Modelos de consistência – Gestão de réplicas – Protocolos de consistência
Tolerância a faltas – Processos – Grupos – Transações e checkpoints
Paradigmas de sistemas distribuídos – Sistemas distribuídos Web-based
Estudo de caso:
Princípios Paradigmas
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Plano da aula Paradigma: sistemas Web distribuídos
– Introdução – Arquitectura – Processos – Comunicação – Gestão de nomes – Sincronização – Consistência e replicação – Tolerância a faltas
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Bibliografia
[Tanenbaum2007], Capítulo 12
NOTA Os acetatos que se seguem não substituem a bibliografia aqui referida, e deverão por isso ser vistos apenas como um complemento para o estudo da matéria.
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Plano da aula Paradigma: sistemas distribuídos Web-based
– Introdução – Arquitectura – Processos – Comunicação – Gestão de nomes – Sincronização – Consistência e replicação – Tolerância a faltas
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
World Wide Web
Criada por Tim Berners-Lee no CERN de Genebra [Berners-Lee1994]
– Objectivo: partilha de documentos Desde 1994 mantida pelo World Wide Web
Consortium (W3C) – Estandardização da WWW
Actualmente, a Web não é apenas usada para partilha de documentos, mas também para aceder e partilhar serviços e aplicações
Fonte: http://www.opte.org/
Fonte : http://galeriacores.blogspot.com
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Plano da aula Paradigma: sistemas distribuídos Web-based
– Introdução – Arquitectura – Processos – Comunicação – Gestão de nomes – Sincronização – Consistência e replicação – Tolerância a faltas
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Arquitetura de um sistema Web tradicional
Uma simples arquitetura cliente-servidor
Fonte: [Tanenbaum2007]
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Arquitectura em 3 níveis
Um problema fundamental da Web é a sua arquitectura base ser estática – Acedemos e modificamos documentos (ficheiros)
Para resolver este problema foram criadas várias extensões, sendo a mais popular o CGI (Common Gateway Interface)
– Ideia fundamental: servidor delega a geração da resposta a um programa externo O uso de CGIs permite gerar páginas dinamicamente a partir dos dados enviados pelo
cliente (usualmente recolhidos em formulários) e bases de dados – Arquitectura em 3 níveis: servidor Web, servidor da aplicação, base de dados
Fonte: [Tanenbaum2007]
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Scripts embutidos
Um abordagem mais moderna que o CGI é o uso de scripts embutidos no servidor – Neste modelo, o documento é interpretado pelo servidor e qualquer script embutido
é executado, gerando conteúdo adicional a ser incluído no documento – Alguns exemplos de tecnologias deste tipo: JSP, ASP.Net, PHP
<html> <head> <title>Hello JSP</title> </head> <body> <% //aqui posso meter código Java out.println("Hello World!"); %> </body> </html>
<html> <head> <title>Hello JSP</title> </head> <body> Hello World! </body> </html>
Após execução
JSP (JavaServer Pages)
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Web Services
Originalmente, os clientes Web eram sempre os browsers Web (utilizadores), mas hoje em dia, isso já não é verdade devido ao surgimento dos Web Services (WS)
Um WS é um serviço disponibilizado através da Internet – Isto é, obedecendo aos standards Web
Ideia base – Uma aplicação no cliente faz uso de um serviço oferecido por uma aplicação no servidor
Alguns standards fundamentais: WSDL: linguagem de descrição dos Web Services UDDI: serviço de directoria e nomes onde se armazenam endereços de Web Services SOAP: sintaxe de protocolo centrada em XML
Fonte: [Tanenbaum2007]
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Plano da aula Paradigma: sistemas distribuídos Web-based
– Introdução – Arquitectura – Processos – Comunicação – Gestão de nomes – Sincronização – Consistência e replicação – Tolerância a faltas
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Clientes Web
Os principais clientes Web são os navegadores (browsers) – Apresentam os documentos para o utilizador – Correm linguagens de scripts como Javascript – Podem ser estendidos através de plugins (e.g., pdf, flash, Java)
Outro tipo de cliente Web são os proxies: servidores que também são clientes
Cache
Fonte: [Tanenbaum2007]
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Servidores Web
Servidor (teoricamente) muito simples que concretiza os métodos HTTP para manipulação de documentos
Servidor Web Apache (http://httpd.apache.org) – Usado em mais de 70% dos sites na Internet – Altamente configurável e extensível
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Clusters de servidores Web
Tendo em vista que um servidor Web pode ser acedido por muitos clientes ao mesmo tempo, uma forma de aumentar a escalabilidade do serviço é replicar os servidores e realizar balanceamento de carga – A arquitectura geral requer um front end que receba e distribua os pedidos – Um problema que pode surgir é o front end se tornar um bottleneck
Fonte: [Tanenbaum2007]
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Balanceamento de carga num cluster
Distribuição de pedidos de acordo com seu conteúdo
DNS round-robin: um domínio é associado a múltiplos endereços IP, que são retornados pelo DNS seguindo a política round-robin
Pedidos enviados a todos os servidores (numa LAN), e eles decidem (de forma descentralizada), quem vai atender o pedido
Envia pedidos de ligação ao distribuidor
Associa um servidor a uma ligação.
Decide que servidor atende a nova ligação.
Fonte: [Tanenbaum2007]
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Plano da aula Paradigma: sistemas distribuídos Web-based
– Introdução – Arquitectura – Processos – Comunicação – Gestão de nomes – Sincronização – Consistência e replicação – Tolerância a faltas
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Protocolos de comunicação
HTTP (Hyper Text Transfer Protocol) para sistemas tradicionais; SOAP para Web services. HTTP
– Protocolo ao nível da aplicação (corre sobre TCP), stateless, do tipo cliente-servidor » Métodos suportados: GET, POST, PUT, HEAD, DELETE
– HTTP 1.0: cada operação exigia uma ligação TCP (figura (a)) – A partir do HTTP 1.1: por questões de eficiência, utilizam-se ligações persistentes (figura
(b)), usadas para executar várias operações.
Fonte: [Tanenbaum2007]
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Plano da aula Paradigma: sistemas distribuídos Web-based
– Introdução – Arquitectura – Processos – Comunicação – Gestão de nomes – Sincronização – Consistência e replicação – Tolerância a faltas
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Nomes na Web
URI: Unified Resource Identifier – String que identifica recurso na Internet
Dois tipos de URI: – URN (UR Name): nome global
independente de localização » O nome » Exemplo de URN: urn:isbn:0-486-27557-4
– URL (UR Location): nome inclui localização
» A “morada”
O formato de uma URI é definido
pelo seu esquema
Fonte: [Tanenbaum2007]
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Plano da aula Paradigma: sistemas distribuídos Web-based
– Introdução – Arquitectura – Processos – Comunicação – Gestão de nomes – Sincronização – Consistência e replicação – Tolerância a faltas
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Sincronização
Até agora a sincronização tem sido um tópico pouco relevante em sistemas Web-based – Modelo cliente-servidor rígido (não há comunicação cliente-cliente ou
servidor-servidor) – Sistema read-mostly
» Updates raramente introduzem conflitos
Mas as coisas parecem estar a mudar – Exemplo: documentos Web colaborativos
» WebDAV: protocolo que oferece mecanismos de sincronização de documentos (como locks)
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Plano da aula Paradigma: sistemas distribuídos Web-based
– Introdução – Arquitectura – Processos – Comunicação – Gestão de nomes – Sincronização – Consistência e replicação – Tolerância a faltas
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Replicação na Web: caches e proxies O bom funcionamento da Web depende, em certa medida, da replicação de conteúdo
em caches distribuídos pela Internet – Razões de performance e disponibilidade
Duas formas básicas de caches na Web: – Cache dos browsers: documentos acedidos são armazenados localmente – Proxies de rede: servidores especializados que armazenam os conteúdos acedidos
por utilizadores duma determinada organização » A sua organização pode ser hierárquica ou cooperativa
Exemplo de proxies cooperativos
Fonte: [Tanenbaum2007]
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Consistência da cache
Como manter a cache (no browser ou no proxy) consistente? – Mesmo que o proxy tenha um documento requisitado em cache, ele envia
uma mensagem HTTP get ao servidor do documento com o cabeçalho If-Modified-Since especificando o instante de tempo em que o documento foi recebido e armazenado em cache
» Se o servidor modificou o documento envia a nova versão » Caso contrário, o proxy retorna o documento em cache
– Esta estratégia garante sempre consistência, mas é ineficiente…
Estratégia mais eficiente envolve o uso de leasing (tempo de expiração) – Cada documento tem um tempo de expiração T. Se surge um pedido antes
de T (período de leasing), assume-se que o documento em cache é válido. Se surgir depois, contacta-se o servidor.
» T depende da taxa de actualizações do documento – Problema: menor consistência.
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
CDNs: redes de distribuição de conteúdos Sistemas mais avançados utilizam redes overlay de distribuição de conteúdos
– Os conteúdos são replicados para servidores mais próximos dos clientes – Melhor performance devido à menor latência de acesso aos documentos (estão
mais próximos) e devido à menor carga do servidor fonte CDN com mais sucesso: Akamai
– 95000 servidores em 71 países [Akamai2011] – Alguns dos seus clientes: Facebook, Twitter, Amazon, Netflix, Yahoo!
Fonte: [Tanenbaum2007]
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Plano da aula Paradigma: sistemas distribuídos Web-based
– Introdução – Arquitectura – Processos – Comunicação – Gestão de nomes – Sincronização – Consistência e replicação – Tolerância a faltas
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Mecanismos de tolerância a faltas
Há poucos mecanismos de tolerância a faltas – Por exemplo, o HTTP não introduz mecanismos de tolerância a faltas ou de
recuperação
Principais mecanismos usados: – Caching do lado do cliente – Replicação de servidores
Estes funcionam bem no caso de conteúdo estático mas com Web services a
situação torna-se mais complexa
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Sumário
Muito provavelmente o sucesso da Internet deve-se aos sistemas distribuídos Web-based.
Modelo cliente-servidor simples para partilha de documentos hiperligados foi uma das razões do seu sucesso – Mas o paradigma está a mudar com os Web services…
Resumo em 7 linhas: – Arquitectura: cliente-servidor – Processos: cliente = browser ou proxy; (clusters de) servidor(es) = Apache – Comunicação: HTTP (serviços tradicionais) e SOAP (Web services) – Nomes: URI – Sincronização: em vias de se tornar importante (e.g., WebDAV) – Consistência e replicação: caches, proxies e CDNs. – Tolerância a faltas: caching no lado do cliente e replicação de servidores
© 2012 Fernando Ramos, Henrique Moniz, Alysson Bessani. Reprodução proibida sem autorização prévia
Referências
[Tanenbaum2007] – Andrew Tanenbaum and Maarten van Steen, Distributed Systems:
Principles and Paradigms, 2nd Edition. Prentice Hall, 2007
[Berners-Lee1994] – Tim Berners-Lee et al, “The World Wide Web,”, Communications of the
ACM, August, 1994.
[Akamai2011] – http://www.akamai.com/html/about/facts_figures.html
» [acedido em 07/12/2011]