lease机制

使用缓存,通常需要注意的问题是一致性的问题,通常做法是:
1. http中使用head协议保证
2. 每次读取数据client向server发送验证请求i,和1类似
3. server记录那些client读取过数据,如果server对数据进行了修改,进行callback形式告知客户端失效,主要的问题是如果server和client通信失败,更新操作将无法继续。

另外的实现采用现在的lease机制,server在一段时间内给予client控制修改的权限,如果server想要修改数据,首先需要征得client的同意,如果client同意,那么client需要清空自己的缓存。如果lease过期了,client可以续租。

lease机制相对于callback的话,基本上服务器的负载是类似的,但是相对于callback机制, lease机制的话,能保证如果client和server无法通信的时,更新操作能继续进行。

lease机制对于读写操作的支持 :
(1)read机制:通常client想server发送read命令时,server将把lease发送给client,保证在lease的时效期内其他lcient不会向该数据更新,如果lease过期了,client将向server发送请求,如果能续约,则续约,否则将更新缓存的数据
(2)write操作:client向server发送write命令;server等待所有请求的lease失效,或者是想lease holder请求i更新操作;全部通过,更新操作才能继续。

lease带来的问题:
1. 分布式系统中的时间同步问题,通常添加时间窗口解决

ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/90/1298/CS-TR-90-1298.pdf 

posted @ 2012-06-22 10:23  qiang.xu  阅读(1809)  评论(0编辑  收藏  举报