我们有一个非常简单的AppFabric设置,其中有两个客户端 - 我们称之为服务器A和服务器B.服务器A也是主要缓存主机,服务器A和B都启用了本地缓存。我们希望能够从服务器B对项目进行更新,并使该更改在30秒内传播到服务器A的本地缓存(例如)。
据我了解,似乎有两种不同的方法可以将更改传播到客户端:
如果我的要求是在30秒内获得所有客户端的更新,那么如果使用上面的选项#1,则在本地缓存上设置小于30秒的超时似乎是唯一的选择。由于缓存的大小,这将驱逐所有缓存(其中99.99%可能在过去30秒内没有改变)是低效的。
我认为我们需要实现的是上面的选项#2,但我不确定我是否理解这是如何工作的。我已经阅读了所有的msdn文档(http://msdn.microsoft.com/en-us/library/ee808091.aspx),并查看了一些示例,但我仍然不清楚是否真的有必要编写自定义代码,或者只有当你想要进行额外的处理时才这样做
所以我的问题是:如果想要通过通知将更新传播到所有本地缓存,是否有必要将代码添加到现有应用程序中,或者回调功能只是添加额外处理或代码(如果通知是推下去?我可以只启用通知并在客户端设置适当的轮询间隔吗?事情会有效吗?
似乎默认行为(启用通知时)应该是在每个轮询间隔自动下拉新项目。
答案 0 :(得分:0)
我运行了一些测试,很高兴地说您不需要编写任何代码来确保所有客户端保持同步。如果将以下内容设置为群集配置的子元素:
在客户端配置中,您需要在元素上设置sync =“NotificationBased”。
客户端配置中的元素将告诉客户端检查服务器上的新通知的频率。在这种情况下,客户端每15秒检查一次通知并下拉所有已更改的项目。
我猜你可以添加到你的应用程序的回调逻辑,以防你想要添加自己的特殊逻辑(比如每次项目在缓存中更改时通过电子邮件发送总统)。