9

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

对于提出一个我应该能够从文档中回答的问题,我深表歉意,但我已经阅读、阅读和搜索,但无法回答这个问题,这让我相信我对 AppFabric 的缓存功能的意图有根本性的错误理解为了。

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

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

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

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

4

1 回答 1

11

因此,如果我理解正确,您有:

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

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

  1. 本地缓存
    在 AppFabric 设置中,客户端能够拥有对象的本地缓存,其中对对象缓存的第一次调用将对象放置在本地缓存中,随后对该对象的请求从本地缓存中完成。由于超时或由于主缓存通知本地缓存对象已过时,对象被从本地缓存中删除。您可以在 web.config 中进行配置:

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

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

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

在这两种情况下请记住,虽然您的客户端将收到最新版本的缓存对象,但 AppFabric 中没有持久性,您需要在更新缓存对象的同时将更改写入数据库,否则您运行将过期数据读入缓存的风险。

于 2010-06-11T10:33:16.513 回答