最近总结:
比较这两个缓存,还是要从CAP定律角度来考虑。

MC就只是一个缓存,可以把MC和Java中的Ehcache比较,MC之间没有数据复制替换,对付负载平衡的方式就是用HASH圆圈,减少影响面,粗一看,似乎很粗糙,但是有大道至朴的因素在里面,这样我们可以基于CAP定律来自己设计适合我们应用的缓存架构。比如你可以实现BASE架构。降低一致性要求,提高性能可用性。

而兵马俑设计则比MC要进一步,它是由兵马俑自己来实现CAP定律,比如实现状态在所有机器中复制,一致性很好,低延迟,这个方向其实是数据库或内存数据库的方向,但是如果你需要复制的状态数据很多,可用性就不是很好。这是一种非透明化的方案。

这两个方案可以综合使用在CQRD架构中,使用MC或Ehcache来实现分布式查询;而使用兵马俑来实现状态分布式,但是机器不宜多。

最新消息,Terracotta和Eucalyptus整合,提供基于兵马俑的应用程序可以无缝运行在云环境中:
Terracotta and Eucalyptus Integration Provides Data Management and Elastic Provisioning in the Cloud


最新消息:Ehcache和MemCache性能比较测试:memcache在存取数据上慢于ehcache一点,而查询获取上快了那么一点点。无论如何Memcache是C语言,而Ehcache是Java。

Memcache and SpyMemcache Client

10000 sets: 3396ms

10000 gets: 3551ms

10000 getMulti: 2132ms

10000 deletes: 2065ms

Ehcache 0.9 with Ehcache 2.0.0

10000 puts: 2961ms

10000 gets: 3841ms

10000 deletes: 2685ms


[该贴被banq于2010-03-23 09:50修改过]

Memcache分布式缓存和JVM集群Terracotta主要区别就是在状态共享,兵马俑Terracotta需要共享状态,因为“集”和“散”在本质上是对立的,因此Terracotta这种分而不散的架构可伸缩性不强,只有真正分散出去,才具有良好的可伸缩性。

相关讨论:
http://www.infoq.com/news/2011/09/java-memcached-rise

现在倾向于:memcached作为外部的分布式缓存,而Ehcache作为本地in-process内部缓存。

如果写操作比较多,倾向于使用Cassandra替代memcached + DB: NetFlix测试Cassandra:-每秒百万次写

相对于JVM压力,Cassandra是采取一种slab allocator,这在Twitter的性能调校文档中有专门说明,这也许是Twitter的URL采取抓取采取Cassandra原因之一吧。
[该贴被banq于2011-11-26 09:31修改过]