P2P Protokoll

Ereignisse, Vorschläge und Aktionen

P2P Protokoll

Beitragvon MikeS » So Sep 07, 2008 12:21 pm

Ist das P2P-Protokoll von Yacy eigentlich irgendwo dokumentiert? Außer im Sourcecode? (Ich bin in Java nicht allzu fit)

Ich spiele mit dem Gedanken eine Schnittstelle zwischen Yacy und OpenAcoon zu erstellen...

Wo gerade auch die Diskussion über DHT-Verteilung/Crawling im Gange ist: OpenAcoon crawlt sauschnell (rund 200 Seiten/s). Hat aber letzten Endes ein Problem damit, dass die ganzen Daten auch irgendwo gespeichert werden müssen. Und derzeit ist OpenAcoon ein Single-Server System. Auch wenn derzeit 230 Millionen Seiten drin sind, ist da doch irgendwie ein Limit erreicht. Auf eine Milliarde Seiten könnte ich es zwar noch irgendwie hochzüchten, aber dann laufe ich doch gegen eine Mauer.

Yacy hingegen ist als P2P System prinzipiell nach oben offen. Nach dem was ich jetzt gelesen habe, scheint das Crawling aber wohl bei Yacy zu viel Resourcen zu beanspruchen. Da könnte man vielleicht das beste aus beiden Welten (lose) kombinieren?
MikeS
 
Beiträge: 88
Registriert: Mo Feb 25, 2008 6:30 pm

Re: P2P Protokoll

Beitragvon thq » So Sep 07, 2008 12:38 pm

Nur kurz. Das crawlen an sich ist nicht das "Problem", sondern das indizieren, speichern und verteilen. Das belastet das System ja am meisten.

Zur zeit kann YaCy pro Wort nur ~65k URLs speichern. Da ist aber Orbiter dran, habe ich zumindest so verstanden.
thq
 
Beiträge: 651
Registriert: So Jul 08, 2007 12:23 pm

Re: P2P Protokoll

Beitragvon DanielR » So Sep 07, 2008 1:52 pm

Dokumentiert ist das glaube ich nicht. Das Protokoll ist grundsätzlich HTTP. Es werden bestimmte Webseiten aufgerufen um Parameter auszulesen und Daten weiter zu geben. Das DHT hängt da sehr an den internen Strukturen (Hashes, RWI). Der Status ist recht simpel, die (Remote-)Suche habe ich mir noch nicht angeschaut (IMHO läuft das über xml).
DanielR
 
Beiträge: 395
Registriert: Di Feb 12, 2008 2:22 pm

Re: P2P Protokoll

Beitragvon ribbon » So Sep 07, 2008 5:57 pm

ich finde das begrüssenswert,
dann könnten viele portale accoon software laufen lassen, durchsuchbar sein, gewaltig crawlen und den index mit viel bandbreite in die yacy-peers pusten.
Das wird ja dann eh auf einem server mit viel upload gehostet sein.
da die yacy peers alle grosse download bandbreite haben, könnten die ihren DHT Cache auch schnell füllen, ohne zu crawlen oder zu indexieren, die müssen nur ihren index vergrössern mit den daten von anderen yacy peers oder acoon servern.

Die acoon server untereinander müssten ja gar nicht kommunizieren, hauptsache ist, dass ein acoon server am yacy DHT angeschlossen ist und diese als Backup seines Indexes nutzen kann.

Das hiesse sogar, dass man yacy als installation DEFAULT nur mit DHT betrieb anbieten kann und sollte. Wenn dann einer bitteschön auch crawlen will, dann soll er es manuell einstellen.

Das wäre ein ideale Architektur und ich halte es für einen guten Durchbruch. Eine Architectur ähnlich Emule, wobei die erst mit einem Serverring begonnen haben und dann DHT/kademlia ergänzt haben. Hier wäre es dann umgekehrt.

Was muss man an Acoon ändern, damit es die Datenbank an die yacy peers adressieren kann und wieviel Arbeit ist das.
Acoon ist C++?

Das hätte aber auch zur Folge, dass die Portalsoftware-Option aus yacy verschwinden sollte. Da man dann hier besser Acoon einsetzt? :-)
Bin gespannt, was orbiter anbietet an Infos zur Kooperation..
ribbon
 
Beiträge: 212
Registriert: So Jan 06, 2008 4:23 pm

Re: P2P Protokoll

Beitragvon MikeS » So Sep 07, 2008 6:42 pm

ribbon hat geschrieben:Das wird ja dann eh auf einem server mit viel upload gehostet sein.

Genau. Bei einer symmetrischen 100mbit/s ist eigentlich nur die Crawl-Geschwindigkeit der limitierende Faktor. Da bekomme ich die Daten dann doch wieder nicht so schnell rein, wie ich sie rauspusten kann.

