1

我正在考虑为我的应用程序使用 AppFabric 缓存,但不清楚如何让它做我想做的事。我在 1 个位置有 1 个 SQL 集群。我在全球拥有 200 多台应用服务器。我想在每个位置放置一个 AppFabric 缓存集群,以便应用程序服务器可以快速访问 SQL 对象。除了快速访问之外,我还需要他们在无法访问 SQL 集群的情况下访问数据。

有一个 HR 应用程序可以直接更新 SQL 集群,以便数据发生变化。应用程序服务器还将更新许多位置的 AppFabric 缓存。所有这些数据都需要保持同步。以下是我的问题:

  1. 当数据库发生变化时,缓存将如何更新?我读到 SQLDependency 是我需要的,但我也读到一旦发生更改,我的整个缓存将被刷新并且必须重新同步。我只想将更改的对象发送到多个缓存进行更新。

  2. 如果 SQL 集群不可访问并且缓存找不到正在请求的对象,会发生什么情况?

  3. 有没有更好的方法来做我想做的事情?这更多的是关于 SQL 对象的可用性,而不是关于性能。正在研究 MS Sync 框架...

4

2 回答 2

1

AppFabric 不支持像 SqlCacheDependency 这样的缓存依赖对象,但您可以做的是为 AppFabric 创建一个读取/写入缓存提供程序。此提供程序知道您的 SQL Server 数据库的结构,因此它可以从数据库中检索信息,并且可以在您进行更新时更新您的数据库。您的应用程序服务器会更新 AppFabric 缓存,因此您的缓存始终包含最新版本的数据,然后缓存会将更新异步写入数据库。

为了应对 HR 应用程序更新后端数据库,您可以将缓存中的项目配置为根据生存时间值过期,随后对缓存的请求将刷新缓存的版本。

于 2013-03-12T15:48:43.043 回答
0

我知道您之前发布过这个,但是有一些缓存解决方案可以让您利用缓存依赖项与主要数据源同步。在您的情况下,SQL 依赖的例子可用于 NCache。使用 NCache,您可以有多个选项与数据库同步,并且一旦此类选项为“通读”。所以本质上,当数据库发生变化时,依赖的对象会自动从缓存中删除,如果启用了读取,那么缓存服务器会自动检索对象的新副本。您可以在此处阅读有关数据库同步的更多信息

于 2013-05-28T06:28:12.110 回答