DEV Community

Cover image for P2P - Peer-to-peer
Isaac Alves Pinheiro
Isaac Alves Pinheiro

Posted on • Updated on

P2P - Peer-to-peer

Nas redes P2P - Peer-to-peer, traduzido como par-a-par, os nós da rede funcionam tanto como cliente quanto servidor. Essa arquitetura permite que serviços e dados sejam compartilhados sem a necessidade de um servidor central.

O fato mais interessante das redes P2P é que todos os peers ou participantes da rede são igualmente privilegiados na aplicação. Cada computador agindo como um nó fica responsável por uma parte dos recursos da rede, podendo esses recursos serem armazenamento de dados, poder de processamento ou até mesmo largura de banda. Diferentemente do modelo cliente-servidor, onde um servidor central alimenta os clientes da rede, nos sistemas P2P todos os computadores interligados são fornecedores e consumidores de recurso.

Saiba mais: As redes P2P entraram em cena a partir de 1999. A primeira aplicação generalizada foi para troca de músicas protegidas por direitos autorais sem a permissão dos proprietários dos direitos autorais até que o aplicativo (Napster) foi fechado pelos tribunais em meio a grande controvérsia. No entanto, a tecnologia ponto a ponto tem muitos usos interessantes e legais. Outros sistemas continuaram em desenvolvimento, com tanto interesse dos usuários que o tráfego P2P rapidamente eclipsou o tráfego da web.

Atualmente, o BitTorrent é um dos protocolos P2P mais populares. É tão amplamente usado para compartilhar vídeos (licenciados e de domínio público), bem como outros conteúdos, que é responsável por uma grande fração de todo o tráfego da internet.

Nem todo mundo sabe, mas por trás do serviço de música Spotify há uma rede P2P funcionando. Como as músicas não vêm apenas dos servidores do Spotify, a velocidade do streaming pode ser maior e a economia de tráfego ajuda a manter o custo do serviço. Entretanto, o Spotify diz ao TorrentFreak que essa rede está sendo tirada de cena aos poucos e nos próximos meses será desativada.

Atualmente, quando você ouve uma música por meio dos aplicativos do Spotify para desktop, o arquivo é obtido através do cache local no seu disco rígido, dos servidores do Spotify ou de outros usuários do Spotify que tenham a música em cache. Em 2011, menos de 20% das músicas vinham dos servidores do Spotify.

Trata-se de uma maneira inteligente de descentralizar o tráfego e economizar com servidores, permitindo que o serviço cresça bastante e os custos operacionais não aumentem tanto. Essa ideia faz todo o sentido quando vemos que um dos principais engenheiros do Spotify é o sueco Ludvig Strigeus, o criador do famoso µTorrent, aplicativo vendido para a BitTorrent em 2006.

Mas se a tecnologia ajudou o Spotify, por que ela está sendo removida? Perguntada sobre o assunto, a diretora de comunicação do Spotify na Europa, Alison Bonny, simplesmente afirmou que a tecnologia não era mais necessária. “Estamos agora em uma fase em que podemos distribuir músicas através do nosso crescente número de servidores e garantir que os nossos usuários continuem recebendo o melhor serviço”.

O que ainda não está claro é como o Spotify conseguirá lucrar — tirar a rede P2P certamente não ajuda. O serviço sangra dinheiro: em 2011, o prejuízo foi de US$ 60 milhões; no ano seguinte, apesar da receita ter dobrado, as perdas foram ainda maiores, de US$ 77 milhões. Cinco anos após o lançamento oficial, o Spotify ainda sobrevive com o dinheiro dos investidores.

Outra plataforma que utiliza a arquitetura peer-to-peer são as criptomoedas e blockchain, cujo é uma tecnologia de registro distribuído que visa a descentralização como medida de segurança. São bases de registros e dados distribuídos e compartilhados, que têm a função de criar um índice global para todas as transações que ocorrem em um determinado mercado. Blockchain é um tipo de base de dados distribuída que guarda um registro de transações permanente e inviolável. A base de dados blockchain consiste em dois tipos de registros: transações individuais e blocos.

Um bloco é a parte concreta da blockchain onde são registrados algumas ou todas as transações mais recentes e uma vez concluído é guardado na blockchain como base de dados permanente. Toda vez que um bloco é concluído um novo é gerado. Existe um número incontável de blocos na blockchain que são ligados uns aos outros - como uma cadeia - onde cada bloco contém uma referência para o bloco anterior.

A ideia básica de uma rede de compartilhamento de arquivos P2P é que muitos computadores se reúnam e reúnam seus recursos para formar um sistema de distribuição de conteúdo. Os computadores geralmente são simplesmente computadores domésticos. Eles não precisam ser máquinas em centros de dados da internet.

Os computadores são chamados de pares (peers) porque cada um pode atuar alternadamente como cliente para outro par, obtendo seu conteúdo, e como servidor, fornecendo conteúdo a outros pares. O que torna os sistemas ponto a ponto interessantes é que não há infraestrutura dedicada. Todos participam da tarefa de distribuição de conteúdo e, geralmente, não há um ponto central de controle.

Exemplo: Considere uma rede P2P composta por N usuários médios, cada um com conectividade de banda larga a 1 Mbps. A capacidade de upload agregada da rede P2P, ou taxa na qual os usuários podem enviar tráfego para a internet, é N Mbps. A capacidade de download, ou taxa na qual os usuários podem receber tráfego, também é de N Mbps. Cada usuário pode fazer upload e download ao mesmo tempo, porque eles têm um link de 1 Mbps em cada direção.

Não é óbvio que isso deva ser verdade, mas acontece que toda a capacidade pode ser usada de forma produtiva para distribuir conteúdo, mesmo no caso de compartilhar uma única cópia de um arquivo com todos os outros usuários.

Para ver como isso pode ser verdade, imagine que os usuários estão organizados em uma árvore binária, com cada usuário não folha enviando para dois outros usuários. A árvore levará a única cópia do arquivo para todos os outros usuários. Para usar a largura de banda de upload de tantos usuários quanto possível em todos os momentos (e, portanto, distribuir o arquivo grande com baixa latência), precisamos canalizar a atividade de rede dos usuários. Imagine que o arquivo está dividido em 1000 partes. Cada usuário pode receber uma nova peça de algum lugar na árvore e, ao mesmo tempo, enviar a peça recebida anteriormente.

Dessa forma, uma vez que o pipeline é iniciado, depois que um pequeno número de peças (igual à profundidade da árvore) são enviadas, todos os usuários não folha estarão ocupados enviando o arquivo para outros usuários. Visto que existem aproximadamente N/2 usuários não folha, a largura de banda de upload desta árvore é N/2 Mbps. Podemos repetir esse truque e criar outra árvore que use os outros N/2 Mbps de largura de banda de upload, trocando as funções de nós folha e não folha. Juntas, essa construção usa toda a capacidade.

Top comments (0)