我们有一个应用程序,它是集群化的,并且在其核心有一个缓存。该缓存基于计算出的数据,从底层数据库中构建(该数据库也会被复制)。它用于快速查找流式数据,以便实时进行路由决策。
由于缓存计算所依据的数据可能来自集群中的任何节点,我们考虑将缓存也进行复制,这样我们就不必以特定于数据库的方式监听来自系统中其他节点的复制更改。
我们已经确定ehcache(infinispan / hazelcast,其中nearcache是另一种选择)作为可能的缓存实现。到目前为止还不错。
我需要知道的是,在单个节点或整个应用程序重新启动时,如何重新填充此缓存。每个节点所需的所有数据都存在于底层数据库中。因此,每个节点是否只需从其数据库加载数据并在重新启动后填充缓存?然后缓存将如何使集群节点达到单一状态?
我了解到有磁盘持久缓存 - 这是使用ehcache的方法吗?我不想将其作为首选项,因为所有数据的单一点是数据库,那是决定哪些是正确数据的中央机构。
是否有一种方法可以在应用程序重新启动时使用所有数据重新加载缓存,并使所有缓存执行相同的操作并同步增量?我想这可能是一件难事,并且可能不可行,因为所有节点都不会将它们的密钥来回发送。但是我想确认一下,并想知道是否有其他处理此情况的策略。
由于缓存计算所依据的数据可能来自集群中的任何节点,我们考虑将缓存也进行复制,这样我们就不必以特定于数据库的方式监听来自系统中其他节点的复制更改。
我们已经确定ehcache(infinispan / hazelcast,其中nearcache是另一种选择)作为可能的缓存实现。到目前为止还不错。
我需要知道的是,在单个节点或整个应用程序重新启动时,如何重新填充此缓存。每个节点所需的所有数据都存在于底层数据库中。因此,每个节点是否只需从其数据库加载数据并在重新启动后填充缓存?然后缓存将如何使集群节点达到单一状态?
我了解到有磁盘持久缓存 - 这是使用ehcache的方法吗?我不想将其作为首选项,因为所有数据的单一点是数据库,那是决定哪些是正确数据的中央机构。
是否有一种方法可以在应用程序重新启动时使用所有数据重新加载缓存,并使所有缓存执行相同的操作并同步增量?我想这可能是一件难事,并且可能不可行,因为所有节点都不会将它们的密钥来回发送。但是我想确认一下,并想知道是否有其他处理此情况的策略。