使用WCF在Velocity / AppFabric中缓存区域

时间:2010-01-12 17:11:43

标签: wcf caching appfabric distributed-caching

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

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

所以我的问题是

  1. 如果我在一台主机上创建一个区域,它是否也在另一台主机上创建?
  2. 清除缓存区域时,是否仅在一台主机上清除?
  3. 如果我订阅了所有主机上的区域级别通知,我可以在另一台主机上捕获一个主机的事件吗?
  4. 在这种情况下,我应该使用区域还是远离它们?
  5. 我希望我的问题很明确。实际上,我对问题的解决方案比对问题的答案更感兴趣

3 个答案:

答案 0 :(得分:2)

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

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

当您说同步时,您的意思是何时启用HA?如果这就是你的意思,Velocity实际上会照顾到它。

对于问题: 1.不。 是的 3.通知将发送给客户。所以我不确定是否还有向其他主机发送通知。 4.区域提供搜索功能并从您身上夺走HA。在您的情况下,您可以使用HA的优势。

答案 1 :(得分:1)

拥有区域并不一定意味着您没有HA。如果您创建自己的缓存(并且不使用'默认'缓存),您可以使用Secondarys = 1(HA on)创建它 现在让我们说你有4个缓存主机;定义区域时,它将同时具有主要和辅助主机。因此,该地区的每一项行动都将导致它被应用于两者。

禾企

答案 2 :(得分:1)

命名缓存在参与节点之间分发。命名区域位于单个节点上。区域可以是HA,但它们无法充分利用分布式缓存扩展,因为它们的对象加载不会分布在群集中的参与节点上。此外,如果仅使用“默认”缓存,则使用带有HA的命名缓存需要最少三个节点,而不是两个节点。