代码工匠

Walking The Long Road.

缓存不是万灵药

公司有个很重要的服务,因为数据需求非常杂,所以关联的数据表非常多。而这个服务就承担起提供如此多数据的使命。

现在的做法是极度依赖缓存的,所以数据都读取出来,打包存到缓存中。一旦失效,一条数据大概会需要上百毫秒去读取,于是我们不得不提供一个预热缓存的程序,定期的去扫描。之前出过一次问题就是缓存失效之后,该服务出现大量超时,乃至线程池跑满,整个服务都不可用。

在我的理解中,缓存是一个提高性能的方案,但是绝对不是万灵药,哪痛贴哪。比如这个服务,有些数据可能只有极少需求方需要,但是之前是统统都读取出来,而我觉得正确的做法可能是理清数据需求,从更细粒度去提供。

Add a comment