使用租约机制解决缓存数据更新的问题

在最近的工作中,遇到如下的问题:
在设备每次向后台发出请求后,后台在处理请求前的重要一项就是:验证设备编号。在最初的设计中,采用每次都去数据库查询继续验证,在设备数量少的情况下,这种处理的问题是不会显现的,但是,当存在大量设备并对后台服务端的处理能力提出要求的时候,这种机制就会成为其中的瓶颈。一是,这样会不断的打开和关闭数据库连接;二是,若存储设备的数据表过大,也会对服务端的处理能力造成影响。
最初提出的方案是:在服务端程度启动后,就将设备表中的所有设备基础信息读取到内存中,这样就避免了每次都访问数据库的同一个数据表。但是这样的话,就会存在下面的问题:如果设备减少或者增加怎么办呢?
当然可以考虑通过考虑在管理端和后台服务端按照指定的协议格式进行tcp通信的方式解决,当管理端添加或者删除设备后就告知后台服务程序,需要对程序启动时读取的设备列表进行删除或者添加。但是这样的缺点是:管理员在增加或者删除设备的时候,就会更繁琐,一切应该尽量方便,让系统更加优雅。
但是当时一直对此没有很好的解决方法,所以也就只有暂时采用上述方法。
前一段时间,看到某开源数据库设计文档,在其设计过程中也遇到了同样的问题。于是就借鉴了他们的做法,采用租约机制,即是若后台和管理服务之间设立一个租约,在租约期限内,后台缓存的信息都是有效的,在过了期限后,后台就应该向管理服务发出续约,若管理服务的对数据库信息更改过,则应将告诉后台应该重新查询数据库来获得最新的设备信息,否则,还是直接使用缓存中的信息即可。
通过租约机制,可以解决缓存中的数据不是最新的问题。
参考:
1、租约机制简介
http://blog.csdn.net/kevinfankai/article/details/4024937

你可能感兴趣的:(缓存,租约机制)