AppFabric同步本地缓存

时间:2013-07-24 15:36:19

标签: appfabric appfabric-cache

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

据我了解,似乎有两种不同的方法可以将更改传播到客户端:

  1. 在客户端缓存上设置超时,以便每隔X秒逐出一次。在下一个项目请求时,它将从主机缓存中获取项目,因为本地缓存没有项目
  2. 启用通知并有效订阅从缓存主机获取更新
  3. 如果我的要求是在30秒内获得所有客户端的更新,那么如果使用上面的选项#1,则在本地缓存上设置小于30秒的超时似乎是唯一的选择。由于缓存的大小,这将驱逐所有缓存(其中99.99%可能在过去30秒内没有改变)是低效的。

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

    所以我的问题是:如果想要通过通知将更新传播到所有本地缓存​​,是否有必要将代码添加到现有应用程序中,或者回调功能只是添加额外处理或代码(如果通知是推下去?我可以只启用通知并在客户端设置适当的轮询间隔吗?事情会有效吗?

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

1 个答案:

答案 0 :(得分:0)

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

在客户端配置中,您需要在元素上设置sync =“NotificationBased”。

客户端配置中的元素将告诉客户端检查服务器上的新通知的频率。在这种情况下,客户端每15秒检查一次通知并下拉所有已更改的项目。

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