系统相关
首页 > 系统相关> > java – EhCache是​​否利用MemCached等所有节点的内存?

java – EhCache是​​否利用MemCached等所有节点的内存?

作者:互联网

MemCached文档提到的数据是跨节点分布的.这是他们对分布式缓存的定义.如果节点A需要节点B上的数据,则数据从B传输到A.如果A崩溃,则存储在A上的所有数据不再可用于B.

但是,EhCache有一个不同的distributed caching定义.基本上,它更像是共享内存而不是分布式缓存.如果节点A修改某些数据,则节点B将看到该修改.如果A崩溃,则存储在共享存储器中的任何数据A仍可供节点B使用.

这引出了两个问题:

>如果我有3个节点A,B,C每个都有1GB的内存,似乎MemCached将添加内存并使它看起来像节点的总共3 GB的内存.但是,似乎EhCache不添加3 GB,而是在每个节点之间允许最多1GB的共享内存.它是否正确?
>如果回答1.是肯定的,那么断定EhCache和MemCached实际上是互补而不是竞争是否正确?

解决方法:

我对两者都有一些经验.

我对你的两个问题说’是’.

我一直在和Hibernate一起使用ehcache.它将在中央数据库中找到的数据缓存在群集中的多个服务器节点上的内存中.原因当然是减少数据库访问.如果一个节点写入缓存的值,则该值应在其他节点上失效,以强制它们重新读取数据库中的值,然后重新缓存它.

Memcached我用作数据源.这是一个简单的key = value数据库.在每个服务节点上,您可以定义可以使用的memcached节点列表.然后它会写入某个节点(通过循环我猜).密钥包含有关存储该值的memcached节点的信息.

所以根据我的经验,memcached是一个经常分布的数据库(不是关系类型,但仍然是数据库),而ehcache更像是传统的缓存.

标签:java,distributed-caching,memcached,ehcache,shared-memory
来源: https://codeday.me/bug/20190826/1733177.html