2

私はJavaEEに比較的慣れておらず、クラスター化できるさまざまなタイプのシステムについてすでに耳にし始めています。

  • 仮想マシン(つまり、「そのアプライアンスはVMのクラスターです...」)
  • Tomcat、JBoss、GlassFishなどのアプリケーションサーバー(つまり、「クラスター化されたJBossを実行しています...」)
  • TerracottaのようなクラスタリングAPI
  • Oracleなどのデータベース(「クラスター化されたデータベース」)
  • クラウドアプリケーション(「クラウドは基本的にクラスターです...」)

ウィキペディアでは、「クラスタリング」を次のように定義しています。

コンピュータークラスターは、多くの点で単一のシステムと見なすことができるように連携して動作する、ゆるく接続されたコンピューターのセットで構成されます。

これらの「クラスタータイプ/メソッド」(上記)のそれぞれでクラスタリングがどのように機能し、それらが互いにどのように関連しているか疑問に思っています。

たとえば、クラスター化されたアプリケーションを使用することでメリットが得られる場合は、クラスター化されたアプリサーバーにそれらを配置してから、クラスターマネージャーを組み合わせます(これもTerracottaのように)。

しかし、「クラスタリング」というフレーズはあいまいで曖昧な方法で使用されているように見えるので、これらのそれぞれが他のものとどのように結びついているか、あるいはそれらがどのように結びついているかはわかりません。この織り交ぜられた用語を理解するのを手伝ってくれる勇敢なStackOverflowersに事前に感謝します!

4

2 に答える 2

2

私にとって、クラスタリングはシステムに多くの品質を意味しますが、それはフォールトトレランス(サーバー、ネットワーク、およびデータの永続性)に要約されます。緩く結合されたシステムと密に結合されたシステムの両方があり、その間にすべてのフレーバーがあります。密結合システムでは、ハードウェアに近いレベルでクラスタリングが実行されます。古いクラスタリングシステムの多くは、それらがクラスター化されていることを認識しないことが多いアプリケーションとより緊密に結合されていました。

最近では、ゆるく結合されたシステムが一般的であり、ソフトウェアレベルで完全に達成されるフォールトトレランスの大部分があります。クラスタ内のシステムは、フォールトトレランスを実現できるようにネットワーク接続のみを共有します。通常、これを実現するために、特殊なハードウェア(場合によってはソフトウェア)を使用してさまざまなクラスターサーバーに要求をルーティングする特殊なロードバランサーがいくつかあります。

あなたが言及したすべての例には、ある種の「クラスタリング」があります。各アーキテクチャがこれをどのように達成するかについての詳細を説明するには、非常に長い答えが必要になります。私にとっての違いは、アーキテクチャを使用するときに「無料」で提供されるものと、アーキテクチャを最適に機能させるために必要な作業量です。

あなたが言及したソリューションをどのように組み合わせるかは、アーキテクチャがどのように見えるか、および要件によって異なります。ローカルの高速永続性のためにテラコッタストアを持ち、残りのためにクラウドを持つことができます。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などのパッケージがその上で実行されてクラスター化を提供し、クラスター化ソフトウェアが作成された内部プロジェクトがあります。

これのいくつかが役立つことを願っています。

于 2012-01-09T23:39:18.120 に答える
1

これが簡単な方法です。クラスター化の方法は、目標が何であるかによって異なります。ここに、GlassFishにも関連するいくつかの考えがあります。

  • クラスタを使用すると、複数のインスタンスが共通の構成を共有するため、複数のインスタンスを1つとして管理できます。新しいリソースの定義など、構成に変更を加えると、クラスターに属するすべてのインスタンスがその変更を継承します。アプリケーションをクラスターにデプロイすると、そのクラスターのすべてのインスタンスにアプリケーションがデプロイされます。
  • クラスタはサービスの可用性を提供します。1つのインスタンスに障害が発生した場合でも、デプロイされたアプリケーションは他のインスタンスで引き続き使用できます。
  • クラスタはセッションの可用性を提供できます。ユーザーがショッピングカートにアイテムを持っているときにインスタンスが停止した場合、別のインスタンスがそのユーザーのセッションの処理の所有権を取得して、ショッピングカートのコンテンツがまだそこにあるようにすることができます。ユーザーは、バックエンドサーバーに障害が発生したことを知りません。
  • GlassFishを使用すると、HTTPセッションの状態をGlassFish(組み込み)で管理したり、コヒーレンスグリッドに委任したり、アプリケーションで状態自体を管理したりできます(テラコッタ、データベースなどを使用)。組み込み機能を使用する利点は、箱から出してすぐに機能し、ストレステストやQAなどを経ていることです。外部化の利点は、セッション管理とアプリケーションロジックを分離するため、スケーラビリティが向上する可能性があることです。外部化により、JVMはビジネスロジックの実行に集中でき、バックアップセッションが他の場所に存在するため、使用するHEAPスペースが少なくなります。オラクルは、Coherenceグリッドへの外部化をテスト/ QAしました。これは、商用のOracleGlassFishServerの正式な機能です。データベースを介して独自にロールする場合は、自分で管理およびQAする必要があります。
于 2012-01-09T22:44:59.797 に答える