Arquitecturas de Sistemas Centralizadas Descentralizadas Híbridas Arquitecturas Descentralizadas de Sistemas Dividir aplicações cliente-servidor em três camadas (interface, processamento, dados): distribuição vertical Cada máquina tem um conjunto de funcionalidades diferentes E se dividirmos as aplicações em partes iguais? distribuição horizontal Cada máquina tem todo o conjunto de funcionalidades e uma parte dos dados Passamos da arquitectura cliente-servidor, para a arquitectura peer to peer 4 clientes.
Arquitecturas Descentralizadas de Sistemas Rede Overlay Rede overlay: uma rede lógica sobreposta a uma ou mais redes físicas Ligação real : canal físico que interliga dois encaminhadores/máquinas Ligação overlay: canal TCP/IP que liga dois nós de um sistema distribuído Nos sistemas descentralizados, para garantir uma boa distribuição de carga pelo sistema, temos de construir e gerir a rede overlay que interconecta os processos Duas abordagens fundamentais: Estruturadas a rede overlay segue um estrutura definida Não estruturadas a rede corresponde a um grafo aleatório Redes P2P Estruturadas: Chord Maioria das redes P2P estruturadas são Distributed Hash Tables (DHTs) Cada nó da rede é responsável por um conjunto de chaves (e seus dados ou recursos associados) Uma função de hash mapeia uma chave para o id de seu nó responsável Um exemplo: Chord Rede overlay em anel Espaço de chaves e ids com x bits, contém no máximo 2 x nós id do nó responsável por uma chave k é dado por succ(k) succ(k): nó com menor id que seja maior ou igual a chave k
Redes P2P Estruturadas: Chord Considere uma rede com 16 nós (cada nó estaria associado a apenas uma chave) Um processo conhece apenas o nó 1 e quer aceder algo que está no nó 10? Acede 1 1 encaminha para 0 0 encaminha para 15 11 encaminha para 10 Parece eficiente? 9 passos de comunicação Na prática o que se quer são buscas em O(log n), logo temos de usar atalhos Redes P2P Estruturadas: Chord Cada nó da rede overlay conhece: Seu antecessor no anel Seu sucessor no anel Outros p nós espalhados de maneira uniforme pelo anel» Atalhos para tornar buscas por chaves distantes mais rápidas Exemplo do slide anterior: A partir do nó 1 da rede (ao lado) queremos procurar a chave k = 1582 (vamos usar hash) hash(1582) = 1582 % 16 = 14 succ(14) = 14 Caminho:» Procuro no nó 1» Nó 1 redirecciona ao nó 13» Nó 13 redirecciona ao nó 14
Redes P2P Estruturadas: CAN Content Addressable Network (CAN) Espaço cartesiano de d dimensões (ao lado [0,1]x[0,1]) Cada nó é responsável por uma região desse espaço (ao lado, temos 6 nós) Cada item de dados está associado a um ponto nesse espaço» Requer uma função de hash um bocado mais sofisticada Cada nó da rede tem ligações com nós responsáveis por regiões subjacentes a sua Redes P2P Estruturadas: CAN Um problema fundamental em redes P2P é como gerir sua topologia quando há Falha de nós Entrada de novos nós Saída de nós Chord: Insere-se um novo nó no anel As chaves são redistribuídas» O seu sucessor cede metade das chaves para o novo elemento Os atalhos da rede são reajustados (No caso da remoção, é parecido) CAN: Um novo nó entra em uma posição A região desta posição se divide em duas subregiões» Uma para o antigo nó responsável pela região e outra para o novo nó (No caso da remoção é mais complicado: como fazer merge de regiões?) 13 (0.2,0.45) (0.2,0.15)
Redes P2P Não Estruturadas Nas redes não estruturadas, a topologia da rede overlay é tipicamente um grafo aleatório Grafo aleatório = grafo gerado por métodos probabilistas (e.g., cada processo escolhe um nó de uma lista e se liga a ele, se já não estiver ligado) Como fazer buscas numa rede deste tipo? Flooding: difusão da busca aos vizinhos que vão passando-a adiante Como detectar e recuperar-se de falhas, entradas e saídas de nós? Modificar a rede periodicamente! Redes P2P Não Estruturadas Algoritmo para evolução de topologias: Um nó escolhe um de seus vizinhos aleatoriamente Depois, escolhe metade de suas ligações e as envia a este vizinho, que faz o mesmo Os nós agora trocam metade de suas ligações pelas ligações recebidas do vizinho Cada nó troca uma de suas ligações. Obs: Note que é possível gerar uma rede particionada!
Gestão de Topologia em Redes Overlay É possível integrar redes estruturadas com redes não estruturadas se usarmos uma abordagem em dois níveis: No nível aleatório temos as ligações do grafo aleatório No nível estruturado apenas as ligações seleccionadas são utilizadas Aplica alguma regra para escolher os vizinhos que fazem sentido. Retorna a lista de vizinhos obtida aleatoriamente. Gestão de Topologia em Redes Overlay Qual o benefício disso? Assuma um espaço cartesiano NxN, cada nó tem uma posição (x,y) Suponha que queiramos que os nós se liguem apenas a outros nós que estejam próximos Através da evolução da rede aleatória, e a aplicação da regra de distância, chegamos a uma rede estruturada, com gestão de membros automática
Redes P2P Não Estruturadas: Superpeers Problema das redes não estruturas: Busca por flooding (extremamente custosa) Uma solução: Usar alguns nós como pontos de concentração de informações (e.g., guardam índices para todas as informações da rede) Estes nós são chamados superpeers Como escolher que nó será um superpeer? Algoritmos para eleição de líder (que veremos mais a frente na cadeira) Como consequência, é possível ter redes P2P em dois níveis: Rede overlay de superpeers Rede overlay de peers normais (que pode ou não ser particionada ao redor de um superpeer). Arquitecturas de Sistemas Centralizadas Descentralizadas Híbridas
Arquitecturas Híbridas - BitTorrent Na arquitecturas híbridas temos uma rede overlay com diversos nós e alguns servidores que desempenham papéis muito bem definidos no sistema Muito usada em sistemas colaborativos Um exemplo: BitTorrent Cada nó obtém blocos de um ficheiro de outros nós Entretanto, o tracker é o servidor (um para cada conjuntos de ficheiros) que monitora que nós activos tem esses blocos Objectivo principal: colaboração (onde outros sistemas falhavam) Um nó cede blocos preferencialmente a outros nós que estão a lhe ceder ficheiros Bottleneck do sistema.