我们的站点最近被分成了几个较小的站点,然后分布在不同的IDC中。
其中一个站点提供用户身份验证和其他与用户相关的服务,其他站点通过 Web 服务访问它。
在每个远程获取数据的站点上,我们都会创建一个本地缓存,这样我们就不必在每次需要用户信息时都去远程。
您会推荐什么缓存更新策略来确保数据完整性?
我们的站点最近被分成了几个较小的站点,然后分布在不同的IDC中。
其中一个站点提供用户身份验证和其他与用户相关的服务,其他站点通过 Web 服务访问它。
在每个远程获取数据的站点上,我们都会创建一个本地缓存,这样我们就不必在每次需要用户信息时都去远程。
您会推荐什么缓存更新策略来确保数据完整性?
由于您需要接近实时的更新策略,因此您肯定需要缓存失效通知引擎。
它有两种可能的实现模型:
1.Pull 主服务器拉取带有通知消息的子服务器,例如"resourceID=34392 not more valid in your cache"
. 此消息应在主服务器上的每次数据更新时发送。
"If-object-was-updated"
当然,在这种情况下,主服务器应该在最后一个缓存生命周期内保持更新的对象列表,并且非常快速地响应请求。正如您在这两种情况下看到的,您的主服务器应该在每次数据更改时触发一个事件。在第一种情况下,此事件将通过“通知总线”传输到子服务器,在第二种情况下,此事件将存储在recently-updated-objects
列表中。所以这两个选项都需要在主服务器上进行一些代码更改。
对我来说,第二个选项更容易实现,但这很大程度上取决于您使用的软件堆栈。