我目前正在实施使用CouchDB的和一个的Restlet REST Web服务。所述的Restlet层是主要用于认证和一些小的JSON数据的滤波送达CouchDB的:

客户端<= HTTP => [的Restlet <= HTTP =>的CouchDB]

我使用CouchDB的还来存储用户登录数据,因为我不想增加额外的数据库服务器用于这一目的。因此,每个请求我的服务导致两个CouchDB的请求通过的Restlet进行(AUTH数据+“真正的”请求)。为了保持服务为efficent越好,我想减少请求的数量,在登录数据这种情况下冗余请求。

我的想法现在是我的Restlet应用程序内提供高速缓存(通过LinkedHashMap的i.e.LRU高速缓存)的缓存,登录数据,因为HTTP缓存将probabily是不够的。但我怎么缓存失效的数据,当用户更改密码,例如。由于REST的应用程序可能会并行在多个服务器上运行,我不希望建立一个中央实例只是为了缓存登录数据。

目前,我省要求身份验证数据在缓存中,并尝试使用它们权威性的新要求。如果认证失败或现在有可获得的项目,我会为了获得实际的身份验证数据派遣一个GET请求我的CouchDB的存储。 因此,在最坏的情况下,已更改数据的用户也许会仍然能够与他们的老凭据登录。我该如何处理呢?

或者什么是保持高速缓存(S)上的最新一般来说一个好的策略?

预先感谢。

有帮助吗?

解决方案

要我看起来你已经长大了,远远不够用一些“专业”的缓存解决方案(如的EHCache )。所有分布式缓存允许新的数据复制和失效不同节点,以便您的问题已经解决了其中。

其他提示

一个分布式内存缓存就像memcached的可能是你在找什么。可以配置对象的年龄,高速缓存大小和也暴露回调从缓存中删除特定的对象(当信息是陈旧的等)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top