2017-10-30 3 views
0

Wir haben einen Microservice mit Spring-Boot geschrieben, die einen eigenen NoSQL-Datenspeicher hat. Wir arbeiten an der Funktionalität, wobei wir einige alte Daten (in der Größenordnung von 0,5 Millionen Dokumenten) löschen wollen und dies regelmäßig (einmal am Tag) tun wollen, basierend auf der Anwesenheit von Datensätzen eines bestimmten Typs im Datenspeicher.Scheduler in einem Java-Spring-Boot-Microservice

Haben Sie einen Scheduler, der einmal täglich ausgeführt wird und die Löschung macht, ein korrekter Ansatz dafür? Da es auch einen Microservice und mehrere Instanzen davon gibt, wie kontrollieren wir, dass dieser Scheduler nur auf einer Instanz läuft?

+0

Da auch ein Microservice und mehrere Instanzen davon ausgeführt werden, wie steuern wir, dass dieser Scheduler nur auf einer Instanz ausgeführt wird? Was meinst du mit Instanz hier? Jeder Microservice wird als separate Anwendung mit einer eigenen Datenbank ausgeführt. – Pradeep

+0

Gehen Sie durch diesen Link http://microservices.io/patterns/deployment/multiple-services-per-host.html – Pradeep

+0

Instanzen bedeutet hier verschiedene JVMs der gleichen Anwendung/Microservice und in jeder JVM verbindet sich die Anwendung mit der gleichen Datenbank-Instanz . – user762421

Antwort

1

Es gibt mehrere Optionen, die ich von jetzt denken kann:

  1. Wenn es eine einzelne Instanz von Mikro-Service implementiert ist, können Sie so etwas wie Quarz zu Zeit die Arbeit verwenden können.
  2. Erstellen Sie eine RESTful-API für die Bereinigung, rufen Sie sie mit einem Skript auf, siehe beispielsweise https://stackoverflow.com/a/15090893/2817980. Dadurch wird sichergestellt, dass nur eine Instanz des Diensts für die Bereinigung verwendet wird.
  3. Wenn es eine Master-Slave-Replik gibt, bitten Sie den Master, nur 1 Instanz zuzuweisen
  4. Erstellen Sie einen geplanten Job mit etwas wie Quarz und überprüfen Sie dann, ob der Job bereits von einem anderen Scheduler in zookee/redis/db oder irgendein anderer Speicher.

Ich kann mehr darüber diskutieren.

+0

Ja Bitte .. Sie können alle Alternativen aus den oben genannten Optionen zur Verfügung stellen –

+0

@LovaChittumuri die Alternativen, die ich vorgeschlagen habe, können basierend auf dem Szenario/Anforderung angewendet werden. Ich kann wahrscheinlich eine andere Sache vorschlagen, wenn wir die Anforderungen durchgehen. Für mich, mit den bisher gelieferten Informationen, wäre die Option # 4 besser geeignet. – Shashank