内存缓存(in-memory cache)

缓存原来作用是提高数据库访问性能。但是缓存不是数据库遮羞布,架构上缓存引入有着重要意义:状态对象:数据库的替代者。

缓存实际是内存,将状态置于内存而不是数据库,不但性能提升,还提高软件的可伸缩性和扩展性,直至轻松发展为分布式系统或云计算,这种缓存称为内存缓存(in-memorycache)或称数据网格In-Memory-Data-Grid(IMDG);JavaEE7引入分布式弹性缓存ElasticCaching,作为其云核心战略的一部分。云计算是一种计算和存储分离的模型,云计算本质是分布式可伸缩的内存计算,可见Amazon弹性缓存介绍。

当我们将DDD领域模型加载到内存中以后,我们就不再面向关系数据库中数据表编程,而是真正直接面向模型对象编程。Java内存模型优点:基于内存的并发模型,多线程机制,大量线程安全型库包支持基于内存的并发机制,粒度灵活控制,灵活度高于数据库锁。多核并行计算模型基于线程的异步模型(DomainEvents)。

Twitter从Ruby转向JAVA的实践证明:Cache缓存+JVM微调是Java/JVM的核心竞争力,这也是最容易被我们忽视的,因为很多使用Java系统(包括Spring+Hibernate)只是当作SQL语句的包装器来使用,负载主要集中在数据库上,根本不会使用In-memoryCache。

Jdon认为对象缓存恰好是领域模型和Java内存模型之间的衔接物,通过引入缓存,将领域模型落实到计算机平台上,如下图,基于此理念JdonFramework特点就是DDD+Cache,而Spring3才刚刚加入缓存,两种框架相比可见关键性方向的不同:

相关推荐