3

我有一个基于服务的体系结构,其中一个充满 asp 客户端的网络场命中 WCF 服务的应用程序服务器场。显然,所有的数据库访问都是由 WCF 服务完成的。现在,我想在服务层级别使用 Velocity 缓存我经常使用的数据库检索对象。我正在考虑使每个物理应用程序服务器也成为缓存集群的一部分。

根据 Velocity 文档,如果我使用区域,则对象仅存储在单个主机上。如果每个主机都保留自己的缓存,我实际上不会有任何问题,前提是我可以以某种方式同步它们。

所以我的问题是

  1. 如果我在一台主机上创建一个区域,它是否也在另一台主机上创建?
  2. 当我清除缓存区域时,它是否仅在一台主机上清除?
  3. 如果我在所有主机上订阅区域级通知,我可以在另一台主机上捕获一个主机的事件吗?
  4. 在这种情况下,我应该完全使用区域还是远离它们?

我希望我的问题很清楚。实际上,我对问题的解决方案比对我的问题的答案更感兴趣

4

3 回答 3

2

是的,您在阅读该区域将仅存在于一个主机中的文档时是正确的。

“如果每个主机都保留自己的缓存,我实际上不会有任何问题,前提是我可以以某种方式同步它们。”

当您说同步时,您的意思是启用 HA 时?如果这就是你的意思,Velocity 实际上会解决这个问题。

对于问题: 1. 否 2. 是 3. 通知将发送给客户。所以我不确定是否有任何方式向其他主机发送通知。4. Regions 提供搜索功能,并从您手中夺走 HA。在您的情况下,您可以利用 HA 的优势。

于 2010-01-26T15:43:30.710 回答
1

拥有区域不一定意味着您没有 HA。如果您创建自己的缓存(并且不使用“默认”缓存),您可以使用 Secondarys = 1 (HA on) 创建它,现在假设您有 4 个缓存主机;当您定义一个区域时,它将同时具有主要和辅助主机。因此,对该区域的每个操作都将导致它在两者中都应用。

山尼

于 2010-06-30T11:35:41.787 回答
1

命名缓存分布在参与节点上。命名区域位于单个节点上。区域可以是 HA,但它们不能充分利用分布式缓存扩展,因为它们的对象负载不会分布在集群中的参与节点上。此外,将命名缓存与 HA 一起使用至少需要三个节点,而不是如果您仅使用“默认”缓存则需要两个节点。

于 2011-05-07T19:29:34.887 回答