看了xmuzyu的回复,获益不少。但还有些问题要继续讨论。
看来缓存主要控制那些业务对象被放入内存,取出和放入大概类似于获得和释放一个引用。问题是通用的缓存框架是否足够灵活和可控,能很好的完成这个工作。由于缓存根本和业务无关,恐怕很难根据实际业务需求决定是否把业务对象放入内存。
我也同意近则快,但是这不等于减少物理I/O。从数据服务器cache到应用服务器需要网络开销,但是分布式缓存同样有这个问题。数据库cache不了解也业务,但是业务是由业务对象控制,甚至并行读写也要业务对象自己完成,不明白缓存如何根据业务需求缓存。
OO确实使系统逻辑清晰,但是我不认为用好OO就没性能问题。比如根据订单类型执行不同操作,对于过程编程,用if-else实现,对于机器可能就是一个跳转指令。用OO,至少也要涉及函数调用,执行复杂度差很多。
用好OO相对于用不好,可能性能会好。但是并不等于用好OO就是最好的性能的方案。你用的再好,也和汇编编程比不了性能。