私にとって、クラスタリングはシステムに多くの品質を意味しますが、それはフォールトトレランス(サーバー、ネットワーク、およびデータの永続性)に要約されます。緩く結合されたシステムと密に結合されたシステムの両方があり、その間にすべてのフレーバーがあります。密結合システムでは、ハードウェアに近いレベルでクラスタリングが実行されます。古いクラスタリングシステムの多くは、それらがクラスター化されていることを認識しないことが多いアプリケーションとより緊密に結合されていました。
最近では、ゆるく結合されたシステムが一般的であり、ソフトウェアレベルで完全に達成されるフォールトトレランスの大部分があります。クラスタ内のシステムは、フォールトトレランスを実現できるようにネットワーク接続のみを共有します。通常、これを実現するために、特殊なハードウェア(場合によってはソフトウェア)を使用してさまざまなクラスターサーバーに要求をルーティングする特殊なロードバランサーがいくつかあります。
あなたが言及したすべての例には、ある種の「クラスタリング」があります。各アーキテクチャがこれをどのように達成するかについての詳細を説明するには、非常に長い答えが必要になります。私にとっての違いは、アーキテクチャを使用するときに「無料」で提供されるものと、アーキテクチャを最適に機能させるために必要な作業量です。
あなたが言及したソリューションをどのように組み合わせるかは、アーキテクチャがどのように見えるか、および要件によって異なります。ローカルの高速永続性のためにテラコッタストアを持ち、残りのためにクラウドを持つことができます。Glassfishをアプリケーションサーバーとして使用し、Terracottaを永続層として利用できます。
あなたがリストしたテクノロジーについての私の考えは次のとおりです。
- クラウドアプリケーション(「クラウドは基本的にクラスターです...」)
明らかに、クラウドアプリケーションは最も簡単に操作できます。アーキテクチャの観点からの唯一の仕事は、優れたクラスタープロバイダーを選択することです。確かに、AmazonとGoogleは、フォールトトレランスとデータの整合性の観点から「正しく」それを行います。おそらくそれを「十分に」行い、より安価な他の多くのプレーヤーがいます。独自の制限と費用が伴うAPIにプログラムします。クラウドアプリケーションの問題の1つは、新しいアプリケーションに切り替えるのが非常に難しいことです。繰り返しになりますが、アプリケーションの[大]部分をクラウドサーバーで実行し、より高いレイテンシ要件に対応するローカルシステムをいくつか使用している場合があります。トレンドは、ほとんどの本番機能をクラウドに配置するか、少なくとも、大きくなりすぎるか、提供できないサービスが必要になるまで、そのように開始することです。
- TerracottaのようなクラスタリングAPI
- Oracleなどのデータベース(「クラスター化データベース」)
- JBoss
これらの3つのシステムは、独自のクラスタリング機能を提供します。実稼働環境でシステムを正常に実行するには、多くのマシンおよびサービス層の構成を行う必要がある場合があります。分散永続層であるTerracottaについて良いことを聞いています。私はJbossの下にあるJgroupsを頻繁に使用しており、正しく実行するのは難しい場合がありますが、Jbossにはいくつかの適切なデフォルト構成/ドキュメントがある場合もあります。Oracleは、正しくクラスター化するのが最も難しい可能性があります。DBAは、Oracleの構成を微調整することで多くのお金を稼ぎます。
- 仮想マシン(つまり、「そのアプライアンスはVMのクラスターです...」)
- Tomcat、GlassFishなどのアプリケーションサーバー
これらは、クラスタリングの観点から定義するのに最も不定形です。一部のVMは、ネットワークハードウェアと電源バックプレーンを共有するという点で「クラスター化」と見なされますが、クラウドコンピューティングと比較すると、実際にはクラスターではありません。前述のように、非常にカスタムであり、正常に実行するには多くの特定のドメイン知識が必要なクラスター化されたハードウェアソリューションがいくつかあります。
TomcatやGlassfishなどのアプリケーションサーバーの経験はほとんどありません。Jgroupsの上に独自のクラスタリングソフトウェアがあり、Jettyを完全に実行しています。アプリケーションサーバー自体は「クラスター化」されていませんが、JbossやTerracottaなどのパッケージがその上で実行されてクラスター化を提供し、クラスター化ソフトウェアが作成された内部プロジェクトがあります。
これのいくつかが役立つことを願っています。