AppFabric同步本地缓存

AppFabric同步本地缓存,appfabric,appfabric-cache,Appfabric,Appfabric Cache,我们有一个非常简单的AppFabric设置,其中有两个客户端——让我们称它们为服务器a和服务器B。服务器a也是主缓存主机,服务器a和B都启用了本地缓存。我们希望能够从服务器B对某个项进行更新,并在30秒内将该更改传播到服务器A的本地缓存(例如) 据我所知,似乎有两种不同的方法可以将更改传播到客户端: 在客户端缓存上设置超时,以每X秒逐出项目。在下一次请求该项时,它将从主机缓存中获取该项,因为本地缓存没有该项 启用通知并有效订阅以从缓存主机获取更新 如果我的要求是在30秒内获得所有客户端的更新,那

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

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

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

    我认为我们需要实施上面的选项2,但我不确定我是否理解这是如何工作的。我已经阅读了所有的msdn文档()并查看了一些示例,但我仍然不清楚是否真的需要编写自定义代码,或者这只是在您希望进行额外处理时才需要

    因此,我的问题是:如果希望通过通知将更新传播到所有本地缓存,是否有必要向现有应用程序中添加代码,或者回调功能只是在按下通知时添加额外处理或代码的一种额外方式?我是否可以在客户端启用通知并设置适当的轮询间隔,然后一切正常


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

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

    在客户端配置中,需要对元素设置sync=“notificationbase”

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

    我猜,你可以添加到应用程序中的回调逻辑只是为了防止你想添加自己的特殊逻辑(比如每次缓存中的项目发生变化时给总统发电子邮件)