これは、負荷を分散し、追加の冗長性を提供する目的で、サーバーのクラスターでアプリケーションを実行する機能です。
GridGainのプレゼンテーションを見て、非常に感銘を受けました。
他の人を知っていますか?
これは、負荷を分散し、追加の冗長性を提供する目的で、サーバーのクラスターでアプリケーションを実行する機能です。
GridGainのプレゼンテーションを見て、非常に感銘を受けました。
他の人を知っていますか?
いくつかあります:
現在、これらのすべてを使用しているわけではありませんが、それらの大部分を使用または調査しています。
GridGain と GigaSpaces は、キャッシングよりもグリッド コンピューティングに重点を置いており、(imho) データ グリッドよりもグリッドの計算に最適です (計算とデータ グリッドの説明を参照してください)。GigaSpaces は非常に興味深いテクノロジーであり、無料バージョンやスタートアップ向けの無料フル バージョンなど、いくつかのライセンス オプションがあります。
Coherence と Terracotta はキャッシュをMapsとして扱おうとしますが、これはかなり自然な抽象化です。私は Coherence をよく使用しており、優れた高性能製品ですが、安くはありません。あまり馴染みのないテラコッタ。Coherence のドキュメントが少し足りないと感じることもありますが、これは本当に強力な製品です。
OSCache 私は主に Java Web アプリケーションのメモリ使用量と断片化を減らす手段として使用してきました。OSCache にはかなりきちんとした JSP タグがあるからです。コンパイルされた JSP を見たことがあれば、多くの文字列連結を行っていることがわかります。このタグを使用すると、JSP コードと HTML のセグメントの結果を単一の文字列に効果的にキャッシュできます。これにより、場合によってはパフォーマンスが大幅に向上します。
EHCache は、私が Web アプリケーションでも使用した簡単なキャッシング ソリューションです。ただし、分散キャッシュとしては決してありませんが、それは可能です。私はそれを迅速で汚い解決策と見なす傾向がありますが、それはおそらく私の偏見です.
memcached は特に PHP の世界で流行しています (Facebook などのサイトでも使用されています)。これは非常に軽量で簡単なソリューションであり、同じプロセスで実行されないという利点があり、これが重要な場合は、他のテクノロジ スタックとの相互運用性オプションが間違いなく優れています。
Hazelcast もチェックしてみてください。Hazelcastは、キュー、トピック、マップ、セット、リスト、ロック、およびエグゼキュータ サービスのオープン ソース トランザクション分散/パーティション実装です。操作は非常に簡単です。クラスパスに hazelcast.jar を追加してコーディングを開始するだけです。設定はほとんど必要ありません。
Runnable、Callable タスクを分散方式で実行することに関心がある場合は、http://code.google.com/docreader/#p=hazelcastで Distributed Executor Service のドキュメントを確認してください。
Hazelcastは Apache ライセンスの下でリリースされ、エンタープライズ グレードのサポートも利用できます。
Infinispanを検討しましたか? JBoss.org のオープン ソース データ グリッド プラットフォームです。詳細については、プロジェクトを発表するこの (古い)ブログ投稿と、Hibernate で Infinispan をスタンドアロン キャッシュとして使用する方法など、興味深いブログ投稿を読むことをお勧めします。さらに最近では、Red Hat の Enterprise Data Gridで . 簡単な「入門」ガイド、DZone RefCard、さらには YouTube ビデオもあります:)
@cletus さんのまとめはかなり良いと思います。Terracotta が提供するのは、マップ形式の分散キャッシュだけではありません。Java ヒープと同期プリミティブをクラスタ化し、並行 Java プログラムを分散 Java プログラムに変換します。それを使用してキャッシングを行うことができます (オープン ソース キャッシュ ライブラリの分散バージョンを使用することを含む) または他の多くのものを使用できます。
作品の配布のために、Terracotta の上に書かれた追加のライブラリがいくつかあります。特に、tim-pipes (メッセージ用) と tim-masterworker (Master-Worker スタイルの配布用) は、Terracotta の上にある優れた抽象化です。このライブラリは Terracotta Forge にあります:
この最近追加されたページは、他の潜在的なデータ技術と比較して、少し追加情報を追加する可能性があります。
JPPFもいいですね。
リストに追加できるもう1つのものは、AppistryCloudIQです。これは分散コンピューティング環境です。最大5台のマシンを無料でダウンロードできます。これには、負荷分散と、ハードウェア障害が発生した場合の作業の自動フェイルオーバーなどの機能が含まれます。
また、プロアクティブも確認してください
少しレベルを下げたい場合は、 Java プロセスのクラスタリングの非常に基本的な機能を提供するJGroupsがあります。
非常に遅い答えですが、アプリケーションの構成方法に一部依存します。上記のアプローチのいずれかを使用する代わりに、実行可能ファイルをリモートで実行することをお勧めします。
リンクが不足していることをお詫びしますが、担当者がアップするまで、複数のリンクを投稿することはできません。イタリック体の製品は、Googleにとって簡単なものでなければなりません。
実行可能ファイルをパラメトリック検索で実行する場合(たとえば、インスタンスごとにさまざまなオプションを使用して同じ実行可能ファイルを起動する場合)、従来のバッチアプローチが適切に機能します。これは非常に伝統的なハイパフォーマンスコンピューティングアプローチであり、現在も広く使用されています。これをエンタープライズ規模で処理するのに適したインフラストラクチャは、Platform LSF、DataSynapse GridServer、PBS、またはWindowsHPCServerの成熟に伴います。GlobusやCondorなどのオープンソース製品もご覧になることをお勧めします。アプリの大きさによっては、LHCのような非常に大規模な科学プロジェクトに使用されるgLiteも検討する場合があります。
従来のHPCアプローチは、コンピューティングインフラストラクチャを構成するプロセスからアプリコードを分離することでメリットが得られますが、パフォーマンスが低下する可能性があります。また、スループットは速くなりますが、長時間のシステムではメモリリークやその他の問題が発生する可能性があります。
フラもチェック
グリッド コンピューティングの場合は、Ice GridまたはDataSynapse GridServerも検討できます。これらは両方とも、タスクを分散するための非常に効果的なメカニズムを提供し、フェイルオーバーと冗長性を提供します。
あなたの質問はさまざまな方法で解釈されていると思います。アプリケーションを「クラスター化」するために使用できるライブラリについて質問します。
上記のライブラリの一部は、分散キャッシングなどの特定のクラスター機能を提供するのに役立ちますが、ワークロード管理を有効にする従来の方法は、J2EE コンテナーを使用することです。
クラスター化されたコンテナー インスタンスをセットアップすることで、HA 機能とワークロード管理を利用できるようになり、クラスター化はアプリケーション レベルでほぼ透過的になります。クラスター化されるアプリケーションを作成するときは、状態を管理する方法に注意する必要があるためです。たとえば、何らかのキャッシュを実装した場合、各マシン間でキャッシュの状態を複製する必要があります。
まず、glassfish をダウンロードして、クラスター化された glassfish インスタンスをセットアップすることをお勧めします。
それが役立つことを願っています。
カール