Caching 分布式缓存机制是如何工作的?

Caching 分布式缓存机制是如何工作的?,caching,hazelcast,Caching,Hazelcast,我想知道hazelcast或ehcache变体如何实现跨jvm缓存,而每个jvm实例都有自己的内存区域。如何映射网格内存模型中共享的对象?这实际上取决于缓存实现 如果我们查看Hazelcast中的常规映射,那么数据是分区的。默认情况下,在271个分区中。假设您有271.000个键/值,那么每个分区将获得1000个键/值 每个分区分配给一台机器。因此,如果我们需要执行例如map.get(“foo”)的操作,它可能被映射到分区25(我们确定密钥的散列,并在此基础上查看拥有分区25的成员的分区表)。然

我想知道hazelcast或ehcache变体如何实现跨jvm缓存,而每个jvm实例都有自己的内存区域。如何映射网格内存模型中共享的对象?

这实际上取决于缓存实现

如果我们查看Hazelcast中的常规映射,那么数据是分区的。默认情况下,在271个分区中。假设您有271.000个键/值,那么每个分区将获得1000个键/值

每个分区分配给一台机器。因此,如果我们需要执行例如map.get(“foo”)的操作,它可能被映射到分区25(我们确定密钥的散列,并在此基础上查看拥有分区25的成员的分区表)。然后我们向机器发送一个请求,返回键“foo”的值


这大概就是Hazelcast中常规分区映射(IMap)的工作原理

感谢您的回答,那么分区表存储在哪里,在哪台机器或jvm中?例如,任何hazelcast实例如何知道它需要检查或请求分区表的位置。例如,假设我们正在运行三个hazelcast实例,它们工作在不同的jvm上,但工作在同一台机器上。如何为这三个jvm实例提供一些可访问的内存区域。每台机器将始终具有最新的数据副本。当一个成员加入/离开时,所有成员都将获得一份新副本。