Performance Zone这个社区是由 New Relic 和 AppDynamics来维护的。这两个人都是APM社区的用户,APM社区有很多的知名的用户,并且能够为这些用户减少很多的成本。
定制高速缓存解决方案是一件非常有趣的事情,它似乎是改善应用程序整体性能的最简单的方式。然而,超高速缓存是一项很大的技术难题,在实践之前需要注意几个事项。
最佳范例
1、key/value集合并不是缓存
几乎我做过的所有项目都用到了一些定制高速缓存解决方案,这些方案都是使用的Java Maps。然而Map并不是缓存的解决方案,因为可能缓存超出了一个key/value的存储容量。缓存还需要满足以下特点:
-
驱逐策略(eviction policies)
-
最大容量限制(max size limit)
-
持久性存储(persistent store)
-
弱引用建(weak references keys)
-
统计(statistics)
Java Map并不能提供上述的特点,你也不应该花费你客户的钱去定制缓存方案。你应该选择一个更好的缓存技术,比如 EHCache 或 Guava Cache,这两种缓存技术都是非常强大的,而且用起来也非常的简单。这些工具经常被一些项目用来测试,所以,代码质量相比与其他的定制方案更加优秀。
2、使用一个缓存抽象层
Spring提供的缓存抽象层是一套非常灵活的方案。@Cacheable注解可以将业务逻辑层的代码从缓存横切关注点分离开来。缓存解决方案是可以通过配置文件进行配置的,所以它不会破坏业务层的方法。