Ich arbeite derzeit an einem College-Projekt, in dem wir einen Content Extractor für das World Wide Web erstellen. Dafür haben wir bisher zwei Module: einen Web-Crawler und einen Indexer, der auf zwei separaten Rechnern läuft. Wir planen, weitere Module hinzuzufügen, während unsere Arbeit fortschreitet, aber im Moment brauchen wir einige Kommunikationsmittel zwischen den 2, irgendeine Form der Nachrichtenübergabe.Java Distributed Application - Message Passing
Was wir unsicher sind, ist die folgende:
(i) Wir glauben, dass unsere Anwendung nicht synchrone Nachricht benötigt vorbei. Grundsätzlich crawlt das Crawler-Modul die Webseiten und ruft das Indexer-Modul auf, wenn es eine bestimmte Seite besucht. Also sollten wir weiter gehen und ein asynchrones Protokoll (wie JMS) wählen oder gibt es einen Vorteil, stattdessen ein synchrones Protokoll zu verwenden?
(ii) Wir denken derzeit über die Verwendung von JMS nach, vielleicht mit Google-Protokoll-Puffern, um die notwendigen Daten (URLs) zwischen den beiden Rechnern zu übermitteln. Wäre das angemessen oder gibt es bessere Möglichkeiten?
Unser Hauptkriterium für ein geeignetes Protokoll wäre Skalierbarkeit, gefolgt von Geschwindigkeit.
Dies ist das erste Mal, dass wir an einer verteilten Anwendung jeglicher Art arbeiten. So würde jede mögliche Hilfe geschätzt :)
Danke :)
Vielen Dank :) Das Indexer-Modul verwendet derzeit mongodb. Was sind die Vorteile von Map-Reduce gegenüber einfacher Nachrichtenübergabe? Derzeit beschäftigen wir uns nicht mit Maschinenclustern, sondern nur mit einzelnen Computern pro Modul. Ich dachte, dass map-reduce später benötigt würde, wenn wir die Arbeit eines einzelnen Moduls über mehrere Maschinen verteilen, habe ich recht? – arya