2012-2013_9-Paradigmas_AD

31
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

description

Conteúdo complementar, de estudos

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]