>但是我希望缓存能更加可控,允许控制缓存的使用,甚至跳过缓存。当然这要对应用透明
我前面说了,缓存是开辟对象的计算空间,对缓存要更可控,就是对对象更可控。
我们平时OOP编程,其实都是对对象进行操作,这些对象都是假设运行在内存中,而缓存不过是特殊化的一种内存,所以,谈到透明性,缓存内存是最好的,因为它一点都没有形成我们对Object操作的障碍和阻碍,中间没有隔阂,这个透明性比数据库要强多,你操作数据库中数据,必须使用数据库专用方式,比如SQL语句,但是你操作缓存中对象,有让你使用内存缓存专用方式吗?缓存是大者无形了。
缓存本身有现成的中间件产品,比如Terracotta可以更可靠地完成,Terracotta通过多台服务器同时运行形成真正7x24永不停机运行,所以,没有停机一说,内存中数据就没有丢失担忧,况且Terracotta也有对象存储持久化,也提供对缓存进行监测和tunning功能,缓存的管理工具因为和业务对象剥离了,所以比数据库管理工具更安全,更简单,更强大。
usejava谈到透明性 可靠性观点非常好,这些都是我们软件的追求目标,所以,方向是走对了,关键是我们如何理解透明性和可靠性,我们讲究伸缩性也是为了可靠性,因为任何一个单点都有风险,所以只有伸缩扩张了,并行计算了,才降低单点风险,当然可靠性还有通过事务和锁机制来完成。
关于可靠性 透明性 伸缩性这些具体定义有分歧的,可另开帖子讨论。本帖主要围绕缓存主题展开的。
[该贴被banq于2009-05-24 15:18修改过]