ステートレスで、水平スケーリングのために多くのマシンにデプロイされることを意図したプレイ フレームワーク ベースのサービスがあります。
このサービスは HTTP JSON リクエストとレスポンスを処理しており、最大のスケーラビリティのために CouchDB をデータ ストアとして再び使用しています。
クラスター全体で X 秒ごとに実行する必要がある少数のバックグラウンド ジョブがあります。ジョブが各マシンで同時に実行されないようにすることが重要です。
アクターと Akka スケジューラを使用しているジョブを実行するには (Scala を使用しているため):
Akka.system().scheduler.schedule(
Duration.create(0, TimeUnit.MILLISECONDS),
Duration.create(10, TimeUnit.SECONDS),
Akka.system().actorOf(LoggingJob.props),
"tick")
(等)
object LoggingJob {
def props = Props[LoggingJob]
}
class LoggingJob extends UntypedActor {
override def onReceive(message: Any) {
Logger.info("Job executed! " + message.toString())
}
}
ある:
- 私が見逃した Akka/Actors/Play に組み込まれているトリッキーは、私のためにこれを行いますか?
- または、これを行うために Couchbase (分散型ミューテックス?) の上に置くことができる認識されたアルゴリズム?
展開と管理を非常に簡単にする必要があるため、インスタンスを「特別」にしたくありません。