Como distribuir itens de forma robusta, mas mínima, em um sistema ponto a ponto
-
09-06-2019 - |
Pergunta
Se alguém tiver um sistema peer-to-peer que possa ser consultado, gostaria de
- reduzir o número total de consultas na rede (distribuindo amplamente itens "populares" e itens "semelhantes")
- evite armazenamento excessivo em cada nó
- garantir boa disponibilidade até mesmo para itens moderadamente raros em caso de tempo de inatividade do cliente, falha de hardware e saída de usuários (possivelmente detectando itens raros para arquivistas/historiadores)
- evite consultas que não encontrem correspondências no caso de partições de rede
Dados estes requisitos:
- Existem abordagens padrão?Caso contrário, existe alguma pesquisa respeitada, mas experimental?Estou familiarizado com esquemas de distribuição, mas não vi nada que realmente abordasse o aprendizado de robustez.
- Estou faltando algum critério óbvio?
- Alguém está interessado em trabalhar/resolver este problema?(Se assim for, estou feliz em abrir parte de um simulador muito ruim que criei neste fim de semana e geralmente oferecer conselhos inúteis).
@cdv:Agora assisti ao vídeo e ele é muito bom e, embora eu não ache que chegue a uma estratégia de distribuição conectável, definitivamente já percorremos 90% do caminho.As perguntas, no entanto, destacam diferenças úteis com esta abordagem que abordam algumas das minhas preocupações adicionais e me dão algumas referências para acompanhamento.Assim, aceito provisoriamente sua resposta, embora considere a questão aberta.
Solução
Se tiver tempo vale a pena conferir a palestra sobre tecnologia do Google que Wuala deu.Eles discutem os mesmos problemas que enfrentaram ao construir seu sistema de arquivos ponto a ponto.
Outras dicas
Existem vários sistemas com vários aspectos do que você procura e cada um fazendo compromissos diferentes, incluindo, mas não se limitando a:
Dínamo da Amazon: http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf
Kai: http://www.slideshare.net/takemaru/kai-an-open-source-implementation-of-amazons-dynamo-472179
Hadoop: http://hadoop.apache.org/core/docs/current/hdfs_design.html
Acorde: http://pdos.csail.mit.edu/chord/
Colméia: http://www.cs.cornell.edu/People/egs/beehive/
e muitos outros.Depois de construir um sistema personalizado nesse sentido, deixei alguns dos blocos de construção também em formato de código aberto: http://code.google.com/p/distributerl/(isso não é um sistema completo, mas algumas bibliotecas úteis na construção de um)