Der Master soll in
YaCy wie folgt implementiert werden:
- Er übernimmt die Aufgabe als Front-End gegenüber z.B. Freeworld.
- Er nimmt daher Remote-Crawls nur an und verteilt sie an die Slaves zum Crawlen.
- Auch eigene (lokale) Crawls werden auf ihm gestartet und an die Slaves verteilt.
- Der Master verwaltet die DHT, die von den Slaves zusammengestellt werden.
- Auch als Proxy fungiert der Master.
- Er verwaltet die Blacklisten, die Slaves erhalten damit nur Seiten, die
nicht gesperrt sind und brauchen sich darum nicht kümmern.
Zur Verdeutlichung, hier ein typischer Beispielablauf:
- Auf dem Master wird ein lokaler Crawl gestartet z.B. durch einen Startpunkt,
Surrogate, Proxy-Aufruf und so weiter.
- Dieser wird an die ihm bekannten Slaves verteilt, dabei achtet der Master
darauf, dass keine zwei Slaves die selbe URL crawlen.
- Es wird dabei auch eine Crawl-Tiefe mit übergeben, damit der Master
sich darum nicht kümmern muss.
- Die Slaves indexieren auch sofort die Seiten und erstellen den Index samt DHT.
- Haben die Slaves den Crawl-Auftrag erledigt, oder es ist eine Queue
vollgelaufen, so wird dieser Index bei den Slaves gehostet und die DHT an den
Master gesandt.
- Dem Master ist somit bekannt, welchen Slave er anfragen muss, damit dieser
das Ergebnis über den Master an z.B. Freeworld ausliefern kann.
- Ein Durchreichen über den Master muss stattfinden, da die Slaves andere
IDs besitzen als der Master.
Im Admin-Interface soll unter
Netzwerk-Konfiguration (*)
der Master-Slave-Modus eingebaut werden und könnte wie folgt aussehen:
- Als Master:
- Node-Namen aller Slaves, kommaseperaiert.
- Node-Namen anderer Master-Nodes als "Backup-Master" bei starker Last.
- Als Slave:
- Node-Name des Masters (= oeffentlicher Name des Master-Slave-Clusters).
- Als Indexer, Crawler oder beides zusammen agieren; letzteres nur für
leistungsstarke Systeme geeignet.
- Remote-Crawls vom Master vermittelt annehmen: Ja/Nein.
Die globale, maximale PPM soll dabei auf die Slaves aufgeteilt werden. Also sehr
einfach gerechnet: Maximale PPM geteilt durch Anzahl konfigurierter Slaves.