• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

magician

Programação Descentralizada

10 mensagens neste tópico

Boas no âmbito de um projecto que tenciona criar tenho pensado em programação descentralizada ou seja uma aplicação p2p mas sem precisar de um servidor central.

Alguém sabe como funciona um arquitectura deste tipo? Eu penso que o programa deve implementar a função de servidor e cliente em um só tipo ServerSocket e Socket tudo no mesmo programa, pelo menos não vejo outra forma de o fazer, mas pode ser que exista um padrão de desenvolvimento com este objectivo.

Já procurei mas não encontrei nada de relevante ou então não estou a procurar correctamente.

Alguma ideia?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu penso que o programa deve implementar a função de servidor e cliente em um só tipo ServerSocket e Socket tudo no mesmo programa

Idem.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema da falta de servidor é a tua necessidade em procurar novos peers.

Por acaso já pensei um bocado numa maneira de dar a volta: já fiz as contas e consegues com cerca de 65MB fazer "ping" a todo o range de IPs portugueses.

(lembrem-se que o ping envia alguns pacotes de dados. Alterando estes pacotes de dados para um padrão específico conseguimos fazer um programa que ao receber um ping reconheça se é ou não um pedido do dado programa; qualquer outro computador vai responder normalmente. Além do mais, icmp usa UDP, logo não precisa de um controlo igual ao TCP)

Se um programa se espalhasse suficientemente de modo a que 1 em 10000 portugueses o usassem, tinhas uma probabilidade relativamente alta de com alguns megas de upload encontrares alguém na rede, que te iria então enviar a sua lista de "fontes".

Conseguias criar um programa de partilha 100% baseado em P2P, sem um único servidor, e portanto não bloqueável nem passível de ser apreendido..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me parece que isso seja uma boa ideia eu pensei em algo mais tipo vírus lolol

Tipo tens uma aplicação sabes um IP onde te podes ligar um quase servidor mas que não é então esse IP esta ligado a mais IPs ao ligares ele envia a lista de IPs dele assim ficas com a mesma lista dele mais a tua, depois ligas.te a um da lista e ficas com mais a lista esse e sempre assim, uma arquitectura tipo teia de aranha :P mais ou menos como funcionam os vírus de email.

Mas no caso da minha aplicação a coisa não pode ser assim não tem lógica enviar uma lista pessoal para outro user.

Este esquema é bom é para aplicações de partilha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vai à wikipedia ler sobre redes descentralizadas, tens lá muito informação :P, podes, por exemplo, estudar a arquitectura da rede Kad, apesar de existirem sempre outros exemplos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui há tempos andei a ler sobre redes totalmente descentralizadas.

Para ser uma aplicação 100% descentralizada precisas sempre de pelo menos um peer para te ligares, a partir daí há varias posibilidades dependendo do objectivo e das caracteristicas pretendidas.

Na pratica, peers ligados entre si, até certo ponto, 'confiam' um no outro. Isto porque ao solicitar informação a um peer esse peer tem que saber que informação lhe é pedida par a poder enviar. Já para peers que não estão ligados directamente um o outro é possivel ocultar directamente a actividade de um para o outro. Isto é muito importante.

Soluções para quem se quiser ligar à tal rede passarão sempre por ligares-te a um amigo que já esteja ligado, ou por exemplo a um site que tenha uma lista de peers actualizada, sendo que neste último caso confias nessa lista.

Não tem necessariamente que se usar um servidor/cliente num só, basta que seja possivel haver comunicação nos dois sentidos, mas claro, quanto mais bilateral for a comunicação mais se garante que a rede é descentralizada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso não seria 100% descentralizada, pois exige a existência de um peer. O que eu propunha era pesquisa de peers de modo a tornar esse passo desnecessário.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso não seria 100% descentralizada, pois exige a existência de um peer. O que eu propunha era pesquisa de peers de modo a tornar esse passo desnecessário.

? ? ?

Como assim não é? A estrategia que sugeriste não muda isso em absolutamente nada, precisas na mesma de um peer ( pelo menos ) para fazeres parte da rede.

A unica diferença é a forma como se negoceiam as ligações, quanto mais controlo o utilizador tiver sobre elas mais descentralizada acaba por ser na verdade pois não há muitas condições para peers super-populares proliferarem. Mas por outro lado a redundancia da rede tambem tende a ser menor. Mas isto são tudo fenómenos que têm a ver mais com psicologia/sociologia. Do ponto de vista tecnico a mesma arquitectura pode ser usada com diferentes estrategias de negociação de ligações entre peers, sempre de forma descentralizada se se pretender.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso não seria 100% descentralizada, pois exige a existência de um peer. O que eu propunha era pesquisa de peers de modo a tornar esse passo desnecessário.

Ora bem, sem, pelo menos, um peer não é uma rede :P. Sem um ponto de entrada na rede não é possível um novo cliente ligar-se. Se esse ponto é dado por uma lista de IPs ou por um IP conhecido não torna a rede menos descentralizada, é indiferente já que uma rede é descentralizada quando não existe um servidor que faça a ponte para os novos clientes e a rede.

Fazer ping a uma rede de IPs, segundo a minha opinião, é solução a martelo e 65MB para os IPs portugueses é bastante, para não falar que não seria nada interessante uma aplicação que apenas funcionassem em Portugal, por outro lado imensas máquinas bloqueiam o comando ping, bem como outros comandos de controlo de rede. Uma aplicação atrás de um proxy configurado para bloquear o comando ping, seja na saída seja na entrada, não funcionaria, e existem muitos proxies configurados para isso.

As soluções, como pedrotuga apontou, são variadas, basta saberes quais os requisitos que a aplicação tem de implementar, por exemplo como responder a uma divisão da rede, e veres que solução se adapta melhor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alguém me pode explicar o que é programação descentralizada ou arranjar documentos sobre o assunto por favor?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora