0

Java サーブレット コンテナーで実行される Web バックエンドで Hazelcast (2.3) を使用して、クラスター内のデータを分散します。Hazelcast マップは、MapStore インターフェイスを使用して MySQL データベースに保持されます。現在、Java ネイティブ クライアント インターフェースを使用していますが、パフォーマンスに関して、「ネイティブ」クライアントと組み込みバージョンの違いは何だろうかと思います。

  1. 「ネイティブ」クライアントがいずれかのクラスター ノードに接続する可能性があり、この決定がすべての単一の要求に対して再度行われるというのは正しいですか?

  2. 埋め込みバージョンを使用すると、ネイティブ クライアントで TCP ソケットを介してすべての要求と応答を送信するオーバーヘッドが回避されるというのは正しいですか?

  3. 一般に、組み込みバージョンは「ネイティブ」クライアントよりも高速であると結論付けてよろしいですか?

  4. 「ネイティブ」クライアントの場合: MapStore 実装が (実行時のクラスとして) Hazelcast サーバーの一部であることは正しいですか? それとも、永続化する必要があるすべてのデータが最初に TCP ソケットを介して送信されるように、「ネイティブ」クライアントの一部ですか?

4

1 に答える 1

3
  1. ネイティブクライアントが接続するノードのセットを指定します。接続すると、このノードを使用して、クラスターが停止するまでクラスターとの通信を行います。それが死ぬとき、クライアントは通信を続けるために他のノードに接続します。

  2. ネイティブクライアントでは、クライアントからノードへのホップと、ノードからターゲットノードへのホップの2つがあります。(ターゲットノードは、ターゲットデータが配置されているノードです)組み込みクライアントでは、必要なデータが配置されている場所をすでに認識しているため、シングルホップがあります(ターゲットノード)

  3. はい、一般的には参照してください:( hazelcastのドキュメントから)

LiteMemberはクラスターのメンバーであり、クラスター内のすべてのメンバーへのソケット接続があり、データがどこにあるかを認識しているため、データにはるかに高速に到達します。ただし、LiteMemberにはクラスタリングのオーバーヘッドがあり、同じRAC上でも同じデータセンター上にある必要があります。ただし、ネイティブクライアントはメンバーではなく、クラスターメンバーの1つに依存しています。ネイティブクライアントは、LANまたはWANのどこにあってもかまいません。スケーリングがはるかに良く、オーバーヘッドがかなり少なくなります。したがって、クライアントがHazelcastノードよりも少ない場合は、LiteMemberをオプションにすることができます。それ以外の場合は、必ずネイティブクライアントを試してください。経験則として、最初にネイティブクライアントを試してください。パフォーマンスが十分でない場合は、LiteMemberを検討してください。

4-ストア操作はhazelcastサーバーで実行されます。クライアントから送信されたオブジェクトは、ターゲットノードによって一元化されたデータストアに永続化されます。ターゲットノードは、オブジェクトもそのメモリに格納します。

于 2012-12-19T08:06:16.283 に答える