Peer-to-Peer Systems From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, © Addison-Wesley 2005 Introdução Objetivo do P2P: compartilhamento de dados e recursos em uma grande escala, eliminando a necessidade da administração de servidores e sua infra-estrutura. Sistemas P2P têm a vantagem de que nos dias atuais, o desempenho entre servidores e clientes está se estreitando e a conexões de banda larga têm se proliferado. Tradicionais sistemas cliente/servidor provêem acesso aos recursos localizados em um servidor central ou um agrupamento de servidores fortemente acoplados. Neste projeto centralizado, poucas decisões são feitas onde devem ser postos os recursos e o serviço é limitado pela capacidade do hardware do servidor e sua conectividade na rede. Sistemas P2P provêem acesso a informações espalhadas pela internet, sendo necessários algoritmos de posicionamento e recuperação de objetos na rede. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Características Cada usuário contribui com recursos ao sistema, todos os nós têm as mesmas capacidades e responsabilidades, sua operação correta não depende de um administrador central, oferecem grau de anonimato e usa algoritmos para balanceamento de carga nos nós a fim de possibilitar disponibilidade. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Gerações do P2P A primeira lançada pelo Napster, a segunda com aplicações de compartilhamento de arquivos, como Kazaa e BitTorrent e a terceira, com o emergente uso de camadas de middleware para o gerenciamento global de recursos distribuídos. Nestes sistemas P2P com middleware, haverá uma nova camada de roteamento complementar ao roteamento IP. Motivos para usar outra camada de roteamento sobre o roteamento IP: o espaço de nomes do P2P (GUID – identificadores únicos globais) é muito maior do o IPv6; a localização dos objetos independe da topologia de rede; as tabelas de roteamento são atualizadas sincronamente ou assincronamente, diferentemente do padrão IP; maior tolerância a falhas com adição de replicação; como cada endereço GUID mapeia para uma ou mais replicas de um mesmo objeto e inviável usar IPv4 que só mapeia para um endereço físico; e segurança em ambiente com confiança limitada, permitindo inclusive anonimato. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.1: Distinctions between IP and overlay routing for peer-to-peer applications Scale Load balancing Network dynamics (addition/deletion of objects/nodes) Fault tolerance Target identification Security andanonymity IP Application-level routing overlay IPv4 is lim ited to 232 addressable nodes. The IPv6 name space is much moregenerous (2128), but addresses in both versions are hierarch ically structured and much of the space is pre-allocated according to administrative requirements. Loads on routers are determined by network topologyand associated traffic patterns. Peer-to-peer systems can addressmore objects. The GUID name space is very largeand flat (>2128), allowing it to be much morefully occupied. Object locations can be randomized and hence traffic patterns are divorced from the network topology. IP routing tables are updated asynchronously on Routing tables can be pudated synchronously or a best-efforts basis with time constants onthe asynchronously with fractions of a second order of 1 hour. delays. Redundancy is designed into the IP network by Routes and object references can be replicated its managers, ensuring tolerance of a single n-fold, ensuring tolerance of n failures of nodes router or network connectivity failure. n-fold or connections. replication is costly. Each IP address maps to exactly one target Messages can be routed to the nearest replica of node. a target object. Addressing is only secu re when all nodes are Security can be achieved even in environments trusted. Anonymity for the owners ofaddresses with limited trust. A limited degree of is not achievable. anonymity can be provided. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Napster e seu legado A arquitetura Napster inclui índices centralizados, mas os usuários que supriam os arquivos, e era nos computadores pessoais que eles eram armazenados e acessados. O Napster foi desligado como resultado de um procedimento legal contra seus operadores. Os passos do funcionamento do Napster estão na FIGURA 10.2. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.2: Napster: peer-to-peer file sharing with a centralized, replicated index pee rs Napste r se rv er Inde x 1. File locati on req uest 2. List of peers offering the file Napste r se rv er Inde x 3. File req uest 5. Index update 4. File deli vered Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Napster O argumento do Napster fora que eles não participavam do processo de cópia, apenas os usuários. Contudo, os servidores de índice, parte fundamental do processo de busca, eram localizados em endereços bem conhecidos, o que impediu que os operadores mantivessem anônimos. Um sistema mais distribuído poderia ter alcançado uma melhor separação de responsabilidades e tornando a busca por remédios legais quase impossível. Napster demonstrou a possibilidade de se construir um serviço em larga escala dependente quase completamente nos dados e computadores de usuários comuns da internet. A alocação de servidores ao cliente da música baseava-se na localidade da rede. Com esse mecanismo de distribuição de carga, o serviço escalou rapidamente para um grande número de usuários(13 milhões de usuário). Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Napster-Culpado Em maio de 1999, Shawn Fanning, um estudante universitário de 18 anos, criou um software que combinava o sistema de mensagens instantâneas do IRC, o sistema de compartilhamento de arquivos do Windows e Unix e as capacidades de busca das máquinas de pesquisa. O seu objetivo era criar um sistema que tornasse mais fácil compartilhar arquivos mp3. Ele batizou o seu programa de Napster (o seu apelido na universidade), fundou uma empresa com o mesmo nome e passou a distribuir o cliente de graça. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Middleware P2P Um problema principal no projeto de aplicações P2P é o mecanismo que possibilita que clientes acessem recursos de dados rapidamente e com dependência de localização. O middleware P2P é desenvolvido de forma a tender o posicionamento automático e a localização de objetos distribuídos. Requisitos funcionais: clientes comuniquem-se e localizem qualquer recurso disponível, adição e remoção de recursos e hosts, uma interface de programação simples. Requisitos não-funcionais: escalabilidade global, balanceamento de carga, otimização de interações locais entre pontos vizinhos (distância de rede entre nós), acomodação para disponibilidade dinâmica do host (hosts podem sair ou entrar no sistema P2P sem qualquer aviso). Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Camada de Roteamento (ou ouverlay) O desenvolvimento de um middleware que atende aos requerimentos apresentados anteriormente é um tópico em constante estudo, mas dois sistemas significativos surgiram. Uma camada de roteamento é responsável por localizar nós e objetos. O middleware assume a forma de uma camada responsável por encaminhar requisições de clientes a um host que contém o objeto procurado, sendo que este pode ser relocado em outro host sem que o envolvimento do cliente. Ele assume que um nó pode acessar um objeto através do encaminhamento da requisição por uma seqüência de nós, baseando-se no conhecimento adquirido em cada nó a fim de localizar o objeto. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.3: Distribution of information in a routing overlay AÕs r outing knowledg e DÕs r outing knowledg e C A D B Obj ect: Node: BÕs r outing knowledg e CÕs r outing knowledg e Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Tarefas 1. Um cliente desejando invocar uma operação em um objeto submete uma requisição com o GUID do objeto para a camada de roteamento, que encaminhará a requisição até alcançar um nó que contenha uma réplica do objeto. 2. Um nó desejando tornar um novo objeto disponível calcula um GUID e anuncia na camada de roteamento, que assegura que o objeto seja alcançável pelos outros clientes. 3. Quando os clientes requisitarem a remoção de um objeto, a camada de roteamento deve torná-lo indisponível. 4. Nós podem entrar e sair do serviço. Quando entrar no serviço, a camada de roteamento busca algumas responsabilidades para ele. Quando sair, suas responsabilidades são redistribuídas. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Modelos Modelo DHT: a GUID do objeto é gerada com uma função hash, usada para determinar o posicionamento e a localização, por isso, esses sistemas que usam uma camada de roteamento são conhecidos como tabelas hash distribuídas. Com isso, há três operações básicas, put (GUID, dados) para armazenar, remove (GUID) para remover todas as referências do objeto e get (GUID) para recuperar o objeto de um dos nós que o armazena. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.4: Basic programming interface for a distributed hash table (DHT) as implemented by the PAST API over Pastry put(GUID, data) The data is stored in replicas at all nodes responsible for the object identified by GUID. remove(GUID) Deletes all references to GUID and the associated data. value = get(GUID) The data associated with GUID is retrieved from one of the nodes responsible it. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Modelos Modelo DOLR: outra forma, mais flexível, usa uma camada de roteamento e localização distribuída de objetos, sendo que ela é responsável por manter um mapeamento entre GUID e endereços dos nós onde as réplicas estão localizadas. Suas funções são publish (GUID) torna o objeto disponível, unpublish (GUID) torna o objeto indisponível e sendToObj (msg, GUID, [n]) envia uma mensagem ao objeto de forma a acessá-lo. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.5: Basic programming interface for distributed object location and routing (DOLR) as implemented by Tapestry publish(GUID ) GUID can be computed from the object (or some part of it, e.g. its name). This function makes the node performing a publish operation the host for the object corresponding to GUID. unpublish(GUID) Makes the object corresponding to GUID inaccessible. sendToObj(msg, GUID, [n]) Following the object-oriented paradigm, an invocation message is sent to an object in order to access it. This might be a request to open a TCP connection for data transfer or to return a message containing all or part of the object’s state. The final optional parameter [n], if present, requests the delivery of the same message to n replicas of the object. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Estudos de caso de middleware de roteamento a) Pastry: todos os nós e objetos podem ser acessados através de GUID de 128 bits. Em uma rede com N nós participantes, o Pastry irá encaminhar a mensagem endereçada a qualquer GUID em O (log n) passos. Caso o nó esteja ativo, a mensagem é encaminhada a ele; caso contrário, a mensagem é encaminhada ao nó com GUID mais próxima. Os passos de roteamento usam, normalmente, o UDP e transferem ao destino mais “próximo”, não em ternos físicos, mas em termos de um espaço artificial de GUID. Caso um nó entre no sistema, ele recebe todos os dados para construir uma tabela de roteamento e outras informações de estado dos membros existentes, se o nó falhar ou sair, os demais nós podem detectar sua ausência e se reconfigurar cooperativamente para refletir as mudanças ocorridas. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Pastry O algoritmo de roteamento envolve o uso de uma tabela de roteamento em cada nó para encaminhar a mensagem de forma eficiente. Para propósitos de explicação, será apresentado o algoritmo de duas formas: 1) cada nó inicia com um vetor com as GUID e IP dos nós com GUID numericamente próximos. O espaço é tratado de forma circular (FIGURA 10.6). O processo é feito comparando a GUID da mensagem com as GUID que contém, e encaminhando para a GUID mais próxima numericamente, até alcançar a mensagem ao seu destinatário, evidentemente, em um processo ineficiente. 2) cada nó mantém uma tabela de roteamento e forma de árvore, GUID são valores hexadecimais classificados por seus prefixos. A tabela tem tantas linhas quantos dígitos houver na GUID, no Pastry são 32 linhas, e em cada linha há 15 entradas, uma para cada valor hexadecimal possível excluindo o valor GUID do nó. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.6: Circular routing alone is correct but inefficient Based on Rowstron and Druschel [2001] 0 FFFFF....F ( 2128-1) D471F1 D467C4 D46A1C D13DA3 The dots depict live nodes. The space is considered as circular: node 0 is adjacent to node (2128-1). The diagram illustrates the routing of a message from node 65A1FC to D46A1C using leaf set information alone, assuming leaf sets of size 8 (l = 4). This is a degenerate type of routing that would scale very poorly; it is not used in practice. 65A1FC Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.7: First four rows of a Pastry routing table Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.8: Pastry routing example Based on Rowstron and Druschel [2001] Routing a mess age from node 65A1FC to D46A1C. With the ai d of a wel l-popul ated routing table the mes sage c an be del ivered i n ~ log16 (N ) hops . 0 FFFFF....F ( 2128 -1) D471F1 D46A1C D467C4 D462BA D4213F D13DA3 65A1FC Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Pastry O algoritmo usado se aproveita do apresentado anteriormente, ou seja, garante a entrega da mensagem, e usa a tabela de roteamento a fim de melhorar a eficiência de desempenho do algoritmo. O algoritmo está detalhado na FIGURA 10.9. A diferença entre as duas abordagens, 1 e 2, é que na primeira levase em conta apenas a proximidade do GUID que pode ou não ser localmente próximo, causando ineficiência, com o acréscimo da tabela de roteamento e a computação do prefixo do comprimento mais longo comum do GUID se reduz a quantidade de nós que a mensagem deva passar até alcançar o destino. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.9: Pastry’s routing algorithm To hand l e a mess ag eM add res sed to a no dD e (where R[p ,i] is th e el ement at col umn i, ro w p o f t h e rou t in g tab l e): 1 . If (L -l < D < L l) { // th e dest in at io n is wit h in th e leaf set o r is th e cu rren t n od e. 2. ForwardM t o th e elemen tL i o f t h e l eaf s et wit h GUID clo ses tD t oo r th e cu rren t n od eA. 3 . } el se { // u se th e ro u tin g tab le to d es p atM ch t o a n o de wi th a cl os er GUID 4. fi nd p , t he l en gt h of th e lo n gest commo n p refi x ofD and A. an d i, th e (p +1 )th h exad ecimal d i gi t oD. f 5. If (R[p ,i] ° n ul )l fo rwardM t o R[p ,i] // ro ut eM t o a n o de wi th a lo ng er co mmo n p refix. 6. else { // t here is n o en try in t he ro u ti ng t ab le 7. Forward M t o an y no d e inL o r R wi th a co mmon p refix o f l en g thi, bu t a GUID t h at is n umerically clo ser. } } Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Pastry Outros aspectos do Pastry: uso de algoritmo de vizinho mais próximo, através de recursividade sobre o conjunto de nós armazenados; localidade com uma estrutura altamente redundante, com mais de uma rota entre dois pares de nós; tolerância a falhas contra quedas eventuais (usando a abordagem “at-least-once”, causando envio repetidos de mensagens) e contra usuários maliciosos; uso de conhecimento acerca de dependências, como no caso em que uma mensagem é enviada a um host que não responde, assim, o nó que envio a mensagem começa a considerá-lo um host suspeito; etc. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Tapestry b) Tapestry: implementa uma tabela hash distribuída e encaminha mensagens baseando-se na associação de GUID similarmente como o Pastry o faz. A diferença é que ele usa o modelo DOLR, enquanto o Pastry usa o DHT, apresentado anteriormente. Isso dá ao Tapestry maior flexibilidade porque pode posicionar réplicas em distâncias próximas reduzindo a latência e minimizando a carga na rede ou garantindo tolerância a falhas. O identificador usado é de 160 bits, contudo GUID é usado apenas para recursos, enquanto computadores têm um NODEID. O processo usado para publicação de recursos nos hosts está na FIGURA 10.10. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.10: Tapestry routing From [Zhao et al. 2004] 4377 (Root for 4378) Tapestr y r outings for 4377 437A 43FE publish path Locati on mappi ng for 4378 4228 4378 Phil Õs Books 4361 4664 4A6D 4B4F Routes actually taken by se nd(4378) E791 57EC AA93 4378 Phil Õs Books Replic as of the fil ePhil Õs Book(G=4378) s are hosted at nodes 4228 and AA93. Node 4377 i s the root node for obj ec t 4378. T he T apes try routings shown are some of the entries i n routing tables. The publ is h paths s how routes followed by the publ ish mess ages layi ng down c ached location mappings for object 4378. T he l oc ation mappi ngs are s ubsequentl y used to route mess ages s ent to 4378. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Estudos de caso de aplicações a) Squirrel Web Cachê: dos mesmos desenvolvedores do Pastry. As formas de caching de navegadores internet podem ser servidas no cachê da máquina cliente, de um proxy ou do próprio servidor HTTP. Quando uma página é requisitada, há três possibilidades, ou a página não pode ser cacheada, ou ela não se encontra na cachê (cachê miss) ou ela se encontra. Neste último caso, a página é testada para saber se é atual, ou usando uma data de última modificação, ou o tempo de vida, ou uma eTag. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Squirrel O sistema Squirrel usa o mecanismo de cachê semelhante ao de um proxy web com o uso de uma pequena porção de recurso das máquina na rede para realizar o cachê. Inicialmente, o GUID do objeto é computado formando um número de 128 bits, e, na forma mais simples de implementação, o objeto é armazenado no host cujo GUID é o mais próximo do GUID do objeto. Se a cópia no cachê não for atualizada ou o objeto desejado não estiver na cachê, Squirrel encaminha uma mensagem de Get para o nó inicial, se este por sua vez não possuir nenhuma cópia do objeto encaminha uma mensagem de Get para o nó servidor. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Squirrel Squirrel é avaliado sob três ópticas que levaram os seus projetista a concluir que seu desempenho é igual a de um cachê centralizado: Redução da largura de banda usada – inversamente proporcional a quantidade de acertos na cachê. Latência percebida pelos usuários no acesso aos objetos web – maior quantidade de mensagens encaminhada através da camada de roteamento. Carga computacional e de armazenamento imposta – baixo consumo de recursos. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 OceanStore File Store b) OceanStore File Store: dos mesmos desenvolvedores do Tapestry, é um protótipo de um armazém de arquivos P2P com suporte a arquivos mutáveis. Tem replicação, com mecanismo de consistência de réplicas, privacidade e integridade. Um protótipo chamado Pond foi desenvolvido que usa o mecanismo de roteamento Tapestry a fim de colocar blocos de dados em nós distribuídos pela internet e encaminhar requisições a eles. Os objetos são semelhantes a arquivos, compostos de blocos. Contudo, cada objeto é uma seqüência ordenada de versões imutáveis que, a princípio, são mantidas para sempre. A cada atualização no objeto, uma nova versão é gerada, armazenando apenas os blocos distintos entre a última versão e a nova. O esquema de organização com acesos mediante um bloco de metadados chamado bloco raiz e blocos adicionais de direção se necessários Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.11: Storage organization of OceanStore objects AGUID BGUID (copy on write) VGUID of current version certificate version i+1 VGUID of version i d1 d2 d3 d2 d3 root block version i Ver sion i+1 has been updated in blocks d1, d2 and d3. The certificate and the root blocks incl ude some metadata not shown. All unlabel led arr ows ar e BGUIDs. indirection blocks data blocks d1 VGUID of version i-1 Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 d4 d5 OceanStore File Store Existem três formas de GUID usadas (FIGURA 10.12), BGUID o hash de um bloco de dado, VGUID o BGUID do bloco raiz da versão e AGUID que unicamente identifica todas as versões do objeto. Com uso destes três GUID diferentes, é possível acessar as novas versões de um objeto, ou versões anteriores, ou mesmo blocos de dados específicos de um objeto em qualquer uma de suas versões. Usa-se um certificado assinado a fim de assegurar a autentica associação entre as cadeias de referência de um objeto, sendo assim, um certificado conterá a VGUID da nova versão, junto a um timestamp e um número seqüencial de versão. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.12: Types of identifier used in OceanStore Name Meaning Description BGUID block GUID Secure hash of a data block VGUID version GUID BGUID of the root block of a version AGUID active GUID Uniquely identifies all the versions of an object Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 OceanStore File Store A construção de um certificado é combinada entre um pequeno conjunto de hosts chamado anel interno, o novo certificado substituí a antiga cópia primária nestes hosts, e é então disseminada para um grande número de cópias secundárias. A atualização de dados envolve o consenso de todos os hosts do anel interno associado ao objeto. Além disso, esse processo envolve checagem dos direitos de acesso e serialização da atualização com quaisquer escritas pendentes. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Ivy File System c) Ivy File System: é um sistema de escrita/leitura de arquivos com suporte para múltiplos leitores e escritores implementado sobre uma camada de roteamento. Alguns problemas: Manutenção da consistência dos arquivos com atualizações concorrentes de múltiplos hosts sem uso de bloqueio porque a falha de um nó ou da conectividade da rede causaria bloqueio perpétuo; confiança parcial entre os participantes e vulnerabilidade nos ataques a máquinas participantes; e continua operação durante partição da rede que pode resolver em atualizações conflitantes. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Ivy File System O nó cliente tem instalado um processo servidor Ivy que usa uma DHash para armazenar e acessar registros de log nos nós baseado em GUID (FIGURA 10.14). Um armazém de dados Ivy consiste em um conjunto de logs atualizados, um por participante, cada participante pode ler de todos os logs, mas escrever apenas no seu próprio. Usam-se vetores de versão a fim de impor uma ordenação total das entradas de log quando lidos múltiplos logs, entretanto, um algoritmo para uma simples leitura teria desempenho ruim. Para melhorar o desempenho, usam-se cachê local e snapshots, representações do sistema de arquivos computadas e armazenadas localmente por cada participante. Como há um processo servidor por nó participante, atualizações são feitas em separado, sem coordenação com outros servidores. A serialização é feita no momento da leitura dos blocos, de forma a construir o conteúdo do arquivo. Integridade dos dados é assegurada. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Figure 10.14: Ivy system architecture Ivy node DHash server Application Application DHash server Ivy ser ver DHash server DHash server Modifled NFS Cli ent modul e DHash server Ker nel Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Resumo Arquiteturas P2P foram primeiramente apresentadas em sistemas de compartilhamento de dados de larga escala, como Napster e seus descendentes. Pesquisas subseqüentes desenvolveram um middleware P2P que encaminha requisições aos objetos aonde quer que estejam na internet. O endereçamento envolve o uso de GUID, o posicionamento dos objetos de acordo com uma função de mapeamento específica do middleware, e a entrega é realizado por uma camada de roteamento no middleware. Esta camada também adiciona integridade baseada no uso de funções hash segura para geração do GUID e disponibilidade baseado em réplicas de objetos e algoritmos de tolerância a falhas. Benefícios: exploração de recursos inutilizados, escalabilidade com balanceamento de carga e independência do número de clientes e hosts. Fraquezas: uso de armazenamento para dados mutáveis é mais caro que o uso de um servidor centralizado e o anonimato ainda não é totalmente garantido. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 eMule Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 O que é? eMule (Mula Eletrônica) é um programa de troca de arquivos que é baseado na Rede P2P eDonkey2000, mas oferecendo mais recursos do que o cliente padrão (eDonkey) porque é um programa que código fonte aberto (open source), facilitando assim que programadores do mundo inteiro possam fazer novas implementações e modificações visando à melhoria do programa à cada nova versão. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Como funciona o emule O eMule funciona à partir de conexões à servidores existentes no mundo inteiro, feitos por usuários do eMule com um programa específico para isto. Outra vantagem é que no eMule o arquivo tem um código hash e com isso o eMule consegue distinguir separadamente cada arquivo e criar um link próprio para cada arquivo para ser indexado em fóruns e sites indexadores (como o: http://www.pootz.org/ e http://www.sharereactor.com/), e com isso facilitar a localização de um lançamento e a eliminação de arquivos falsos (fake) na rede. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Capacidades Tem que saber primeiramente a velocidade da conexão. Os valores para a velocidade são dados geralmente em por kilo bits por o segundo [ kb/s ], mas deverá saber os valores para inserir no eMule em kilo Bytes por o segundo [ kB/s ]. Exemplo: Máximo de Download: kB/s de 256kb/s ÷ 8 = 32 Máximo de Upload: kB/s de 128kb/s ÷ 8 = 16 A velocidade depende muito da conexão. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Porta do Cliente O eMule usa a porta 4662 como porta padrão. Mude-a somente se você estiver recebendo mensagem de ID BAIXO (LOW ID) ou se esta porta estiver fechada pelo Provedor, isto fará com que os dados não saiam ou entrem no seu router ou modem. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Arquivos Arquivos completos: Especifique o diretório onde serão movidos os downloads concluídos. Padrão Incoming; Arquivos Temporários: Especifique o diretório onde são armazenados os downloads em andamento. Padrão Temp; Diretórios compartilhados: Aqui você pode especificar Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Servidores Estáticos São servidores que podem ser adicionados ao arquivo staticservers.dat que ficam pra sempre no eMule e você pode adicionar e remover quando quiser. O método mais fácil seria quando você colocar um servidor e ver que ele é um servidor bom. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 ID Um ID ALTO significa que a porta escolhida nas preferências > conexões (padrão 4662) está aberta e livremente acessível. Um ID BAIXO significa que esta porta esta bloqueada ou não pode ser alcançada. Isto pode ser causado pelo provedor, por routers ou por usuários de proxy. Um ID BAIXO é um valor menor que 16777216. Ter um ID baixo não significa que não haverá upload ou download, mas terá diversas desvantagens como: baixa quantidade de fontes encontradas, limites de usuários em servidores com ID BAIXO, 2 clientes com ID BAIXO não podem se conectar, perda de conexões com usuários, etc. Se você tiver usando um Firewall (programa usado para bloquear invasões), você poderá ter um ID BAIXO (Low ID) Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Mods Como o eMule é um programa de código fonte aberto, algumas pessoas ou um grupo (EX: Plus, Tarod...etc) fazem alterações na versão Oficial do eMule, implementando novas funções. Essas alterações trazem novas funções muito interessantes que ajudam muito no download dos arquivos. Esse é o forum oficial do eMule sobre os novos MODs: eMule Mods Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 BitTorrent Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 BitTorrent O BitTorrent é uma tecnologia criada por Bram Cohen que permite o compartilhamento de qualquer tipo de arquivo pela internet, sendo muito usado para a distribuição de vídeos, músicas e programas. Sua forma de trabalho é muito eficaz e evita, por exemplo, que determinados usuários só façam download, mas não compartilhem arquivos (pelos menos teoricamente). Isso porque a taxa de download é equivalente à taxa de upload, ou seja, somente compartilhando é que você consegue baixar arquivos. Por esta razão, quando você está iniciando um determinado download, a velocidade utilizada é lenta e vai aumentando de acordo com o que já foi baixado do arquivo. Quanto mais você tiver de um arquivo, mais usuários se conectarão ao seu computador e pela regra, a taxa de velocidade do seu download aumenta. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Como Funciona Na verdade, o BitTorrent é um protocolo, que, como já dito, permite o compartilhamento de qualquer tipo de arquivo. Devido a isso, o BitTorrent não pode ser considerado um software para fins ilegais (como foi o pioneiro Napster, por permitir a distribuição de músicas no formato MP3), pois qualquer pessoa pode usar o protocolo para distribuir arquivos. Existem até empresas que compartilham seus softwares por este meio. Apenas como exemplo, suponha que Professor Mario criou um e-book. Além de disponibilizá-lo em um site, ele pode distribuí-lo pelo BitTorrent e isso não fere nenhuma lei de proteção à propriedade intelectual. Se conteúdo ilegal é distribuído pelo serviço, a responsabilidade é dos usuários e não do programa. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Como Funciona Para que você possa fazer download (e upload) pelo BitTorrent, é necessário que cada item compartilhado esteja associado a um arquivo denominado torrent, cuja extensão é.torrent (por exemplo, mestrado.torrent). Trata-se de um arquivo pequeno, mas que contém as informações necessárias para o compartilhamento, como o local onde o arquivo está e a seqüência que verifica a integridade do mesmo. Esse arquivo pode estar disponível em um site e quando acessado, inicia o download do arquivo compartilhado (desde que o BitTorrent esteja instalado). Isso significa que você precisa achar um torrent do arquivo que você deseja baixar. Não há uma caixa de busca como a usada no kaZaA, por exemplo. Para encontrar torrents você pode usar sites voltados a este fim. Um dos mais conhecidos atualmente é o http://www.torrentreactor.net/, que separa os torrents em categorias. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Termos do Torrent Seed (ou seeding): é a denominação dada ao computador que possui um arquivo completo compartilhado, como o computador que primeiramente disponibilizou o arquivo e os outros que o baixaram por inteiro; Peer: nome dado a cada computador que compartilha arquivos. Leech (ou leeching): é a denominação dada ao momento em que um computador faz download; Tracker: denominação dada ao servidor que é responsável por organizar os arquivos disponíveis e direcionar os downloads; Swarm: nome dado ao conjunto de computadores que estão compartilhando o mesmo arquivo. Se, por exemplo, o arquivo infowester.pdf está sendo compartilhado por 2 seeds e por 8 peers, o swarm do arquivo contém 10 computadores (2 seeds + 8 peers). Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Exemplo Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005 Resumo O BitTorrent é muito útil, versátil, e atualmente, o responsável por 35% do tráfego de dados na Internet, número maior que o de todos os demais compartilhadores de arquivos somados! A questão acerca da legalidade do mesmo é algo que ainda será muito discutido, mas uma coisa é certa: se bem utilizado, o BitTorrent promove benefícios para todo mundo: servidores menos carregados, e internautas fazendo downloads a boas velocidades. Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Pearson Education 2005