java disc based hashmap

Ich arbeite an einem Webcrawler (bitte schlagen Sie keinen vorhandenen vor, es ist keine Option). Ich habe es so, wie es erwartet wird. Mein einziges Problem ist, dass ich derzeit eine Art Server / Client-Modell verwende, bei dem der Server das Crawlen und Verarbeiten der Daten durchführt und sie dann an einem zentralen Ort ablegt.

Dieser Speicherort ist ein Objekt, das aus einer von mir geschriebenen Klasse erstellt wurde. Intern verwaltet die Klasse eine Hashmap, die als @ definiert isHashMap<String, HashMap<String, String>>

Ich speichere Daten in der Karte und mache die URL zum Schlüssel (ich behalte diese eindeutig) und der Hashmap-Wert speichert die entsprechenden Datenfelder für diese URL wie Titel, Wert usw.

Ich serialisiere gelegentlich die verwendeten internen Objekte, aber die Spinne ist multi-threaded und sobald ich sagen habe, dass 5 Threads die Speicheranforderungen kriechen, steigen sie exponentiell.

Bis jetzt war die Leistung mit der Hashmap ausgezeichnet, 15K-URLs wurden in 2.r Minuten mit einer CPU-Zeit von ca. 30 Sekunden gecrawlt, sodass ich wirklich nicht in die Richtung einer vorhandenen Spinne zeigen muss, wie die meisten Forumbenutzer vorgeschlagen haben .

Kann jemand eine schnelle Lösung vorschlagen, die das gleichzeitige Lesen und Schreiben unterstützt? Die Datenstruktur muss nicht identisch sein, sie muss nur in der Lage sein, zusammengehörige Meta-Tag-Werte usw. zu speichern.

Danke im Vorau

Antworten auf die Frage(10)

Ihre Antwort auf die Frage