Armazenamento em rede peer to peer ~ ish

3

Eu tenho um aplicativo distribuído que consiste em um servidor CMS principal, onde usuários "humanos" podem fazer upload de vídeos, imagens (conteúdo de mídia, basicamente) e um monte de "players" que reproduzem esses vídeos ou fotos em determinados momentos.

Neste momento, cada jogador se conecta via HTTP / SFTP ao CMS para pegar o conteúdo que precisa para tocar (erm ... e reproduzi-lo ... se nada for quebrado). Ele não se conectará ao CMS novamente se o player já tiver feito o download do vídeo que precisa reproduzir. Quero dizer ... não é que o CMS está transmitindo os vídeos ou algo extravagante assim ... o jogador diz " Oh, eu preciso jogar o vídeo Jenna_Jameson_meets_the_plumber.avi (para dizer alguma coisa) < em> 5 minutos. Já o tenho? "Se sim, apenas reproduzi-lo quando deveria. Caso contrário, conecte-se ao CMS, faça o download e reproduza quando necessário. Os jogadores agem mais como um "cache" para a mídia exibir.

Agora, há uma chance de que um grande número desses jogadores esteja na mesma LAN privada, conectada entre si com uma conexão Ethernet rápida (muito mais rápida do que a conexão DSL barato que eles podem ter com o CMS). estava pensando em implementar algo para que os jogadores solicitassem o conteúdo de seus vizinhos antes de irem para o CMS (tanto os jogadores quanto o CMS são codificados em Python e usam o Ubuntu como OS), mas eu pensei que talvez houvesse algo assim (e eu Eu poderia fazer isso usando ferramentas pré-existentes que eu confio muito mais do que qualquer coisa que eu pudesse implementar eu mesmo). Algum de vocês sabe algo que pode funcionar do jeito que eu quero? Um dos problemas é que não tenho certeza de como chamar esse tipo de aplicativo.

Eu dei uma olhada nos sistemas de arquivos NFS, mas então (se eu entendi corretamente) eu precisaria montar um diretório NFS por "outro" player, e toda vez que eu preciso de um daqueles documentários educacionais que eu quero jogar , Eu precisaria percorrer todos os diretórios NFS, verificar se o vídeo está em algum deles e se não, vá pegá-lo do CMS ... Isso soa um pouco lento, certo? Além disso, eu não sei como lidar muito bem com o fato de que os computadores na LAN podem não ser meus jogadores. Eu não sei como eu poderia lidar com um sistema de arquivos distribuído a descoberta de "meus" jogadores.

Se alguém pudesse me apontar na direção certa, eu agradeceria. Obrigado antecipadamente.

    
por BorrajaX 03.08.2012 / 19:39

2 respostas

3

Bem, suponho que deveria ser uma resposta.

Isso soa como um trabalho para bittorrent .

    
por 04.08.2012 / 00:18
2

Talvez você possa usar um proxy na sua lan?

Quero dizer, configure algum proxy local que armazene em cache o conteúdo de mídia, como imagens e vídeos.

Então, da primeira vez que alguns dos "jogadores" quiserem "jogar", o seu proxy armazenará o arquivo em cache e quando o próximo jogador quiser jogar, ele terá que se contentar com o arquivo que já foi usado.

Você pode até mesmo configurar os players para buscar apenas arquivos de mídia via proxy e fazer com que o restante vá diretamente para o seu CMS.

Pensei na ideia porque estava configurando o verniz (do lado do servidor) para armazenar em cache imagens e material há alguns dias, mas se você conhece um pouco da história, você se lembrará de que os provedores estavam todos fazendo proxy dia.

    
por 04.08.2012 / 02:56