ribbon hat geschrieben:da die yacy peers alle grosse download bandbreite haben, könnten die ihren DHT Cache auch schnell füllen, ohne zu crawlen oder zu indexieren, die müssen nur ihren index vergrössern mit den daten von anderen yacy peers oder acoon servern.


Stimmt. Das wäre dann der Idealzustand.

ribbon hat geschrieben:Die acoon server untereinander müssten ja gar nicht kommunizieren, hauptsache ist, dass ein acoon server am yacy DHT angeschlossen ist und diese als Backup seines Indexes nutzen kann.

Es gibt derzeit nur einen Acoon-Server. Im Monat kann der derzeit rund 500 Millionen Seiten crawlen, aber ich denke, dass ich den da noch aufmotzen kann. Das theoretische Limit der 100mbit/s Anbindung liegt bei geschätzten 2,5 Mrd. Seiten pro Monat. Könnte aber sein, dass der Hoster etwas ungemütlich wird. Da würde sich dann zeigen ob "umlimited Traffic" wirklich "unlimited" ist. :D

Ob ich das mit der Software wirklich schaffe, weiss ich nicht genau. Es müsste eigentlich gehen, aber genaues weiss man natürlich erst, wenn man es ausprobiert. :D

ribbon hat geschrieben:Das hiesse sogar, dass man yacy als installation DEFAULT nur mit DHT betrieb anbieten kann und sollte. Wenn dann einer bitteschön auch crawlen will, dann soll er es manuell einstellen.

Das wäre ein ideale Architektur und ich halte es für einen guten Durchbruch.

Was muss man an Acoon ändern, damit es die Datenbank an die yacy peers adressieren kann und wieviel Arbeit ist das.
Acoon ist C++?

Kann ich noch nicht sagen, da ich bisher nicht dahinter gekommen bin, wie der DHT-Transfer genau funktioniert. Wie ich schon sagt, Java ist nicht meine Stärke. Acoon ist in Delphi (Pascal) geschrieben.

ribbon hat geschrieben:Das hätte aber auch zur Folge, dass die Portalsoftware-Option aus yacy verschwinden sollte. Da man dann hier besser Acoon einsetzt?

Portalsoftware-Option? Ich muss gestehen, dass ich keine Ahnung habe, was damit gemeint ist. Ich kenne Yacy nur recht oberflächig.

Ich denke man sollte keinesfalls etwas aus Yacy entfernen. Wer Yacy stand-alone einsetzen möchte, sollte das auf jeden Fall immer noch tun können. Acoon sollte nur eine alternative DHT-Quelle sein um den Aufbau des Datenbestandes beschleunigen zu können.
MikeS
 
Beiträge: 88
Registriert: Mo Feb 25, 2008 6:30 pm

Re: P2P Protokoll

Beitragvon ribbon » So Sep 07, 2008 8:35 pm

ok, dann mach es doch so, dass die yacy peers and openacoon verbinden können und der DHT den austausch der urls erlaubt, bzw kann es ja auch eine einbahnstrasse sein, dass accoon remote crawls empfängt und dafür nur die peers mit der geteilten datenbank über DHT versorgt. Also keine suchabfragen zwingend.
Naja.. man kann ja erstmal klein anfangen mit dem anbinden von yacy peers and openacoon und den DHT austausch der urls regeln. das wäre schon ein super erster Schritt. Ja., yacy als serveroption kann und sollte bleiben.
vielleicht hilft Dir ja jemand mit dem DHT p2p protocoll, wenn nicht, ändert es nichts am Ziel, es dauert ggf vielleicht nur länger. Prima, dass der Startschuss gefallen ist. Wäre gang gut zu hören, wie es denn so voran geht und wie der Status so ist. Gibt es ein SVN, das man verfolgen kann oder eine Projektseite? Willst du das bei Dir lokal machen oder sollte man ein Projekt aufsetzen? sf.net? Wo ist denn aktuell der source code von openacoon?
ribbon
 
Beiträge: 212
Registriert: So Jan 06, 2008 4:23 pm

Re: P2P Protokoll

Beitragvon MikeS » Mo Sep 08, 2008 5:22 am

ribbon hat geschrieben:Gibt es ein SVN, das man verfolgen kann oder eine Projektseite? Willst du das bei Dir lokal machen oder sollte man ein Projekt aufsetzen? sf.net? Wo ist denn aktuell der source code von openacoon?


Kein SVN. Da ich zur Zeit der einzige bin, der dran bastelt, wäre das im Moment Overkill.

Sourcecode ist auf http://www.openacoon.de/download.asp
MikeS
 
Beiträge: 88
Registriert: Mo Feb 25, 2008 6:30 pm

Re: P2P Protokoll

Beitragvon DanielR » Mo Sep 08, 2008 1:27 pm

Protokoll des Index-Transfer (in yacyClient.java):

