Je travaille sur un robot d'indexation Web (s'il vous plaît ne pas en suggérer un existant, ce n'est pas une option). Je l'ai fonctionné comme prévu. Mon seul problème est que j'utilise actuellement une sorte de modèle serveur/client où le serveur fait l'analyse et traite les données, puis les place dans un emplacement central.java hashmap basé sur le disque
Cet emplacement est un objet créé à partir d'une classe que j'ai écrite. En interne, la classe maintient une hashmap définie comme HashMap<String, HashMap<String, String>>
je stocke des données dans la carte faisant l'URL la clé (je garde ces uniques) et la valeur de hasmap stocke les champs de données correspondant à cette URL tels que le titre, la valeur etc
Je sérialise occasionnellement les objets internes utilisés mais l'araignée est multi-threadée et dès que je dis que 5 threads rampent les exigences de mémoire augmentent exponentiellement. Jusqu'à présent, la performance a été excellente avec le hashmap, en explorant 15K urls en 2.r minutes avec environ 30 secondes de temps processeur, donc je n'ai pas vraiment besoin d'être pointé dans la direction d'une araignée existante comme la plupart des forums les utilisateurs ont suggéré. Quelqu'un peut-il suggérer une solution basée sur un disque rapide qui prendra probablement en charge la lecture simultanée &? La structure de données n'a pas à être le même, juste doit être en mesure de stocker des valeurs de balise meta liées ensemble, etc.
grâce à l'avance
pourquoi exponentiellement? –
parce que je l'ai testé à fond et enregistré l'utilisation de la mémoire et le temps de processeur lorsque seule la quantité de threads rampants sont augmentés. Il y avait le test étrange qui était à l'extérieur et ne correspondait pas vraiment à la corrélation montrée par d'autres tests, mais ils étaient simplement traités comme des valeurs extrêmes et ignorés quand j'ai tracé, peut ne pas être un test professionnel mais suffisant pour mon but. – zcourts