有关如何使用AppFabric缓存功能的问题

时间:2010-06-10 20:10:57

标签: appfabric

有关如何使用AppFabric缓存功能的问题。

我为提出一个我应该能够从文档中回答的问题而道歉,但我已阅读并阅读并搜索并无法回答这个问题,这让我相信我对AppFabric的缓存有一个根本上有缺陷的理解功能适用于。

我在地理位置分散的公司工作。我们有一个特定的应用程序,最初编写为客户端/服务器应用程序。它非常庞大且对业务至关重要,我们希望将其转换为更好的架构解决方案。

我们的一个想法是将应用程序转换为使用WCF调用来读取其数据,这些调用是一个共存的Web服务器,它将缓存与美国数据库的通信。应用程序的性质使得每个人都倾向于查看相同的2000条记录,只有偶尔的更新,这些更新将由有限的一组用户进行。

我希望AppFabric的缓存机制允许我设置一个全局缓存,例如,当亚洲用户请求不在缓存中的数据或者说Web服务器将从数据库中读取数据时美国,向用户提供数据,然后更新缓存,将缓存数据传播到其他Web服务器,以便他们知道不会自己返回数据库。

AppFabric可以这样工作,还是应该让服务器从数据库中检索自己的数据?

1 个答案:

答案 0 :(得分:11)

所以,如果我理解你,你有:

  • 美国的数据库服务器
  • 世界各地的网络服务器?
  • (可能)美国的AppFabric缓存

AppFabric为您提供了解决此方案的两种方法。

  1. 本地缓存
    在AppFabric设置中,客户端具有对象的本地缓存的能力,其中对对象的缓存的第一次调用将对象放置在本地缓存中,并且从本地缓存完成对该对象的后续请求。由于超时或者主缓存通知本地缓存该对象是陈旧的,对象将从本地缓存中删除。您可以在web.config中配置它:

    <dataCacheClient>
        <localCache isEnabled="true" sync="NotificationBased" ttlValue="300" />
    </dataCacheClient>
    

    在您的情况下,您的Web服务器就是客户端;当您的某个亚洲用户请求一个对象时,亚洲Web服务器的本地缓存将保存该对象的副本。对该对象的更新将传播到主高速缓存,并且在基于通知的设置中,该对象在其他Web服务器上的本地高速缓存中的副本将无效,以便下一个请求将从主高速缓存中完成,然后将使用更新的对象刷新本地缓存。

  2. 在Web服务器上并置AppFabric缓存 没有什么可以阻止您的Web服务器也是AppFabric缓存服务器!在此设置中,您不会使用本地缓存,因为当主缓存已经是您的客户端本地时,它没有意义。但是,这将确保您的客户端始终从缓存中提取最新版本的缓存对象 但是,您需要小心网络负载,因为此设置可能意味着您的USA Web服务器始终从(例如)您的欧洲Web服务器读取缓存对象,这可能会降低服务器在尝试提供缓存请求时的速度以及网络流量。

  3. 在这两种情况下都要记住,当您的客户端将收到最新版本的缓存对象时,AppFabric中没有持久性,您需要在更新缓存对象的同时将更改写入数据库,否则您冒着将过时数据读入缓存的风险。