在Terracotta的背景下,“它的记忆”是什么意思?

时间:2011-11-21 11:52:40

标签: java distributed-caching terracotta

我正在阅读Spring Recipes一书。我无法理解关于兵马俑的某些事情。

以下是本书中的一段

  

Terracotta与今天的大多数集群缓存不同,因为它没有可见的API,因为   将更改后的状态传递给整个群集中的节点会更有效。大多数系统使用一些   一种Java序列化或广播机制,其中每个其他节点被赋予整个对象,或   对象图,无论是否需要了解新状态,都会发生变化。   Terracotta做的不同:它增加对象图本身的记忆并同步其他图形   群集中的节点,因为它们需要对象状态的一致视图。简而言之,它可以做点什么   等同于在对象中传输一个更新的变量,而不是整个对象。

我可以理解它不使用序列化之类的东西来跨群集传输对象,但“它增长内存”是什么意思?

2 个答案:

答案 0 :(得分:2)

值得一提的是,这本书已被弃用,并不是大多数人现在使用Terracotta的方式(人们使用快速模式,这是基于序列化的“用户类型”)。

无论如何,试着回答你的问题:Terracotta对你的类进行检测,以便围绕场变异和锁定进行所有必要的挂钩,以便完成(在正确锁定下)所做的更改将首先传播到L2(aka兵马俑服务器);第二,尝试读取这些字段的节点。

我希望这个(非常快速和简短)的回答能够回答你的问题。

答案 1 :(得分:2)

正如axtavt所评论的那样,Delta本质上是对象的两个实例之间的区别。

  

...它增加了对象图的记忆......

可以用简单的术语重写,如......

  

它确定对象实例之间的差异

段落基本上是说......

其他缓存框架/技术通过在节点之间发送消息来同步集群中多个节点的对象状态,这些节点包含有关每个实例的每条信息,甚至是未更改的数据。通过仅发送已更改的信息来同步对象,Terracotta可以更有效地处理此问题。

将此视为SVN提交。当您将文件提交到SVN仓库时,您的计算机不会将整个文件发送到服务器,它只会发送差异(或增量)以将文件的存储库版本与您的本地副本同步。

希望这有帮助!