Attività di assegnazione in un sistema distribuito

2

Voglio eseguire la scansione dei siti Web e scrivere l'output su Solr con la mia applicazione. Il mio crawler utilizza Kafka per mettere l'oggetto del sito Web sottoposto a scansione su un argomento e Flume reindirizzerà l'output su Solr. Esistono più crawler che producono dati in Kafka.

Il mio problema è questo: quando un crawler vuole eseguire la scansione di un sito Web, altri crawler non devono provare a eseguirne la scansione. Come posso comunicarli in un ambiente distribuito?

    
posta kamaci 02.06.2017 - 00:19
fonte

1 risposta

1

Se hai già Kafka, puoi definire un altro argomento, che contiene solo URL che devono essere sottoposti a scansione.

I crawler ascoltano questo argomento, eseguono il polling del prossimo URL da sottoporre a scansione. I crawler devono condividere un id del gruppo , in modo che ogni messaggio venga consegnato solo a un singolo crawler. Quando i crawler rilevano nuovi URL, non eseguono la scansione ricorsiva, ma inseriscono i nuovi URL nell'argomento dell'URL.

Dovresti creare abbastanza partizioni per questo argomento (almeno tante quante le istanze del crawler, ma dovrebbero essere più quando possibile).

    
risposta data 02.06.2017 - 12:42
fonte

Leggi altre domande sui tag