2017-10-30 9 views
0

独自のNoSQLデータストアを持つSpringブートを使用して作成されたマイクロサービスがあります。私たちは、データストア内の特定のタイプのレコードの存在に基づいて、古いデータ(50万のドキュメントの大きさ)を削除し、定期的に(1日に1回)実行したいという機能に取り組んでいます。Javaスプリングブートマイクロサービス内のスケジューラ

毎日1回実行されるスケジューラを持っていて、削除、正しい方法がありますか?また、そのマイクロサービスと複数のインスタンスが実行されているので、このスケジューラが1インスタンスだけで実行されるように制御するにはどうすればよいでしょうか?

+0

また、そのマイクロサービスと複数のインスタンスが実行されているため、このスケジューラが1インスタンスでのみ実行されるように制御するにはどうすればよいですか。ここでインスタンスが意味することは何ですか?各マイクロサービスは、独自のデータベースとは別のアプリケーションとして実行されます。 – Pradeep

+0

このリンクをクリックしてくださいhttp://microservices.io/patterns/deployment/multiple-services-per-host.html – Pradeep

+0

ここでのインスタンスとは、同じアプリケーション/マイクロサービスの異なるJVMを意味し、各JVMではアプリケーションが同じデータベースインスタンスに接続します。 – user762421

答えて

1

私は今考えることができます複数のオプションがあります:

  1. 展開マイクロサービスの単一のインスタンスがある場合は、あなたが仕事を時間を計るために、水晶のようなものを使用することができますが。例えば、https://stackoverflow.com/a/15090893/2817980を参照してください。これにより、サービスのインスタンスが1つだけクリーンアップで動作するようになります。
  2. マスタースレーブレプリカがある場合は、マスターに1インスタンスのみを割り当てるように依頼してください
  3. quartzのようなものを使用してスケジュールされたジョブを作成し、zookeeper/redis/dbまたは他のストレージ。

私はこれについてさらに議論することができます。

+0

はい私はあなたが上記の言及オプションからすべての代替案を提供することができます –

+0

@LovaChittumuri私が提案する代替案は、シナリオ/要件に基づいて適用することができます。私はおそらく、要件を実行するときに別のことを提案することができます。 私には、これまでに提供された情報で、オプション#4がより適しているように見えます。 – Shashank

関連する問題