分布式远程调用需要消耗很多资源,网络开销导致整体响应时间下降。为了解决这个问题,在业务允许的前提下,不需要实时的数据,可以用缓存处理。
缓存三种模式
Cache Aside更新模式
这个模式是最常用的。在分布式下读缓存数据防止读到脏数据,写操作比读操作更费时间,而且要锁表,读操作必须在写操作前进入数据库,又要晚于写操作更新缓存之后,要达到这几个要求有点困难。
最好的方式设置缓存过期时间。
Read/Write Through更新模式
Read Through
在查询操作中,用缓存服务自己加载,对应用方是透明的。
Write Through
更新数据时,如果没有命中缓存,直接更新数据库。如果命中缓存,更新换粗,由缓存自己更新数据库。
Write Behind Caching更新模式
更新数据时,只更新缓存,不更新数据库,缓存会异步批量更新数据库。这个设计让i/o处理操作飞快因为基于内存。
缓存设计
缓存看中命中率,如果命中率高,证明缓存有效,一般达到80%已经不错了。缓存通过牺牲强一致性提高性能,并不是所有业务都适合用缓存。 缓存的过期时间不宜过短或过长,使用LRU策略,当内存不够用时,需要有数据被清理出去,会找不活跃的数据清除。