> HTTP-Anfrage
Code: Alles auswählen
POST /yacy/transferRWI.html
Content-Type: multipart/form-data


Allgemeine Parts (auch für Remote-Crawl, Suche, Messages usw.):
  • key (z.B. KkmvGOh2, Kommentar im Code: we generate 48-bit salt values, that are represented as 8-character b64-encoded strings)
  • iam (eigener Peer-Hash)
  • youare (Ziel Peer-Hash)
  • mytime (z.B. 20080829095828)
  • myUTC (z.B. 1220003908409)
  • network.unit.name
  • magicmd5 (optional zur netzweiten Authentifizierung)
speziell:
  • wordc (Anzahl indexContainer)
  • entryc (Anzahl Einträge in allen indexContainern)
  • indexes (Inhalt der Einträge, je WortHash+"propertyForm"+'\r\n', z.B. 'yUvydahjwwEC{h=c9ezaoNIG8GA,a=14097,s=14097,u=11,w=801,p=8,d=104,l=ch,x=66,y=13,m=68,n=10,g=0,z=AAAAEA,c=1,t=0,r=12,o=98,i=0,k=0}')

< Body der Antwort:
transferRWI.html hat geschrieben:version=#[version]#
uptime=#[uptime]#
unknownURL=#[unknownURL]#
result=#[result]#
pause=#[pause]#

Wobei #[unknownURL]# eine Liste mit URL-Hashes ist (mit Komma getrennt) und #[result]# folgendes sein kann: "ok", "busy", "not_granted" oder "wrong_target".

Wenn result "ok" ist und unknownURL nicht leer ist:
> HTTP-Anfrage
Code: Alles auswählen
POST /yacy/transferURL.html
Content-Type: multipart/form-data


Allgemeine Parts:
(siehe oben)
spezielle Parts:
  • urln (fortlaufend nummerierte indexURLReferences, z.B. '{hash=S6QapQehMLsA,url=b|aHR0cDovL3d3dy51bmlmci5jaC9paW10,descr= b|V2VsY29tZSB0byB0aGUgaWltdA,author=b|QW5kcmVhcyBFcmF0,tags=b|ZXhlY3V0aXZlIG1hbmFnZW1lbnQgbWJhIHRlbGVjb21tdW5pY2F0aW9uIHRlbGVrb21tdW5pa2F0aW9u,ETag= b|,mod=20020724,load=20080806,fresh=20110814,referrer=QS5OOMehMLsA,md5=0000000000000000,size=1159,wc=69,dt=h,flags=AAAAAA,lang=ch,llocal=5,lother=0,limage= 0,laudio=0,lvideo=0,lapp=0,wi=e2g9UzZRYXBRZWhNTHNBLGE9MTE4OTIscz0xNjMwMix1PTMsdz02OSxwPTEsZD0xMDQsbD1jaCx4PTUseT0wLG09MjQsbj00LGc9MCx6PUFBQUFCQSxjPTEsdD0wLHI9MSxvPTQsaT0wLGs9MH0}')
  • urlc (Anzahl)

< Antowort Body:
transferURL.html hat geschrieben:version=#[version]#
uptime=#[uptime]#
double=#[double]#
result=#[result]#

#[result]# kann sein: "ok", "error_not_granted", "wrong_target"

Soweit habe ich das aus dem Code und einem Netzwerk-Mitschnitt gelesen ;) Es wird allerdings nicht alles von den allgemeinen Sachen benutzt. Der key und die Zeit werden hierbei z.B. ignoriert und das iam wird nur für das logging genutzt.
DanielR
 
Beiträge: 395
Registriert: Di Feb 12, 2008 2:22 pm

Re: P2P Protokoll

Beitragvon DanielR » Mo Sep 08, 2008 1:32 pm

Achja, falls da noch irgendwo Checks eingebaut, sind die prüfen ob der sendende Peer aktiv ist: Dann müsstest du noch das "yacy/hello.html" aufrufen bzw. auf PeerPings antworten (die rufen die Seite auf??).
DanielR
 
Beiträge: 395
Registriert: Di Feb 12, 2008 2:22 pm

Re: P2P Protokoll

Beitragvon MikeS » Mi Sep 17, 2008 3:28 pm

Kurzes Update:

Erst mal vielen Dank für die Informationen. Ich bin allerdings noch nicht dazu gekommen da näher reinzuschauen. Ich ziehe Acoon gerade auf einen anderen Server bei einem anderen Provider um und bin noch mit zwei anderen Projekten beschäftigt. Es kann durchaus ein paar Wochen dauern, bis ich die Zeit finde um mit dem Implementieren anzufangen. Ich werde dann auf jeden Fall hier posten.
MikeS
 
Beiträge: 88
Registriert: Mo Feb 25, 2008 6:30 pm


Zurück zu Mitmachen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste