2011-11-21 54 views
4

我正在讀這本書春季食譜。我無法理解關於terracota的某些事情。在「兵馬俑」中,「增量記憶」意味着什麼?

以下是從書

兵馬俑是今天比大多數集羣緩存不同,因爲它是不可見的API一個段落,因爲 這是迄今爲止在整個集羣輸送了變化的狀態的節點更高效。大多數系統使用一些Java序列化或廣播機制,其中每個其他節點被賦予整個對象或對象圖,而該對象圖被改變,而不管它們是否他們需要知道新的狀態。 兵馬俑不同:它增加了對象圖本身的內存並同步羣集中的其他 節點,因爲它們需要對象狀態爲的一致視圖。簡單地說,它可以做一些事情 等於僅傳輸一個對象中的一個更新的變量,而不是整個對象。

我可以理解,它不使用任何類似序列發送跨羣集對象,但什麼是「它的增量內存」是什麼意思?

+0

希望這有助於:http://www.youtube.com/watch?v=aAZnsofBV-I – Sid

+0

我已經看過那個視頻。它不回答我的問題。 – vinoth

+3

http://en.wikipedia.org/wiki/Delta_encoding – axtavt

回答

2

正如axtavt所評論的,Delta本質上是對象兩個實例之間的區別。

...它三角洲的對象圖的記憶...

可以像簡單的術語來重述...

它決定了對象實例之間的區別

什麼段落基本上說的是......

其他緩存框架/技術通過在節點之間發送消息來同步羣集中多個節點上的對象狀態,這些節點包含有關每個實例的每條信息,甚至是沒有更改的數據。兵馬俑通過只發送已更改的信息來同步對象來更有效地處理此問題。

想想這就像一個SVN提交。當你將一個文件提交給一個SVN倉庫時,你的計算機不會將整個文件發送到服務器,它只會發送一個差異(或增量)來同步該文件的存儲庫版本和本地副本。

希望這會有所幫助!

2

值得一提的是,這本書已被棄用,並不是大多數人現在使用兵馬俑的方式(人們使用快速模式,這是基於序列化的「用戶類型」)。無論如何,試圖回答你的問題:兵馬俑儀器你的類,所以所有必要的鉤子圍繞領域突變和鎖定在那裏,以便所做的更改(在適當的鎖定下)將傳播到,首先,二(L2)又名兵馬俑服務器);其次,試圖讀取這些字段的節點。

我希望這個(非常快速和簡短)的答案稍微回答你的問題。