SISTEMAS DISTRIBUÍDOS - Secção de...

32
Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 1 SISTEMAS DISTRIBUÍDOS Capítulo 2 Arquiteturas e Modelos de Sistemas Distribuídos

Transcript of SISTEMAS DISTRIBUÍDOS - Secção de...

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 1

SISTEMAS DISTRIBUÍDOS

Capítulo 2

Arquiteturas e Modelos de Sistemas Distribuídos

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 2

SISTEMAS DISTRIBUÍDOS

Capítulo 2

Arquiteturas de Sistemas Distribuídos

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 3

NOTA PRÉVIA

A estrutura da apresentação é semelhante e utiliza algumas das figuras do livro de base do curso

G. Coulouris, J. Dollimore and T. Kindberg, Distributed Systems - Concepts and Design, Addison-Wesley, 5th Edition, 2011

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 4

CONTEXTOS - ARQUITETURA

Camadas de software Reparte a complexidade de um sistema, em várias camadas, com interfaces bem definidas entre si. Cada camada pode usar os serviços da camada abaixo, sem conhecimento dos detalhes de implementação.

Arquitetura (distribuída) multinível/camada as camadas do sistema são atribuídas a processos/máquinas diferentes

Arquitetura distribuída Especifica como se organizam e quais as interações entre os vários componentes de um sistema distribuído Em todos os casos há implicações no desempenho, fiabilidade e segurança do sistema

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 5

CAMADAS DE SOFTWARE - MIDDLEWARE

O middleware fornece uma interface homogénea e serviços mais complexos que os disponibilizados pelo sistema de operação

Limitações: algumas funcionalidades apenas podem ser implementadas de forma eficaz com o conhecimento da semântica da aplicação, pelo que fornecer essa funcionalidade no sistema de middleware seria contraproducente (correção de erros, segurança, etc.)

Sistema de comunicações Sistema de operação

Sistema de comunicações Sistema de operação

Sistema de comunicações Sistema de operação

N computadores interligados

Sistema middleware

Aplicação distribuída

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 6

ARQUITECTURA EM CAMADAS: MODELO 3-CAMADAS

Em aplicações de acesso a sistemas de informação/comércio eletrónico, etc.

Arquitetura de três níveis (3-tier) - Apresentação - (Lógica) Aplicação - (Armazenamento) Dados

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 7

ARQUITECTURA DISTRIBUÍDA

Arquitetura do sistema Organização de um sistema (complexo) em componentes mais simples com funcionalidades/responsabilidades próprias

Arquitetura do sistema distribuído Define os componentes, o que fazem, onde estão e como interagem entre si. Terá implicações em diversas propriedades do sistema: desempenho, fiabilidade e segurança do sistema

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 8

ARQUITECTURA DISTRIBUÍDA

Arquitetura de um sistema distribuído pode (e deve) ser determinada por diversos fatores:

Requisitos funcionais:

“tudo relacionado com o propósito direto (a função) do sistema” ex. Lógica de negócio

Requisitos não funcionais:

Desempenho (escalabilidade, latência), disponibilidade Custo (de: desenvolvimento, operação, manutenção) Segurança, confiabilidade

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 9

CLIENTE/SERVIDOR

Sistema em que os processos podem ser divididos em dois tipos, de acordo com o seu modo de operação:

Cliente: programa que solicita pedidos a um processo servidor Servidor: programa que executa operações solicitadas pelos clientes, enviando-lhes o respectivo resultado

Cliente Servidor

pedido

resposta

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 10

CLIENTE/SERVIDOR: PROPRIEDADES

Arquitetura mais simples, muito usada em sistemas pouco exigentes – ponto de partida para criar sistemas mais complexos...

Positivo Interação simples facilita implementação Segurança apenas tem de se concentrar no servidor

Negativo Servidor é um ponto de falha único Não escala para além dum dado limite (servidor pode tornar-se ponto de contenção/estrangulamento)

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 11

CLIENTE/SERVIDOR: COMPOSIÇÃO

Arquiteturas mais sofisticadas, com novas propriedades, podem ser obtidas por composição do modelo C/S base

Servidor [particionado, replicado, geo-replicado],

P2P, 3-Camadas, etc.

C S

C

S

C

S

C

S

C

S

Cliente

Cliente

Cliente

Cliente

Cliente Cliente

Cliente

Cliente Cliente

Cliente

Cliente Cliente

Cliente Cliente

Cliente

Cliente

Servidor

Servidor

Servidor

Servidor

Servidor Servidor

Servidor

Servidor

Servidor

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 12

