Upload
internet
View
106
Download
0
Embed Size (px)
Citation preview
A World Wide Web e Introdução aos
Sistemas Distribuídos
Programação na Internet Secção de Sistemas e Tecnologias de Informação
ISEL-DEETC-LEICLuis Falcão - [email protected]
Carlos Guedes – [email protected] Pereira – [email protected]
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Autores e contributos
• Autores– Paulo Pereira
• Contributos– Luís Falcão– Pedro Félix– Jorge Martins– Carlos Guedes– Nuno Datia
2
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Agenda
• A Internet e a World Wide Web• Identificação de recursos
– Uniform Resource Locator (URL)
• Sistemas distribuídos (introdução)– Distribuição: causas e consequências
• Propriedades pretendidas– Organização de software em camadas– Arquitecturas de sistemas distribuídos
• Modelos de interacção• Desenho de sistemas distribuídos
• O objecto de estudo– Aplicações Web
3
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Internet• O que é a Internet?
– A rede IP – “Auto-estrada da informação”
• IETF - Internet Engineering Task Force– Organização responsável pela normalização de serviços e protocolos da Internet– http://www.ietf.org/
• Alguns dos protocolos mais utilizados– FTP – File Transfer Protocol– SMTP – Simple Mail Transfer Protocol– HTTP – Hyper Text Transfer Protocol
4
Mais Info: http://www.answers.com/internet http://en.wikipedia.org/wiki/Internet
2007 - 2010©ISEL/DEETC/STI – Programação na InternetFonte: http://www.opte.org/maps/
net, ca, us com, org mil, gov, edujp, cn, tw, au de, uk, it, pl, fr br, kr, nl unknown
Legenda:
Rotas na internet (cerca de 30%)
Data: Jan 15 2005
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
World Wide Web – WWW
• O que é a World Wide Web?– Serviço mais utilizado na Internet– O utilizador, recorrendo a um browser, “vê” a Internet como um conjunto de
recursos interligados (através de URI)
• W3C – World Wide Web Consortium – http://www.w3.org/– “Led by Web inventor Tim Berners-Lee and CEO Jeffrey Jaffe, W3C's mission is to
lead the Web to its full potential.”
6
recurso
recurso
recurso
recurso
recurso
recurso
Mais Info: http://www.answers.com/topic/world-wide-web http://en.wikipedia.org/wiki/Www
2007 - 2010©ISEL/DEETC/STI – Programação na Internet Fonte: Wikipedia
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
WWW – Historial (1)
• Dez. 1991: demonstração da WWW na Hypertext’91• 1993: No National Center For Supercomputing
Applications (NCSA) é criado o primeiro browser (Mosaic)
• 1994: Criado o World Wide Web Consortium (W3C)– Organização responsável pela normalização das tecnologias utilizadas
na Web - http://www.w3.org/
• O sucesso da Web promoveu-a a ambiente de execução de aplicações distribuídas, as aplicações Web
8
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
WWW – Historial (2)• Crescimento de domínios na Web
– 158,209,426 domínios em Fevereiro de 2008 (+2.6 milhões que no mês anterior)– Apenas ~70,000,000 dos quais activos (~44%)
9
Fonte: http://news.netcraft.com/archives/2008/02/index.html
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
WWW – Intervenientes
• Browser – Cliente HTTP• Mais correctamente
designado de user-agent
• Servidor Web - Servidor HTTP • normalmente é usado o porto TCP 80
• Proxy – Intermediário que realiza caching– Pode também realizar controlo de acessos
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
WWW – Intervenientes (cont.)
Browser
intranet
Browser (ex: IE)
Proxy Server
Browser (ex:Firefox)
HTTP
HTTPHTTP
HTTP
HTTP
HTTP
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Agenda (cont.)
• A Internet e a World Wide Web• Identificação de recursos
– Uniform Resource Locator (URL)
• Sistemas distribuídos (introdução)– Distribuição: causas e consequências
• Propriedades pretendidas– Organização de software em camadas– Arquitecturas de sistemas distribuídos
• Modelos de interacção• Desenho de sistemas distribuídos
• O objecto de estudo– Aplicações Web
12
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Identificação de recursos
• URI - Uniform Resource Identifiers (RFC 3986)– Definem a sintaxe para identificadores de recursos
• Formato genérico de um URI <esquema>:<parte-específica-esquema>
• Tipos de URIs– URN - Uniform Resource Names (RFC 2141)
• Identificadores persistentes, independentes da localização– Exemplo: urn:ietf:rfc:2141
– URL – Uniform Resource Locators (RFCs 2368, 1738, 1808)• Identificam por localização
– Exemplo: http://www.w3.org/Addressing/
13
Mais Info: http://www.ietf.org/rfc/rfc3986.txt
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
URL (Uniform Resource Locators)
• Caracteres utilizados nos URL:– Caracteres US-ASCII– Caracteres que podem ser reservados:
{“;”, “/”, “?”, “:”, “@”, “=”, “&”,“#”}• Se aparecerem fora do contexto para o qual foram reservados, devem ser
codificados– Codificação de caracteres: %<código_hexadecimal>– Se o esquema tiver links relativos e uma estrutura hierárquica, os componentes
da hierarquia devem ser separados por “/”
• Ex:– http://labnet.cc.isel.ipl.pt/login.aspx?ReturnUrl=%2fblogs
%2fdefault.aspx
14
%2f representa o caracter '/'
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Esquemas
• Parte específica de esquemas que envolvem protocolos da família TCP/IP<scheme>:[//][<user>[:<password>]@]<host>[:<port>]<url-
part>
<url-part> = <path>[?<querty>][#<fragment>]
• Alguns exemplos:http://www.slbenfica.pt/register.asp?nome=Paulo%20Pereira&id=1http://[email protected]/index.aspx
ftp://anonymous:[email protected]/pub;type=a mailto:[email protected]?subject=SLB&body=O%20Glorioso
• Para mais informações veja http://www.w3.org/Addressing/
15
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Agenda (cont.)
• A Internet e a World Wide Web• Identificação de recursos
– Uniform Resource Locator (URL)
• Sistemas distribuídos (introdução)– Distribuição: causas e consequências
• Propriedades pretendidas– Organização de software em camadas– Arquitecturas de sistemas distribuídos
• Modelos de interacção• Desenho de sistemas distribuídos
• O objecto de estudo– Aplicações Web
16
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Sistemas Distribuídos
• O que é um Sistema distribuído?
17
“A distributed system is one in which components located at networked computers communicate and coordinate
their actions only by passing messages”
George Colouris et al,
in “Distributed Systems: Concepts and Design”
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Sistemas Distribuídos: Motivação (1)
18
“It is easy to understand why networked systems are popular. Such systems allow the sharing of information
and resources over a wide geographic and organizational spread.”
Michael D. Schroeder,
in “Distributed Systems, chapter 1”
“They allow the use of small, cost-effective computers.”idem
“They can grow in small increments over a large range of sizes.”
ibidem
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Sistemas Distribuídos: Motivação (2)
• Escalabilidade: Uma definição– Capacidade que o sistema tem para suportar o aumento do número de
participantes (normalmente utilizadores) mantendo os níveis de qualidade de serviço (QoS) desejados
• Como suportar o aumento de escala?– Scale-up (ou vertical scaling)
• Aumento da capacidade da máquina usada• Custos de hardware elevados
– Scale-out (ou horizontal scaling)• Aumento do número de máquinas usadas• Custos de hardware menores• Ónus da distribuição colocado no software
19
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Sistemas Distribuídos: Desafios
• Consequências da distribuição:– Troca fiável de mensagens– Segurança– Coordenação
• Propriedades pretendidas:– Escalabilidade– Disponibilidade (Desempenho e Fiabilidade)
20
“An interesting observation about network-based applications is that the best application performance is obtained by not using the
network.”Roy Thomas Fielding,
in “Architectural Styles and the Design of Network-based Software Architectures”,
PhD dissertation
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Fiabilidade na troca de mensagens
• O stack TCP/IP resolve o problema?
21
• Uma solução: mensagens idem potentes
• Outra solução: mensagens com marcas temporais
AA BBDébito 100€ na conta 1
Débito realizado (saldo suficiente)
AA BB
Saldo da conta 1 ?
Saldo da conta 1 é 1000€
OK
Saldo da conta 1 = 900€
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Coordenação
• Sincronização– No acesso concorrente a recursos partilhados
• Uma escrita exclui todos os restantes acessos– Soluções:
• Conservadoras (ou pessimistas): “Check and act”• Optimistas: “Try and see”
– Exemplo: Transacções
• Acordo (por maioria ou consenso)– Acerca do valor de um recurso partilhado– Acerca do sucesso ou insucesso de uma ou mais operações
• Exemplo: Transacções distribuídas
22
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Sincronização
• Uma solução: Transacções (propriedades ACID1)– A propriedade I (isolamento) pode ser relaxada (função do domínio do problema)
23
AA BB
Saldo da conta 1 ?
Saldo da conta 1 é 1000€
OK
Saldo da conta 1 = 900€ CC
Saldo da conta 1 ?
Saldo da conta 1 é 1000€Saldo da conta 1 = 900€
OK ?
AA BB
Iniciar transacção
Terminar transacção
Transacção sucedida ou falhada
...
...
1 Atomicity, Consistency, Isolation, Durability
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Acordo: Transacções distribuídas (1)• Protocolo Two phase commit (enrolling)
24
AA
RM1
RM1
RM 2
RM 2
DTCDTCStart
TID
TIDdoOperations(TID)
doOperations(TID)
join TID
join TID
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Acordo: Transacções distribuídas (2)• Protocolo Two phase commit (voting)
25
RM 2
RM 2
AA
RM1
RM1
DTCDTCdoCommit(TID)
TID
canCommit(TID) ?
Yes
canCommit(TID) ?
Yes
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Acordo: Transacções distribuídas (3)• Protocolo Two phase commit (committing)
26
AA
RM1
RM1
RM 2
RM 2
DTCDTCdoCommit(TID)
commited(TID)
TID
doCommit(TID)
commited
doCommit(TID)
commited
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Propriedades pretendidas
• Escalabilidade• Disponibilidade
– Desempenho• Latência• Throughput• Eficiência
– Fiabilidade• Tolerância a falhas
• Facilidade de manutenção– Evolutiva– Correctiva
27
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Agenda (cont.)
• A Internet e a World Wide Web• Identificação de recursos
– Uniform Resource Locator (URL)
• Sistemas distribuídos (introdução)– Distribuição: causas e consequências
• Propriedades pretendidas– Organização de software em camadas– Arquitecturas de sistemas distribuídos
• Modelos de interacção• Desenho de sistemas distribuídos
• O objecto de estudo– Aplicações Web
28
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Organização de software em camadas (1)
• Designado de modelo layered– Favorece o isolamento
29
ApresentaçãoApresentação
LógicaLógica
DadosDados
Interface pública
Implementação
Acesso a recursos(dados, outros componentes)
• Lógica (ou Business Layer) contém código que permanece válido– para qualquer apresentação– para qualquer fonte de dados
• Padrão de aplicabilidade recursiva
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Organização de software em camadas (2)
• A separação lógica potencia a separação física!– E, consequentemente, a distribuição de carga
30
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Agenda (cont.)
• A Internet e a World Wide Web• Identificação de recursos
– Uniform Resource Locator (URL)• Sistemas distribuídos (introdução)
– Distribuição: causas e consequências• Propriedades pretendidas
– Organização de software em camadas– Arquitecturas de sistemas distribuídos
• Modelos de interacção• Desenho de sistemas distribuídos
• O objecto de estudo– Aplicações Web
31
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Arquitecturas de sistemas distribuídos
• Monolíticas (não distribuídas)• Cliente - servidor
– Baseiam-se na divisão de responsabilidades entre participantes, por exemplo, de acordo com critérios
• de posse da informação• de prestação de serviço (exploração de negócio)
– Taxonomia (função das divisões físicas)• Fat client• Tiered
– Rich client– Thin client
• Peer-to-peer– Todos os participantes têm responsabilidades equivalentes
32
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Arquitecturas Fat client (1)
• Quais as vantagens e desvantagens?
33
ApresentaçãoApresentação
LógicaLógica
DadosDados
Máquinas cliente
Servidor(es)
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Arquitecturas Fat client (2)
• O que se ganhou?
34
ApresentaçãoApresentação
LógicaLógica
Máquinas cliente
Servidor(es)
Acesso a dados
Repositório(s) de dados
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Arquitecturas Tiered: Rich client
• E agora?
35
ApresentaçãoApresentação
LógicaLógica
Máquinas cliente
Servidor(es)
Acesso a dados
Repositório(s) de dados
Servidor(es)
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Arquitecturas Tiered: Thin client
• Separação física: Até onde?
36
LógicaLógica
Máquinas cliente
Servidor(es)
Acesso a dados
Repositório(s) de dados
Servidor(es)
Servidor(es)
Execução de código de apresentação
Geração e distribuição de código de apresentação
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Modelos de interacção (1)
37
Pedido/Resposta
One-Way
Diálogo
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Modelos de interacção (2)
• Pedido/Resposta– Comunicação de natureza síncrona
• O emissor do pedido não prossegue antes de obter a resposta– Desvantagens, citando Clemens Vasters
• "Request/Response forces your impatience upon the responding party”• “Unfair behavior because you don’t know what stress the other side is
having”• One-Way
– Comunicação de natureza assíncrona– O emissor não aguarda mensagem de resposta (logo o receptor pode
reagir de forma deferida)• Diálogos
– Comunicação de natureza assíncrona onde ambos os intervenientes têm a iniciativa de enviar mensagens
– Equivalente a One-Way bidireccional
38
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Desenho de sistemas distribuídos (1)
• Como influenciar as propriedades desejadas?• Não existem soluções universais (ainda?) para os desafios
– A adequação das soluções existentes é função do domínio do problema• No entanto, existem algumas ideias!
39
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Desenho de sistemas distribuídos (2)
• Algumas ideias: (serão revisitadas)– Dados
• Caching (tratamento difere de acordo com a natureza dos dados)• Replicação (total ou parcial)
– Serviços• Replicação (Clustering)
– Replicação favorece balanceamento de carga (estático e dinâmico)– Favorecimento de:
• soluções stateless• modelos de interacção assíncronos
– Gestão de recursos:• Activação just in time• Utilização de pools• Estado de conversação
40
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Agenda (cont.)• A Internet e a World Wide Web
• Identificação de recursos– Uniform Resource Locator (URL)
• Sistemas distribuídos (introdução)– Distribuição: causas e consequências
• Propriedades pretendidas– Organização de software em camadas– Arquitecturas de sistemas distribuídos
• Modelos de interacção• Desenho de sistemas distribuídos
• O objecto de estudo– Aplicações Web
41
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Arquitecturas de aplicações Web – Tiered (revisitado)
42
LógicaLógica
Acesso a dados
Repositório(s) de dados
Execução de código de apresentação
Geração e distribuição de código de apresentação
HTML, CSS, JavaScript, XML
Máquinas cliente(Browsers)
Servidor(es) Web
Servidor(es)Aplicacionais
Servidor(es)de Dados (SGBD)
ASP.NET
ADO.NET
.NET
2007 - 2010©ISEL/DEETC/STI – Programação na Internet
Bibliografia
Distributed Systems - Concepts and Design, G. Coulouris at al, Addison Wesley, 2000
Distributed Systems: Concepts and Design,
Jean Dollimore at al, Addison Wesley, 2005