1.缓存意义
可扩展性,可靠性和高性能是现代J2EE应用程序的必备要求。不管客户端类型如何,请求处理通常都涉及到对性能有负面影响的操作,比如从不同的数据源收集信息和执行复杂的计算。 缓存是提高企业应用程序性能的最重要的实践之一。 每个应用程序都有自己的缓存要求,必须不断调整以确保不会发生性能下降。尤其是分布式缓存系统,缓存服务的目标。大量远程调用速度特别慢,会占用宝贵的网络带宽,引发性能问题。
2.缓存的基本准则
-
通过添加缓存来减少远程调用
-
缓存只读数据,如地区信息
-
给定的一组参数值总是返回相同的信息,如果可以容忍陈旧数据,则可缓存动态数据。
-
要缓存的数据量应该是可控的,否则最终会使用太多的内存
-
跨集群缓存动态数据并同步每个节点中的数据是困难的
-
应该避免缓存实时数据(如股市行情)和敏感数据
-
缓存可以引入与安全和审计有关的问题??
2.声明式缓存优点
声明式缓存不涉及任何编程,因此它是一种更容易,更快速的应用和调整缓存服务的方式。
高速缓存服务的配置可以完全在Spring IoC容器中完成。
声明式缓存特点:
-
提供一个统一,更简单,更易于使用的API
-
提供声明式缓存刷新以防止陈旧数据的存储
-
支持不同的声明式配置策略
-
可以很容易地扩展来支持额外的缓存提供程序
反之 编程式缓存
-
代码难以理解,核心功能难以看清
-
代码难以维护。对缓存提供者的API被嵌入并遍布在应用程序中
-
代码很难测试
-
代码很难重用
所以编程式风格带来的优势:
-
更清晰地分离责任
-
更高的模块化
-
设计决定的晚期约束,开发人员可以推迟做出有关缓存实现和调优的决策。
分布式缓存流程
缓存启动并运行后,您将查找需要将缓存对象存储在文件系统中的情况,或者在群集中的节点中缓存缓存中的更改。缓存提供者能够借助Java序列化来执行这些功能,这意味着要存储在缓存中的对象应该实现接口java.io.Serializable。
本文转自 randy_shandong 51CTO博客,原文链接:http://blog.51cto.com/dba10g/1979106,如需转载请自行联系原作者