4

春のレシピ本を読んでいます。テラコッタについて述べられている特定のことを理解することができません。

以下は本の一節

Terracotta は、目に見える API がなく、変更された状態をクラスター全体のノードに伝達するのにはるかに効率的であるため、現在のほとんどのクラスター化されたキャッシュとは異なります。ほとんどのシステムは、ある種の Java シリアライゼーションまたはブロードキャスト メカニズムを使用します。このメカニズムでは、新しい状態を認識する必要があるかどうかに関係なく、変更されたオブジェクト全体またはオブジェクト グラフが他の各ノードに与えられます。Terracotta はそれを別の方法で行います。オブジェクト グラフ自体のメモリをデルタ化し、オブジェクトの状態の一貫したビューが必要なため、クラスター内の他のノードを同期します。簡潔に言うと、オブジェクト全体ではなく、オブジェクト内の更新された変数を 1 つだけ送信するのと同じようなことを行うことができます。

シリアライゼーションのようなものを使用してクラスター間でオブジェクトを送信しないことは理解できますが、「それはメモリをデルタ化します」とはどういう意味ですか?

4

2 に答える 2

2

この本は非推奨であり、現在ほとんどの人が Terracotta を使用する方法ではないことに言及する価値があります (人々は「ユーザータイプ」のシリアライゼーションに基づくエクスプレスモードを使用しています)。

とにかく、あなたの質問に答えようとしています.Terracottaはあなたのクラスをインストゥルメントするので、フィールドの突然変異とロックに必要なすべてのフックがそこにあります. ; 2 つ目は、これらのフィールドを読み取ろうとするノードです。

この(非常に迅速で短い)回答があなたの質問に少しでも答えてくれることを願っています。

于 2011-11-21T20:58:17.760 に答える
2

axtavt がコメントしたように、デルタは本質的にオブジェクトの 2 つのインスタンス間の違いです。

... オブジェクト グラフのメモリを差分します ...

のような簡単な言葉で言い換えることができます...

オブジェクトインスタンス間の違いを決定します

段落が本質的に言っていることは...

他のキャッシュ フレームワーク/テクノロジは、変更されていないデータであっても、各インスタンスに関するすべての情報を含むノード間でメッセージを送信することにより、クラスター内の複数のノード間でオブジェクトの状態を同期します。Terracotta は、変更された情報のみを送信してオブジェクトを同期することにより、これをより効率的に処理します。

これを SVN コミットのように考えてください。ファイルを SVN リポジトリにコミットすると、コンピューターはファイル全体をサーバーに送信するのではなく、ファイルのリポジトリ バージョンをローカル コピーと同期するために差分 (またはデルタ) のみを送信します。

お役に立てれば!

于 2011-11-21T21:13:42.657 に答える