作为一个查询系统,效率和稳定性是系统设计的重中之重,提升效率最有效的方法无疑是缓存。
缓存方式选取:
1:本地缓存 (Guva Cache, map )
2:分布式缓存(tair)
分布式环境下,采用分布式缓存很好的解决了数据一致性问题,所有业务系统共享tair集群。但是增加了一次远程tr调用。稳定性和效率相对于本地缓存来说会低一些。
而本地缓存虽然可以减少一次tr调用,但是各服务器拥有自己的缓存数据,不是共享的,数据一致性的问题很难解决。
缓存的服务方式:
1:近端缓存 业务系统-> 远程tair
2:远端缓存 业务系统->查询系统->tair
近端
远端
近端缓存相对于远端缓存可以减少一次远程的tr调用,但是数据一致性的保证相对于远端缓存来说会有一定的困难。
据上来看缓存最重要的问题是如何做到缓存数据与DB数据的一致性:
缓存数据一致性解决方案:
(1)可以采用在本服务器启动定时任务,定时刷新来保证数据的一致性。
定时任务实现:http://www.cnblogs.com/E-star/p/4688917.html
(2)可以在缓存数据中添加时间戳,每次读取数据之后根据时间判断是否有效然后进行刷新。
(3)当DB数据发生变化时,可以通过DRM方式让缓存及时刷新,保证数据的一致性。