2013-07-24 159 views
3

我们有一个非常简单的AppFabric设置,其中有两个客户端 - 让我们称它们为服务器A和服务器B.服务器A也是主导缓存主机,并且服务器A和B都启用了本地缓存。我们希望能够更新来自服务器B的项目,并在30秒内将该更改传播到服务器A的本地缓存(例如)。AppFabric同步本地缓存

据我所知,似乎有越来越传递给客户端的变化的两种不同的方式:

  1. 在客户端缓存设置超时驱逐项目每X秒。在该项目下一个请求会从主机缓存拿到项目,因为在本地缓存中没有该项目
  2. 启用通知和有效订阅从缓存主机

获得更新。如果我的要求是要在30秒内获得所有客户端的更新,那么在本地高速缓存上设置超过30秒的超时时间似乎是使用上述选项#1时唯一的选择。由于缓存的大小,这将无法有效驱逐所有的缓存(其中99.99%可能在最近30秒内没有改变)。

我认为我们需要实现的是上面的选项#2,但我不确定我是否理解这是如何工作的。我已经阅读了所有的msdn文档(http://msdn.microsoft.com/en-us/library/ee808091.aspx)并查看了一些示例,但是我仍然不清楚是否真的有必要编写自定义代码,或者仅当您想要进行额外处理时才这样做。

所以我的问题是:是否有必要添加代码到现有的应用程序,如果想通过通知传播到所有本地缓存​​更新,或者是回调功能只是一个额外的处理方式或代码,如果通知被推倒?我可以只启用通知并在客户端设置适当的轮询间隔,而且事情会正常工作吗?

它似乎是默认行为(启用通知时)应该是在每个轮询间隔自动下拉新鲜项目。

回答

0

我跑了一些测试,很高兴地说,你不需要编写任何代码来确保所有的客户端保持同步。如果你设置以下的集群配置的子元素:

在你需要在元素上设置同步=“NotificationBased”客户端配置。

客户端配置中的元素将告诉客户端应该多久检查一次服务器上的新通知。在这种情况下,客户每隔15秒会检查一次通知并下拉任何已更改的项目。

我猜你可以添加到你的应用程序的回调逻辑,以防万一你想添加自己的特殊逻辑(比如每次在缓存中更改项目时给总裁发电子邮件)。