Modelo alternativo para lidar com limitações do modelo cliente/servidor

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 13

MODELO PEER-TO-PEER (P2P) / ENTRE-PARES

Todos os processos têm funcionalidades semelhantes Durante a sua operação podem assumir o papel de clientes e servidores do mesmo serviço em diferentes momentos

Exemplos: partilha de ficheiros, VoIP, edição colaborativa

C

S

C

S

C

S

C

S

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 14

MODELO PEER-TO-PEER: PROPRIEDADES

Positivo Não existe ponto único de falha (improvável que todos os pares falhem) Grande potencial de escalabilidade (+ pares --> + recursos) Baixo custo de operação (os pares contribuem c/ os recursos)

Negativo Interação mais complexa (do que num sistema cliente/servidor) leva a implementações mais complexas

Operações de pesquisa são complexas Maior número de computadores envolvidos pode colocar questões relativas a heterogeneidade e segurança

Apropriado para ambientes em que todos os participantes querem cooperar para fornecer uma dado serviço

Capacidade agregada muito maior que a capacidade individual de cada par

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 15

Variantes do modelo cliente/servidor para lidar com limitações de escalabilidade e tolerância a falhas

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 16

Servidor

Cliente/servidor particionado Existem vários servidores com a mesma interface, cada um capaz de responder a uma parte dos pedidos

Quando o servidor não pode responder: Redirige o cliente para outro servidor (iterativo); Ou, invoca pedido noutro servidor (recursivo)

exemplo: DNS (.mz, .com, .org, etc.)

Servidor

Servidor

Servidor

VARIANTES DO MODELO CLIENTE/SERVIDOR: SERVIDOR

Cliente

Cliente

Cliente

Cliente

Cliente Cliente

Cliente

Cliente Cliente

Cliente

Cliente Cliente

Cliente Cliente

Cliente

Cliente

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 17

VARIANTES DO MODELO CLIENTE/SERVIDOR: SERVIDOR

Cliente/servidor particionado Positivo

Permite distribuir a carga, melhorando o desempenho (potencialmente) Não existe um ponto de falha único

Negativo

Falha de um servidor impede acesso aos dados presentes nesse servidor Difícil de aplicar em alguns modelos de dados

Sendo: w : nº de escritas; r : nº de leituras; n : nº de partições Cada partição recebe, em média: w / n + r / n pedidos

ou seja, potencialmente divide as escritas e as leituras por todos os servidores, melhorando o desempenho do sistema

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 18

VARIANTES DO MODELO CLIENTE/SERVIDOR: SERVIDOR

Cliente/servidor replicado Existem vários servidores idênticos

portanto, capazes de responder aos mesmos pedidos

Cliente

Cliente

Cliente

Cliente

Cliente Cliente

Cliente

Cliente Cliente

Cliente

Cliente Cliente

Cliente Cliente

Cliente

Cliente

Servidor

Servidor

Servidor

Servidor

Servidor Servidor

Servidor

Servidor

Servidor

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 19

VARIANTES DO MODELO CLIENTE/SERVIDOR: SERVIDOR

Cliente/servidor replicado Positivo

Redundância - não existe um ponto de falha único Permite distribuir a carga, melhorando o desempenho, mas depende do rácio entre escritas e leituras)

Negativo Custo da Coordenação - garantir coerência entre todas as réplicas Recuperar uma réplica que tenha falhado (sem parar o resto do sistema)

Sendo: w : nº de escritas; r : nº de leituras; n : nº de réplicas Se todas as réplicas receberem todos os pedidos de escrita, cada réplica recebe: w + r / n pedidos

Ou seja, as leituras podem ser distribuídas entre as réplicas, mas as escritas têm que ser feitas em todas elas

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 20

VARIANTES DO MODELO CLIENTE/SERVIDOR: SERVIDOR

Cliente/servidor geo-replicado Servidor replicado, com réplicas distribuídas geograficamente

Cliente

Cliente

Cliente

Cliente

Cliente Cliente

Cliente

Cliente

Cliente

Cliente

Cliente

Cliente

Cliente Cliente

Cliente

Servidor

Servidor

Servidor

Servidor

Servidor

Servidor

Servidor

Servidor

Servidor

Servidor

Servidor

Servidor

Servidor

Servidor

Servidor

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 21

VARIANTES DO MODELO CLIENTE/SERVIDOR: SERVIDOR

Cliente/servidor geo-replicado Positivo

Proximidade aos clientes melhora a qualidade de serviço (latência) Redundância acrescida – as falhas das réplicas são (ainda) mais independentes

Negativo

