Inleiding
Sinds een paar dagen ben ik bezig met het schrijven van een spider die een aantal sites moet gaan indexeren. Dit gaat aardig goed, helaas gaat het bij sommige sites traag.
Het probleem
Het probleem hierbij is dat er maar b.v. ~ 50 aanvragen per 2 uur mogen worden gedaan per IP, en vervolgens het bericht krijg dat er teveel aanvragen zijn gedaan met het IP adres. Ik moet dus de aanvragen gaan verdelen over meerdere IP adressen en dus ook over meerdere servers (of mijn spider faken als google, dat zal misschien 9 van de 10 sites goedkeuren, echter wil ik mijn programmatuur dit soort dingen niet laten doen).
De brainstorm
Hierboven staat al een deel van de oplossing, ik wil dus de queue gaan verdelen over meerdere servers. Nu leek het me makkelijk om een gedeelde queue te maken waar de verschillende "slaves" bij kunnen. Om even te illustreren:
Ik hoop dat het een beetje duidelijk is, maar de master verzamelt dus een queue met links die moeten worden geindexeerd, en de verschillende slaves verdelen deze queue onderling.
Wat ik dus wil
Ik wil bij slave 1 bij de queue van de Master komen, hiervan 1 item (of meer) af te halen, en zo ook bij slave2 etc. etc. vervolgens wil ik de resultaten weer terugzenden.
Heeft iemand hier ervaring mee, is er misschien iets handigs voor? Zelf heb ik rondgekeken en kwam ik alleen neer op ActiveMQ, wat denk voor dit project te kolossaal is.
Wat ik niet wil
De links stoppen in MySQL, en dit als queue gaan gebruiken... De resultaten moeten dan ook weer in een temp tabel, ik los het liever (als het kan) direct native op.
Sinds een paar dagen ben ik bezig met het schrijven van een spider die een aantal sites moet gaan indexeren. Dit gaat aardig goed, helaas gaat het bij sommige sites traag.
Het probleem
Het probleem hierbij is dat er maar b.v. ~ 50 aanvragen per 2 uur mogen worden gedaan per IP, en vervolgens het bericht krijg dat er teveel aanvragen zijn gedaan met het IP adres. Ik moet dus de aanvragen gaan verdelen over meerdere IP adressen en dus ook over meerdere servers (of mijn spider faken als google, dat zal misschien 9 van de 10 sites goedkeuren, echter wil ik mijn programmatuur dit soort dingen niet laten doen).
De brainstorm
Hierboven staat al een deel van de oplossing, ik wil dus de queue gaan verdelen over meerdere servers. Nu leek het me makkelijk om een gedeelde queue te maken waar de verschillende "slaves" bij kunnen. Om even te illustreren:
code:
1
2
3
4
5
6
| [ Master ] [ Slave 1 ] #queue --------> link 1 geefLink link 2 link 3 #geefResultaat() <- |
Ik hoop dat het een beetje duidelijk is, maar de master verzamelt dus een queue met links die moeten worden geindexeerd, en de verschillende slaves verdelen deze queue onderling.
Wat ik dus wil
Ik wil bij slave 1 bij de queue van de Master komen, hiervan 1 item (of meer) af te halen, en zo ook bij slave2 etc. etc. vervolgens wil ik de resultaten weer terugzenden.
Heeft iemand hier ervaring mee, is er misschien iets handigs voor? Zelf heb ik rondgekeken en kwam ik alleen neer op ActiveMQ, wat denk voor dit project te kolossaal is.
Wat ik niet wil
De links stoppen in MySQL, en dit als queue gaan gebruiken... De resultaten moeten dan ook weer in een temp tabel, ik los het liever (als het kan) direct native op.
[ Voor 5% gewijzigd door XiniX88 op 30-07-2009 10:42 ]