Shi*_*iji 5 c# architecture caching web-applications appfabric
我目前正在设计一个系统,我们需要知道用户是否还在线/登录.
该系统是基于.Net网络,所以我们打算做到这一点使用AJAX/JSONP代码,其中坪的服务器,每2分钟.
有大量用户,因此每2分钟一次ping会导致ca. 每秒600 ping.
因此,我们打算将此服务放在它自己的服务器上,并使用Velocity将所有信息存储在内存中.
缓存将是命名值对的第一组,第一组然后是人,以及每个人的时间戳.
问题是我们可以直接写入每个ping的速度缓存吗?或者这会导致锁定吗?我们应该首先写入队列然后从队列中更新缓存吗?
在我们更新缓存的同时,将有其他用户基于每个组请求信息.
我认为如果您可以更改模型以将每个缓存项基于用户而不是像您提到的一组用户,那么您应该能够做到这一点。如果您需要能够按组查询这些项目,则必须考虑一种方法来保留用于查询项目的键和组的索引(可能在内存中)(查询显然会是一个慢点)。
这将使您同时更新同一项目的可能性几乎为零(因为每个客户端只会每 2 分钟更新一次)
这将使您能够利用乐观并发模型来提高速度,如下面链接中 MSDN 上所讨论的那样,而不会丢失任何数据。
http://msdn.microsoft.com/en-us/library/ee790890.aspx