Aplicações Peer-to-Peer
Transcrição
Aplicações Peer-to-Peer
UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana Aplicações Peer-to-Peer Vânia de Oliveira Neves São Carlos, novembro de 2007 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana Resumo O presente trabalho tem por objetivo apresentar a descrição de algumas aplicações Peerto-Peer. Inicialmente ele apresenta as definições deste tipo de aplicação e descreve sua arquitetura. Em seguida, apresenta uma classificação das principais aplicações P2P e quais aplicações fazem parte dessa classificação, descrevendo com maiores detalhes a mesma. UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana Índice 1. Introdução ............................................................................................................................. 2 2. Arquitetura ............................................................................................................................ 4 Arquitetura Centralizada ........................................................................................................... 4 Arquiteturas Peer-to-Peer não estruturadas ............................................................................... 5 Arquiteturas Peer-to-Peer estruturadas...................................................................................... 6 3. Aplicações P2P...................................................................................................................... 8 Comunicação e Colaboração: .................................................................................................... 8 Msn Messenger ..................................................................................................................... 8 Yahoo! Messenger ................................................................................................................ 8 Computação Distribuída ............................................................................................................ 8 Seti@Home ........................................................................................................................... 9 Compartilhamento de Arquivos (Distribuição de Conteúdo) .................................................... 9 Napster .................................................................................................................................. 9 Gnutella ............................................................................................................................... 10 Freenet ................................................................................................................................. 11 FastTrack/ KaZaA ............................................................................................................... 13 BitTorrent ............................................................................................................................ 13 Sistema de armazenamento de arquivos em rede (network storage) ...................................... 14 Transmissão de dados (overlay multicast) .............................................................................. 14 4. Conclusão ............................................................................................................................ 16 5. Referências Bibliográficas .................................................................................................. 17 1 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana 1. Introdução Este trabalho é parte da disciplina SCE-5777 - Sistemas Distribuídos e tem como objetivo apresentar e descrever as aplicações peer-to-peer. A seção seguinte apresenta uma classificação da arquitetura desses sistemas. A seção 3 descreve as aplicações P2P mais comumente usadas bem como suas categorias. Na seção 4 são realizadas algumas considerações gerais. Há várias definições de sistemas Peer-to-Peer (P2P) na literatura e não existe um acordo entre o que é e o que não é um desses sistemas e quais seriam suas principais características. Um primeiro conceito seria de arquitetura distribuída completamente descentralizada onde todos os nós possuem funcionalidades e tarefas equivalentes. Porém, essa definição excluiria várias aplicações que são aceitas como peer-to-peer, tais como o Napster e Kazaa. [1] definiu como sendo o seguinte: “P2P é uma classe de aplicações que levam vantagens de recursos – armazenamento, ciclos de CPU, conteúdo, presença humana – disponíveis nas bordas da Internet”. Esta definição inclui sistemas que conta com servidores centralizados, assim como várias aplicações no campo da Computação em Grade [1]. Segundo [1], os sistemas peer-to-peer são assim chamados não por causa de sua operação interna ou arquitetura, mas como resultado de como eles podem ser percebidos externamente, ou seja, se eles dão a impressão de fornecer uma interação direta entre computadores. Como resultado, diferentes definições de peer-to-peer são aplicados para acomodar os vários casos de sistemas ou aplicações. Ainda segundo esse autor, há duas características essenciais presentes em sistemas P2P. São elas: • • O compartilhamento direto de recursos entre nós, preferivelmente sem requerer a intermediação de um servidor centralizado. Esses podem ser usados para algumas tarefas específicas (como adicionar novos nós a rede, obter chaves globais para um dado criptografado). Tolerância a falhas e capacidade de auto-organização, tendo como norma habilidade para tratar a instabilidade, conectividade variável e população de nós transientes. Também deve se adaptar automaticamente a falhas tanto em conexões de redes quanto em computadores. Esta tolerância a falhas e a capacidade de auto organização sugerem a necessidade de topologia de rede adaptável que mudará a medida que os nós entrarão ou sairão e a conectividade da rede falhará ou se recuperará, funcionando para manter sua conectividade e desempenho. 2 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana Dessa forma, [1] propõem a seguinte definição: “Sistemas peer-to-peer são sistemas distribuídos consistindo de nós interconectados capazes de se auto-organizar em topologias de rede overlay com o propósito de compartilhar recursos tais como conteúdo, ciclos de CPU, armazenamento e largura de banda, capazes de se adaptarem a falhas e acomodar populações transientes de nós enquanto mantém conectividade aceitável e desempenho, sem necessitar da intermediação ou apoio de uma entidade central”. Essa definição ainda exclui sistemas que são considerados peer-to-peer por outras definições. Uma outra maneira de descrever sistemas P2P, é pensar a respeito de propriedade: Quem é o dono do hardware que os serviços estão rodando? [5] 3 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana 2. Arquitetura Existem diferentes categorizações em relação a arquitetura de sistemas P2P. Alguns autores classificam como sendo Centralizada, Descentralizada e Hierárquica. Outros como Centralizada, Inundação e Tabela Hash Distribuída (DHT). Nesse monografia será abordada a seguinte arquitetura: Centralizada, Descentralizada Não Estruturada e Descentralizada Estruturada. Arquitetura Centralizada Nesse tipo de arquitetura existe uma base centralizada com a localização dos recursos do sistema, com informações de todos os participantes da comunidade. Os peers conectam-se a essa base, informando todos os dados que ele deseja compartilhar na rede. Essa base atualiza suas informações para que fique disponível para consulta dos usuários. Quando um usuário deseja buscar um determinado arquivo, ele faz a pesquisa no servidor que escolhe o peer mais adequado. Então, a troca de arquivos será realizada diretamente entre os dois peers. A Figura 1, retirada de [2], exemplifica o funcionamento desse tipo de arquitetura. Em 1, um novo cliente conecta ao servidor e envia uma lista com os dados que deseja compartilhar. Em 2, o cliente, já conectado, faz uma busca de um determinado arquivo. Em seguida, em 3, o servidor retorna a pesquisa com o endereço dos nós que contém o item pesquisado. Dessa forma, o cliente conecta ao nó que contém o arquivo (4) e finalmente, em 5, a transferência do arquivo é realizada entre os nós. 4 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana Figura 1 ‐ Funcionamento de uma rede centralizada Uma das vantagens neste tipo de sistema é que se o arquivo estiver em algum nó da rede, ele será encontrado. O que nem sempre acontece com os outros modelos. Além disso, as buscas são facilmente implementadas. A grande desvantagem é que há um ponto central de falhas. Se esse ponto falhar a rede toda falha. Outra desvantagem é que pode gerar limites de escalabilidade [2]. Arquiteturas Peer-to-Peer não estruturadas Nesse tipo de arquitetura, a rede não possui um servidor centralizado e nem um controle preciso sobre a topologia e localização dos arquivos. Quando um nó deseja entrar na rede, ele descobre alguns outros nós já presentes e se conecta arbitrariamente de modo não estruturado a alguns deles. A idéia é que cada nó mantenha uma lista de vizinhos (que foi construída de modo mais ou menos aleatório). Quando um nó precisa pesquisar um dado específico, ele manda uma mensagem a todos os seus vizinhos. Esses avaliam a mensagem e verificam se tem o dado pesquisado. Se tiver, manda uma mensagem de volta ao nó de onde se originou a pesquisa informando o seu endereço. Caso contrário, incrementa o número de saltos da mensagem (hop count) e repassa para todos os seus vizinhos. Se o número de saltos ultrapassar o time-to-live (TTL), o repasse de mensagens é interrompido. Esse é um mecanismo de inundação controlada por TTL. A Figura 2, retirada de [3], mostra o funcionamento desse mecanismo. 5 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana Figura 2 ‐ Mecanismo de Inundação A desvantagem dessa arquitetura é que elas não são escaláveis pois necessitam de um grande poder de processamento e largura de banda. Além disso, não oferecem garantia quanto à alcançabilidade dos recursos ou ao tempo necessário para encontrálos. Também é difícil encontrar o arquivo desejado sem distribuir a query amplamente [2,7]. A vantagem é que eles podem acomodar facilmente uma população de nós altamente transientes [5]. Arquiteturas Peer-to-Peer estruturadas Nesse tipo de arquitetura, a rede não possui um servidor centralizado de diretório de informações, mas tem uma estruturação significativa entre os nós. Surgiu principalmente para tentar preencher a lacuna dos sistemas não-estruturados e dos sistemas centralizados. Esse tipo de arquitetura cria as conexões entre os nós seguindo uma estrutura bem definida. Além disso, possuem garantias de alcançabilidade dos recursos, oferecem balanceamento automático de carga e auto-organização, facilitando a localização dos dados. A conexão entre os nós é feita tendo como base o identificador do nó, que geralmente é obtido com alguma função de hash segura calculado sobre alguma informação única do nó (por ex., endereço IP). Como as conexões entre os nós são feitas conforme um protocolo pré-estabelecido, isso possibilita que a pesquisa para os recursos seja modelada através de um processo iterativo determinístico, que garante a alcançabilidade dos dados, ao invés de uma busca baseada em inundação no grafo de conexões. 6 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana Os principais algoritmos que implementam esse modelo são: Chord, CAN, Tapestry e Pastry. A responsabilidade destes algoritmos é manter a topologia da rede consistente. A vantagem dessas redes é que elas são muito úteis para criação de aplicações que requerem buscas rápidas, escaláveis e confiáveis por pares únicos de chave-valor. A desvantagem é que é difícil manter a estrutura requerida para roteamento em uma população de nós muito transiente. [1, 2] 7 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana 3. Aplicações P2P De acordo com [1], as arquiteturas peer-to-peer podem ser empregadas por uma variedade de diferentes categorias de aplicação, na qual incluem as seguintes: Comunicação e Colaboração: Nesta categoria estão os sistemas que fornecem a infra-estrutura para facilitar a comunicação e a colaboração, geralmente em tempo-real, entre os peers (usuários). As aplicações dentro dessa categoria permitem que os usuários se comuniquem através de voz, mensagens de texto, imagens gráficas e arquivos gerais de forma direta, sem passar por um servidor. Exemplos incluem Skype, aplicações de mensagem instantânea como ICQ, MSN, Jabber, chat, como IRC. Abaixo segue uma breve descrição de algumas destas aplicações: Msn Messenger Uma das aplicações de mensagem instantânea mais populares. Uma de suas funcionalidades é a sincronização de vídeo e voz fornecendo, dessa forma, comunicação em tempo real. Yahoo! Messenger Além das características comuns a todas as aplicações desta categoria, o Yahoo!Messenger oferece boa integração com os serviços e conteúdos do Yahoo!. [3, 8] Computação Distribuída A idéia neste tipo de arquitetura é utilizar a capacidade ociosa dos computadores que fazem parte do sistema. Para isso, há uma coordenação central que decompõe uma tarefa que possui alto poder de processamento em pequenas unidades e as distribui para diferentes peers. Estes, por sua vez, executam seus trabalhos correspondentes e retorna os resultados para a coordenação. Como exemplos de aplicações nesta categoria pode-se citar o Seti@Home, genome@home, OurGrid, entre outros. 8 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana Seti@Home Segundo [3], o Seti@Home tem um poder computacional de aproximadamente 25 TFlops/s (trilhões de operações de ponto flutuante por segundo) e conta com mais de três milhões de computadores. O objetivo desse projeto é procurar sinal inteligente através do processamento dos sinais obtidos por meio de um rádio telescópio. O Seti@Home funciona da seguinte maneira: O problema computacional a resolver é dividido em pequenas partes independentes. O processamento de cada uma dessas partes é feito em um computador individual na rede e os resultados são coletados por um servidor central, que por sua vez, distribui as tarefas entre os computadores na Internet. Um software cliente é instalado em cada computador, e é este software quem executa a computação requisitada pelo servidor. Esse software cliente também permite que configure opções de quando o processamento será realizado. Pode-se optar, por exemplo, que seja executado apenas toda vez em que o computador entre em período de inatividade. Após o término da computação, o resultado é retornado para o servidor e uma nova tarefa é alocada para o cliente. [3] Compartilhamento de Arquivos (Distribuição de Conteúdo) Nesta categoria estão as aplicações P2P mais populares. Seus objetivos são permitir que usuários possam disponibilizar arquivos cujo conteúdo não mudará e disseminar para qualquer usuário, geograficamente espalhado pelo mundo. Geralmente, qualquer usuário poderá publicar um arquivo no sistema. As principais questões técnicas envolvendo sistemas de compartilhamento de arquivo são o consumo da largura de banda da rede, a segurança e sua capacidade de pesquisa [3,8]. Abaixo segue uma descrição mais detalhada das principais aplicações de compartilhamento de arquivo. Napster O Napster foi um dos precursores em termos de compartilhamento de arquivo e obteve um enorme sucesso compartilhando arquivos de música. Ele possuía um servidor central que armazenava uma lista com as músicas disponibilizadas pelos usuários e onde elas estavam localizadas. Utilizando um programa cliente, o usuário se conectava ao servidor central e fornecia uma lista das músicas que estava compartilhando. Para buscar por um arquivo, o programa cliente faz uma consulta ao servidor que responde se o arquivo 9 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana existe ou não e, caso exista, onde ele está localizado. Os arquivos são transferidos diretamente entre a fonte e a origem sem intervenção do servidor, utilizando o protocolo HTTP [9]. O esquema de funcionamento é semelhante ao da Figura 1. Segundo [5], o Napster não oferece uma solução P2P aceitável, isto porque embora a transferência dos arquivos ocorra de forma distribuída, pelo menos as descrições do conteúdo compartilhado e a forma de como acessá-lo são controlados pelo servidor central. O conteúdo predominante que o Napster distribuía era protegido por copyright, não podendo, portanto, ser copiado por outros usuários e como a parte P2P do seu protocolo não funcionava sem a parte centralizada, ele tornou-se um alvo fácil. Hoje o conteúdo que o Napster disponibiliza é legal, porém o mesmo não possui mais tanto apelo [8,2]. Gnutella A rede Gnutella utiliza a arquitetura descentralizada e não estruturada. Dessa forma, como não há uma coordenação central, os usuários se conectam um ao outro diretamente através de um software que implementa seu protocolo, com a função tanto de servidor quanto de cliente, por isso é denominado de servent (SERVer + cliENTS). Uma instância desse software “rodando” em uma determinada máquina pode ser chamada de host. Um servent se conecta a rede Gnutella estabelecendo uma conexão com um host conhecido que já está conectado a rede. Podem-se obter listas dos hosts disponíveis, por exemplo, através do site http://gnutellahosts. com [4,5]. Cada nó da rede Gnutella conhece apenas os nós aos quais está diretamente conectado, todos os outros servents são invisíveis, a menos que se anunciem respondendo a um ping ou respondendo uma consulta, o que provê um certo grau de privacidade. A Figura 3, retirada de [4], mostra como é o mecanismo de busca da rede Gnutella [4,9]. 10 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana Figura 3 ‐ Mecanismo de Busca do Gnutella As versões mais recentes do Gnutella utilizam o conceito de supernós, o que melhora o desempenho e a escalabilidade da rede [4,8]. Os pontos fracos dessa rede são que o anonimato é praticamente inexistente – qualquer um consegue listar as pesquisas que estão sendo feitas e quem está fazendo a mesma. Também não há proteção de quem está fornecendo o arquivo, uma vez que utiliza o protocolo HTTP, podem-se listar os endereços IP. Como pontos fortes pode-se levar em conta a liberdade de pesquisa e também que é praticamente impossível acabar com a rede, visto que para isso seria preciso acabar com todos os nós [2]. Existem muitas aplicações cliente disponíveis para acessar a rede Gnutella, algumas das mais populares são: BearShare (http://www.bearshare.com), Gnucleus (http://www.gnucleus.com) LimeWire (http://www.limewire.com), WinMX (http://winmx.com) e XoloX (http://www.holox.com). Freenet O Freenet, assim como o Gnutella, também possui arquitetura descentralizada e não estruturada. Uma de suas principais vantagens em relação à aplicação anterior é que ele mantém seus usuários no anonimato, além de possuir código fonte aberto. Para garantir o anonimato, as comunicações dos usuários são cifradas, o que faz com que não seja possível rastrear a origem de um arquivo, quem está obtendo ou quem salvou este arquivo em disco. 11 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana Outra diferença do Freenet em relação ao Gnutella é que ele fornece um serviço de armazenamento de arquivo, da qual é foco principal dessa aplicação. Enquanto no segundo os arquivos são copiados para outros nós quando são requisitados, no Freenet esses arquivos são propagados para outros nós para armazenamento, replicação e persistência. [2, 5] A Figura 4, retirada de [4], mostra o mecanismo do funcionamento do Freenet. Em (1) o usuário inicia a requisição do dado no peer A, na qual passa a requisição adiante para o peer B, e em (2) passa adiante para o peer C. O peer C é incapaz de contatar qualquer outro peer e retorna, em (3), com a mensagem de falha na requisição para o ponto B. O peer B tenta uma segunda opção, peer E em (4), na qual em (5) repassa a requisição para o Ponto F, que entrega a requisição para o peer B em (6). O peer B detecta o loop e retorna uma mensagem de falha em (7). O peer F é incapaz de contatar qualquer outro ponto e volta para o ponto E em (8). O peer E, em (9), repassa a requisição para a segunda opção, o peer D, na qual tem o dado. O dado é retornado para o ponto D, via peers E , B e A, em (10), (11) e (12), respectivamente. O dado é armazenado nos peers E,B e A, que criaram então uma rota de atalho para as próximas buscas similares [4]. Figura 4 Mecanismo de funcionamento do Freenet Como pode ser observado através do seu funcionamento, o dono de um nó não sabe que tipo de dado está armazenado em sua máquina (isso evita que o dono de uma máquina 12 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana participante seja responsabilizado por possuir certos dados). Ele também constrói um imenso sistema de armazenamento distribuído e tolerante a falhas. O Freenet possui um controle de tempo de publicação de cada arquivo, na qual os arquivos menos populares vão dando lugar aos arquivos mais populares. Todos os arquivos, quando dispostos, são criptografados e assinados digitalmente de modo a garantir que ninguém será capaz de adulterar o seu conteúdo [2]. FastTrack/ KaZaA O FastTrack é a rede pública dos aplicativos: KaZaA, KaZaA Lite, iMesh e Grokster. Essa rede utiliza uma arquitetura em duas camadas, onde a primeira é composta por supernós (máquinas mais potentes, com conexão rápida e espaço em disco) e a segunda é formada por máquinas de usuários comuns. Os supernós assumem um papel principal na rede, uma vez que todo usuário precisa se conectar a um supernó para ter acesso ao sistema. Eles também mantém uma lista contendo os arquivos disponibilizados por outros usuários e o local onde eles estão armazenados. Além disso, eles são responsáveis pela busca que é realizada da seguinte forma: 1. Ao se conectar a um supernó, o nó envia a ele uma lista com a descrição dos arquivos que está disponibilizando. Quando chega uma consulta, a busca é feita apenas nesse sub-conjunto dos dados. 2. Se o supernó sabe qual é a localização do arquivo desejado, ele retorna o resultado da busca feita localmente. Esse processo é rápido e o efeito causado no usuário final é excelente, uma vez que ele percebe que o sistema está respondendo rapidamente. 3. Se não souber, o supernó então submete a consulta a outros supernós. 4. Uma vez localizado o usuário que possui o arquivo, uma conexão é estabelecida diretamente entre os peers para que seja efetuado o download. Em caso de falha de um supernó, os nós órfãos são passados a outros supernós. O FastTrack é a maior rede pública existente e mantém em média 4 milhões de usuários conectados a todo o momento. Esses usuários disponibilizam diferentes tipos de arquivos, como vídeo, áudio, softwares, etc. [2, 8]. BitTorrent A arquitetura do BitTorrent consiste de um servidor central, o tracker, que é conectado ao fazer download de um arquivo torrent, como pode ser visto na Figura 5, retirada de [4]. Este arquivo contém informações a respeito de tamanho, nome, informação 13 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana de hash e a URL de um tracker, e é preparado por um usuário que deseja publicar conteúdo, e disponibilizado em sites web especializados. Figura 5 Mecanismo do BitTorrent Uma vez carregado o arquivo torrent, o usuário o fornece ao software cliente, que se conecta ao tracker. O nó informa ao tracker sobre seu interesse naquele torrent, e este responde com uma lista aleatória de nós presentes para se conectarem e fazer o download e upload. Os tracker também O BitTorrent corta o arquivo em partes de tamanho fixo de forma a rastrear o conteúdo de cada peer. É o tracker quem monitora a disponibilidade dos nós e os pedaços de cada arquivo. Os nós são testados periodicamente e um nó que não responde é trocado. O BitTorrent utiliza a política de “olho-por-olho”, onde cada peer também precisa disponibilizar seus arquivos, ou parte deles, para participar da rede. Sistema de armazenamento de arquivos em rede (network storage) Em aplicações desse tipo os usuários poderão modificar o conteúdo dos arquivos. Dessa forma, em caso de replicação, as informações devem ser propagadas para todas as réplicas. Entre os exemplos estão: PAST, OceanStores, Ivy e JetFile. Transmissão de dados (overlay multicast) As aplicações que estão nesta categoria permitem que um conteúdo seja transmitido por um nó e entregue a vários outros geograficamente espalhados pelo globo. Essas aplicações são utilizadas geralmente para transmissão de eventos ao vivo. O ESM – End System Multicast – é um exemplo de aplicações deste tipo. 14 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana Há várias outras categorias de aplicações P2P, entre elas estão sistemas gerente de bases de dados distribuída. 15 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana 4. Conclusão Existem diversas razões para o desenvolvimento de sistemas distribuídos, entre as quais pode-se citar: • • • • A possibilidade compartilhar arquivos sem uma unidade central Possui características de sistemas distribuídos, o que provê tolerância a falhas, redundância, entre outros. Possibilidade de prover anonimato, o que facilita a livre expressão de idéias. Existem relatos de utilização do Freenet em países da China e Oriente Médio, onde há censura do governo. Uma outra razão que as pessoas buscam o anonimato seria para o compartilhamento de material protegido por direitos autorais. Possibilidade de utilizar a capacidade ociosa dos computadores para realizar grandes processamentos. 16 UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Pós-Graduação em Computação e Matemática Computacional Sistemas Distribuídos – Prof. Marcos José Santana 5. Referências Bibliográficas [1]Theotokis, S. A. and Spinellis, D. (2004). A survey of peer-to-peer content distribution technologies. ACM Computing Surveys, 36(4):335–371. [2] Francesquini, E.C. .Um Estudo sobre sistemas P2P. Junho de 2004 [3] Domingues R.J., Callada, A., Souto, E., Sisvestre, G.,Kamienski, C., Sadok, D.. Peer-to-Peer: Computação Colaborativa na Internet [4] Lua, E. K., Crowcroft, J., Pias, M., Sharma, R., and Lim, S. (2005). A survey and comparison of peer-to-peer overlay network schemes. IEEE Communications Surveys & Tutorials, 7(2):72–93. [5] Theotokis, S.A (2002). A survey of peer-to-peer File-Sharing Technologies. [6] SHIRKY, C. 2000. What is p2p... and what isnt’t. Disponível em: http://www. oreillynet.com/pub/a/p2p/2000/11/24/shirky-whatisp2p.html. O’Reilly [7]Tanenbaum, A., & Steen, M. (2002). Distributed Systems - Priciples and Paradigms. Prentice Hall. [8] Barcellos, M. P. Segurança em Redes P2P: Princípios, Tecnologias e Desafios [9] Rocha, R.R., Redes Peer-to-Peer para Compartilhamento de Arquivos na Internet. 17