Coordenação mais dispendiosa – maior separação física das réplicas traduz-se na utilização de canais com latência/atrasos significativos

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 22

VARIANTES DO MODELO CLIENTE/SERVIDOR: CLIENTE

Cliente leve (thin client)/servidor O cliente apenas inclui uma interface (gráfica) para executar operações no servidor (ex.: browser + formulários) Positivo:

Cliente pode ser muito simples (não implementa a lógica da aplicação) Negativo

Maior peso no servidor (a lógica da aplicação reside no servidor) Impacto na interatividade (devido ao tempo de ida e volta da rede entre o cliente e o servidor)

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 23

VARIANTES DO MODELO CLIENTE/SERVIDOR: CLIENTE

Cliente completo (estendido)/servidor O cliente executa localmente algumas operações que seriam executadas pelo servidor a lógica da aplicação reside em boa parte no cliente; o servidor fornece armazenamento exemplo: Google Docs, Gmail

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 24

VARIANTES DO MODELO CLIENTE/SERVIDOR: CLIENTE

Cliente completo (estendido)/servidor Positivo:

Permite funcionar desligado/offline, quando não é possível contactar o servidor (recorrendo a caching) Permite diminuir a carga do servidor e melhorar o desempenho e a interatividade

Negativo:

Implementação do cliente mais complexa Necessário tratar da coerência dos dados entre o cliente e o servidor

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 25

Variantes do modelo P2P com diferentes propriedades

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 26

VARIANTES DO MODELO PEER-TO-PEER

Sistema P2P não estruturado As ligações entre os pares são formadas de forma não-determinista Quando se junta à rede, um par liga-se um conjunto de outros pares conhecidos (os seus vizinhos na rede P2P)

Os vizinhos podem variar durante a execução do sistema e de sessão para sessão

C S

C S

C S

C S

C S

C S

C S

C S

C S

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 27

VARIANTES DO MODELO PEER-TO-PEER

Sistema P2P não estruturado Positivo:

Simplicidade, robusto ao dinamismo da rede (churn) Negativo:

Pesquisa pesada (geralmente por inundação), não determinista / incompleta Latência/escalabilidade depende da árvore formada

xpto.mp3?

xpto.mp3?

.mp3?

C S

C S

C S

C S

C S

C S

C S

C S

C S

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 28

VARIANTES DO MODELO PEER-TO-PEER

Sistemas P2P estruturados Os membros do sistema além do endereço físico, têm um endereço lógico A topologia da rede reflete um relação determinista (matemática) entre os endereços lógicos dos pares Existem topologias para todos os gostos, por exemplo um anel

32

6079

70

113

102

40

5280

85

C S

C S

C S

C S

C S

C S C

S

C S

C S

C S

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 29

VARIANTES DO MODELO PEER-TO-PEER

Sistemas P2P estruturados Uma boa topologia, consegue custos de encaminhamento e pesquisas por identificador O(log N)

Cada passo reduz o espaço de pesquisa/encaminhamento pela metade...

Ideia: cada nó liga-se a nós noutros pontos da topologia P2P e usa essas ligações como atalhos: ex: O(log N) vizinhos

60

7970

113

102

40

52

80

8532

Lookup(80)

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 30

Podem existir mais componentes num sistema distribuído, cujo papel é simultaneamente cliente e servidor

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 31

NOÇÃO DE PROXY DE UM SERVIÇO

Proxy de um serviço Processo que fornece um serviço recorrendo a um servidor (desse serviço) para executar o serviço

Utilizações possíveis Intermediário simples (apenas encaminha pedidos e respostas) Intermediário complexo (gateway)

Transformação dos pedidos Serviço adicional, através do armazenamento de respostas a pedidos anteriores.

Diminuição do tempo de resposta (latência inferior para o proxy) Diminuição da carga do servidor Mascarar falhas do servidor / desconexão

Proxy

Web

server

Web

server

server

Servidor WEB

Servidor WEB

PROXY

Browser

Browser

Material de suporte às aulas de Sistemas Distribuídos de Nuno Preguiça e Sérgio Duarte – Copyright DI – FCT/ UNL / 32

SERVIDORES DA PERIFERIA

Sistemas com servidores localizados na periferia da Internet Contratados junto dos ISP para responder a certos pedidos

Objectos pesados como vídeos e imagens são servidos de cópias alojadas nos ISPs, obtidas a pedido. CDNs – Redes de distribuição de conteúdos pesados (exemplo: AKAMAI)

Propriedades Menor latência, filtragem, distribuição de carga, etc.

src: https://clickmotive.files.wordpress.com/2009/11/akamaiedgeplatform.jpg