1

異なる Java プロセスによって処理される複数の部分から情報の流れを再構築しようとしています。私はフローを生成していないことに注意してください。フローに関する情報を読んだだけです。

各フローの ID を使用して、INSERT ON DUPLICATE KEY UPDATE で MySQL (MyISAM/InnoDB テーブル) を使用してみました。また、すべての情報を保存し、最後にクエリを実行して完全な情報を取得しようとしました。これらのアプローチのどちらも、必要なパフォーマンスをもたらしませんでした。

複数の Java プロセス間で一連の共有オブジェクトを使用できるようにするソリューションを探しています。オブジェクトは、実行間で永続的であり、同時にルックアップ/更新が高速である必要があります (1 秒あたり 10 万回以上のルックアップ/更新)。

次のようないくつかの解決策を考えました。

  • NoSQL: MongoDB、HBase など。
  • EhCache、Memcached などのキャッシング ソリューション。

問題は、これらのソリューションの経験がないことです。では、次の条件に当てはまるものをお勧めします。

  • 単一のシステムで非常に高速です。私が言及したアプリケーションのほとんどは分散システム用に構築されたものですが、ここではそうではありません。
  • 習得/使用が簡単 (1 日でプロトタイプを作成できるようになりたい)
  • 成熟した技術
  • 商用でも自由に使えます
  • できればオープンソース
4

3 に答える 3

1

他のプロセスを調整する別の Java プロセスを試すことができます。このプロセスは、メイン プロセスに渡す情報を保持します。それらをRMIで接続できます。

于 2012-08-29T14:56:12.077 に答える
0

古い (レガシー?) ソリューションは JavaSpaces です。ただし、ソフトウェア アーキテクトの観点からは、分散キャッシュが現在の代替手段であると言えます。特に hazelcast と infinispan を見てください。

パフォーマンスの観点からは、「大規模な」分散キャッシング ソリューションのパフォーマンスには満足できません。メモリ内キャッシュが 1 つだけ必要な場合は、cache2k ベンチマークページの記事を参照してください (hazelcast をここに追加する必要があります)。

とにかく、あなたの質問はXyProblemカテゴリに分類されるため、最初に問題の説明を明確にしてください。あなたは実際の問題を説明していません。あなたの質問は、「高速で信頼性の高い分散オブジェクト」ソリューションに要約されます。どんなデータが入ってくるの? 料金はいくらですか?誰がアクセスしますか? 書き込みと読み取りが並行して行われるという事実を考慮して、どのような一貫性の保証を満たす必要がありますか?

「情報の流れ」という用語は、複雑なイベント処理の問題のように聞こえます。

于 2014-06-18T16:49:45.710 に答える