所有 nodes/Member 上的 Hazel-cast 缓存键值可用性
Hazel-cast Cache Key-Values availability on all nodes/Member
我正在使用 hazelCast 缓存从 API 获取的数据。
API 的结构是这样的
Controller->Service->DAOLayer->DB
我将 @Cacheable 保留在存在 getData(int elementID) 方法的服务层。
在我的架构中有两个 PaaS 节点(np3a、np4a)。 API 将部署在它们两个上,用户将通过 loadBalancer IP 访问它们,这会将它们重定向到任一节点。
因此,对于来自用户 X 请求的一次命中,可能会转到 np3a,而对于来自同一用户请求的另一次命中,则可能会转到 np4a。
我希望在第一次命中时缓存 np3a 上的响应时,相同的缓存响应也可用于 np4a 的下一次命中。
我读过
- ReplicatedMaps:内存效率低下
- NearCache : 当读>写
我不确定该采用哪一种方法,或者您是否建议采用完全不同的方法。
如果您有 2 个节点,Hazelcast 将对数据进行分区,使一半数据在节点 1 上,另一半在节点 2 上。这意味着用户有 50% 的机会询问包含数据的节点.
如果你想在所有情况下都避免额外的网络请求来获取节点上不存在的数据,唯一的方法是每次都将数据复制到每个节点。这就是 ReplicatedMap
的目标。这就是权衡:性能与内存消耗。
NearCache
在 "client-side" 上添加额外的缓存,如果您使用的是客户端-服务器架构(而不是嵌入式)。
我正在使用 hazelCast 缓存从 API 获取的数据。 API 的结构是这样的
Controller->Service->DAOLayer->DB
我将 @Cacheable 保留在存在 getData(int elementID) 方法的服务层。
在我的架构中有两个 PaaS 节点(np3a、np4a)。 API 将部署在它们两个上,用户将通过 loadBalancer IP 访问它们,这会将它们重定向到任一节点。
因此,对于来自用户 X 请求的一次命中,可能会转到 np3a,而对于来自同一用户请求的另一次命中,则可能会转到 np4a。
我希望在第一次命中时缓存 np3a 上的响应时,相同的缓存响应也可用于 np4a 的下一次命中。
我读过
- ReplicatedMaps:内存效率低下
- NearCache : 当读>写
我不确定该采用哪一种方法,或者您是否建议采用完全不同的方法。
如果您有 2 个节点,Hazelcast 将对数据进行分区,使一半数据在节点 1 上,另一半在节点 2 上。这意味着用户有 50% 的机会询问包含数据的节点.
如果你想在所有情况下都避免额外的网络请求来获取节点上不存在的数据,唯一的方法是每次都将数据复制到每个节点。这就是 ReplicatedMap
的目标。这就是权衡:性能与内存消耗。
NearCache
在 "client-side" 上添加额外的缓存,如果您使用的是客户端-服务器架构(而不是嵌入式)。