网络编辑文件中锁的实现

有一篇文章,需要被编辑,一般来说,都是一人在编辑,但是不排除两个人一起编辑的情况,因为不能做的像git那样成为一个标准的版本控制器,可以合并对比差异,这样工作量会有点大,所以实现一个最简单实用的,加锁,同一篇文章同一时间只能由一个人来编辑。

第一种方案是在mc或者是redis加一个文章id和登陆编辑id的标志位,每次访问页面的时候,检查文章id的标志位是否存在,存在了,是谁在编辑,然后提示,通知不能编辑。对于缓存中的标志位的维护需要通过前端和后台的配合,前端在页面相隔时间T发送一个心跳信号,表示当前编辑依旧在编辑,后台在收到心跳信号之后,将标志位的失效时间延后3*T,保证不会因为某次网络事故丢包导致锁失效,如果编辑关闭浏览器,前端通过监测事件,在关闭之前发送一个请求,解除锁的存在,如果突然关机,或者断网等等,也可以保证锁在3*T之后,自动解除。

这个方案的优点是简单,而且也实用,没有过于复杂的实现,前端和后台配合一下就好,缺点是DDOS,而且,关闭之前的事件或许发送失败,3*T时间的容忍程度,等等。

第二种方案是websocket

Leave a comment

Your email address will not be published.

*