どのように我々は、私のJavaアプリケーションは、ロードバランサの背後に複数のインスタンス上に配備されている場合、Javaでの同期を使用して、共通のリソースにアクセスして同期させることができますか?
私の知る限り、同期は一つだけJVMで動作、ため。我々は、負荷を処理するために複数のインスタンスで同じJavaアプリケーションを展開するときしかし、その後、どのように我々は、同期メカニズムを提供することができますか?
例えば: - Javaアプリケーションのいずれかアペンドは/そのHDFSファイルの内容を編集先のHDFSファイルがあります。私は複数のインスタンス上で私のJavaアプリケーションをデプロイすると、その後、どのように私は、Javaアプリケーションからの唯一の要求はそのHDFSファイルにアクセスしていることを確認することができますか?
短い答え - あなたはあなたのセットアップで複雑さの多くを導入せずにそれを行うことはできません。
技術的にはあなたが上で利用できる分散ロックのようなものを使用することができますが飼育係に。私は実際にそれらをお勧めしません。これは、スケールで彼らとの理由にちょっと難しいと追加の複雑さは、飼育係の操作自体の面でもあります。
あなたが投稿の例については、なぜHBaseのようなシステムが構築されたということではないでしょうか?> [複数列]フォーマット - 主にデータをモデル化します。あなたは、その後のシーンがあなたのために複数のファイルを管理/編集の力仕事を行うの背後にあるだろう/ HBaseの上の書き込みデータを読み込み、それすることができます。
一方、あなたはあなたが、その後の建築イベント駆動型の原則にあなたのシステムを構築することができますイベントとして、あなたのファイルにやりたいことを、あなたの変更をモデル化することができます。
あなたは上でこれについての詳細を読むことができます
- Martin Fowler氏からEDAの紹介動画- https://www.youtube.com/watch?v=STKCRSUsyP0
- パート1 - https://www.confluent.io/blog/build-services-backbone-events/
- パート2 - https://www.confluent.io/blog/apache-kafka-for-service-architectures/
- Martin Fowler氏はこの講演で語ることCQRSモデル- https://martinfowler.com/bliki/CQRS.html