2017-06-20 4 views
0

In einer last-ausgeglichenen Umgebung wo ich in standalone Java thread (im Wesentlichen durch ein Spring Boot jar aus Gründen der Einfachheit nennen Sie es Projekt 1), die einige Metadaten und Updates lucene Indizes an einem bestimmten Ort liest.Lucene Index Replikation

Dann gibt es eine tatsächliche Web-Anwendung (Projekt 2), durch die ich durch diese Indizes abfragen möchten (was ein anderes Projekt 1 erstellt) jedoch die Indexdatei, was die verfügbaren Optionen sind:

  1. kopieren Die Indexdatei wird regelmäßig an die Webanwendung gesendet, was nicht möglich wäre, da wir die Anwendung, der ich vertraue, möglicherweise erneut kicken müssen.
  2. Pflegen Sie beide Projekte als ein Paket in einem Krieg und so ist eine einzelne Instanz von Lucene für beide verfügbar.
  3. Jede andere Replikationsstrategie ??

Jede Hilfe auf oben würde sehr geschätzt werden. Beste, - Vaibhav

+0

und warum können nicht beide Apps einen Standort teilen? Irgendein bestimmter Grund? –

+0

Da beide in ihren individuellen Kontexten laufen und daher nur einer von ihnen zu einem Zeitpunkt auf die Indexdatei zugreifen kann, ist unten im Wesentlichen das ähnliche Problem, das jemand in quora anführt: https: //www.quora.com/How -can-two-applications-share-the-index-Built-by-Lucene – vaibhav

+0

Ich verstehe nicht den Kontext Teil, für mich ist es einfach ein externes Verzeichnis auf der Festplatte, also warum können nicht zwei Anwendungen es teilen? Es ist nur der Fall, dass das Verzeichnis Lucene-Daten enthält, aber ein Verzeichnis, das an eine App gebunden ist, macht für mich keinen Sinn. Schreiben beide Anwendungen oder schreibt nur einer? –

Antwort

1

Dies hängt wirklich von Ihren nicht funktionalen Anforderungen durch Ihre Anwendung und jede gegebene architektonische Entscheidung, die von ihnen gesteuert wird.

Aber hier einige Gedanken:

  • Kopie ein Index wie von ordnerA zu ordnerB wie eine ziemlich schlechte Idee klingt. vor allem, wenn beide Anwendungen ständig laufen müssen.

  • Sie möchten keine direkte Abhängigkeit zwischen diesen beiden Anwendungen, also müssen Sie eine eigene Lucene-Komponente erstellen, die API-Funktionen bereitstellt, die Sie benötigen.

  • Ich würde empfehlen, eine Komponente mit einer richtigen API zu bauen. Diese Komponente verwendet Lucene als Bibliothek und in Fällen wie mehrere Systeme oder Instanzen gerne diese Komponente verwenden würde ich eine nette NRT (Near Real Time) Implementierung von Lucene vorschlagen.

Verwandte Themen