GridCacheQueue元素也是GridCacheElements吗?

时间:2014-03-13 21:44:34

标签: gridgain

我正在评估GridGain并阅读并重新阅读我能找到的所有文档。虽然其中很多内容非常全面,但您可以说它主要是由开发人员编写的。如果有一个由局外人的观点写的参考书,那就太好了。

无论如何,我有五个基本问题,我希望GridGain的某个人可以回答并为我澄清。

  1. 我的理解是GridCacheQueue(和其他分布式数据结构)构建在GridCache实现之上。这是否意味着GridCacheQueue的每个元素实际上只是GridCache映射的GridCacheElement,或者每个GridCacheQueue都是GridCacheElement,还是我完全错了?
  2. 如果我在GridCache上设置了默认TTL,GridCacheQueue的元素是否会在TTL时间内到期,或者它是否仅适用于GridCacheElements(可能会在上面的#1中回答)?
  3. 有没有办法让GridCacheQueue在一段时间后过期而不必手动删除?
  4. 如果将缓存设置为备份到其他节点并且缓存使用堆外内存和/或交换存储,则堆外内存和/或交换存储也会复制到后端 - 节点?
  5. 是否可以动态创建新缓存,还是只能在创建节点时通过配置创建?
  6. 感谢任何有见地的信息!

    -Colin

2 个答案:

答案 0 :(得分:0)

在尝试使用GridCache和GridCacheQueue之后,这是我对5个问题的了解:

  1. 我不知道GridCacheQueue或其元素是如何附加到GridCache的,但我知道GridCacheQueue的元素不会显示为GridCache的GridCacheElements。
  2. 如果在GridCache上设置TTL并向其添加GridCacheQueue,一旦GridCache的元素开始过期,GridCacheQueue就会变得无法使用并导致抛出GridRuntimeException。
  3. 是的,请参阅上面的#2。但是,一旦GridCache的元素开始过期,似乎没有一种安全的方法来测试队列是否仍然存在。
  4. 目前还没有相关信息。真的会喜欢一些反馈。
  5. 这是一个我永远不应该问的问题。 GridCache可以完全用代码创建并配置。

答案 1 :(得分:0)

首先我要说GridGain支持多个队列配置参数:

  • 同居者与非同居者。在共置模式下,您可以拥有许多队列。每个队列将分配给某个网格节点,该队列中的所有数据都将缓存在该网格节点上。这样,如果您有许多队列,则每个队列可以缓存在不同的节点上,但队列本身应该均匀分布在所有节点上。另一方面,非共存模式适用于较大的队列,其中同一队列的数据在多个节点之间进行分区。
  • 容量 - 此参数定义最大队列容量。当队列达到此容量时,它将自动开始驱逐元素最旧的元素。

现在,让我试着解决其中的一些问题。

  1. 我相信GridCacheQuery的每个元素都是缓存中的一个单独元素,但实现将它们标记为内部元素。这就是为什么在迭代缓存时看不到这些元素的原因。
  2. TTL不应与队列中的元素一起使用(GridGain将很快添加此功能)。目前,您应该通过在创建时指定队列“容量”来限制队列的最大大小。
  3. 我不相信,但我认为这个功能正在增加。现在,您可以尝试使用org.gridgain.grid.schedule.GridScheduler来安排稍后将删除队列的作业。
  4. 答案是肯定的。堆栈和交换空间中的数据都以与主堆栈缓存数据相同的方式进行备份和复制。
  5. 应在配置中创建缓存,可以是代码或XML。但是,GridGain有一个很酷的GridCacheProjection概念,它允许在同一个缓存上创建各种子缓存(缓存视图)。例如,如果将Person和Organization类存储在同一个缓存中,那么在使用Person类时可以使用缓存投影作为Person类型,在使用Organization类时可以使用类型组织的缓存投影。