A web crawler downloads data sets from among a plurality of host computers.
The web crawler enqueues data set addresses in a set of queues, with all
data set addresses sharing a respective common host address being stored
in a respective common one of the queues. Each non-empty queue is assigned
a next download time. Multiple threads substantially concurrently process
the data set addresses in the queues. The number of queues is at least as
great as the number of threads, and the threads are dynamically assigned
to the queues. In particular, each thread selects a queue not being
serviced by any of the other threads. The queue is selected in accordance
with the next download times assigned to the queues. The data set
corresponding to a data set address in the selected queue is downloaded
and processed, and the data set address is dequeued from the selected
queue. When the selected queue is not empty after the dequeuing step, it
is assigned an updated download time. Then the thread deselects the
selected queue, and the process of selecting a queue and processing a data
set repeats. The next download time assigned to each queue is preferably a
function of the length of time it took to download a previous document
whose address was stored in the queue. For instance, the next download
time may be set equal to the current time plus the a scaling constant
multiplied by the download time of the previous document.
Un cingolo di fotoricettore trasferisce gli insiemi dal sistema centrale verso i satelliti di dati in da una pluralità di elaboratori ospiti. Il cingolo di fotoricettore enqueues gli indirizzi dell'insieme di dati in un insieme delle code, con tutti gli indirizzi dell'insieme di dati che ripartiscono un host address comune rispettivo che è immagazzinato in un terreno comunale rispettivo uno delle code. Ad ogni coda non vuota è assegnata la volta tanto prossima di trasferimento dal sistema centrale verso i satelliti. Il multiplo filetta sostanzialmente simultaneamente il processo che l'insieme di dati richiama nelle code. Il numero di code è almeno grande quanto il numero di filetti ed i filetti sono assegnati dinamicamente alle code. In particolare, ogni filetto seleziona una coda che non è assistita da c'è ne degli altri filetti. La coda è selezionata in conformità con i tempi prossimi di trasferimento dal sistema centrale verso i satelliti assegnati alle code. L'insieme di dati che corrisponde ad un indirizzo dell'insieme di dati nella coda selezionata è trasferito e proceduto e l'indirizzo dell'insieme di dati dequeued dalla coda selezionata. Quando la coda selezionata non è vuota dopo il punto dequeuing, esso è assegnato un tempo aggiornato di trasferimento dal sistema centrale verso i satelliti. Allora il filetto deselects la coda selezionata ed il processo della selezione della coda e di elaborazione delle ripetizioni dell'insieme di dati. La volta tanto prossima di trasferimento dal sistema centrale verso i satelliti assegnata ad ogni coda è preferibilmente una funzione della durata che ha preso per trasferire un documento dal sistema centrale verso i satelliti precedente di cui l'indirizzo è stato immagazzinato nella coda. Per esempio, la volta tanto prossima di trasferimento dal sistema centrale verso i satelliti può essere regolata uguale al tempo corrente più un costante di scaling moltiplicato per il periodo di trasferimento dal sistema centrale verso i satelliti del documento precedente.