我最近开始研究 Infinispan 作为我们的缓存层。在阅读下面提到的 Infinispan 中的操作模式后。
- 嵌入式模式:当您在与应用程序相同的 JVM 中启动 Infinispan 时。
- 客户端-服务器模式:这是当您启动远程 Infinispan 实例并使用各种不同的协议连接到它时。
首先,我现在很困惑,从上述两种模式中哪个最适合我的应用程序。
我有一个非常简单的用例,我们有一个客户端代码,它将使用服务的主 VIP 调用我们的 REST 服务,然后它将负载平衡到Service Server
我们部署服务的个人,然后它将进行交互使用 Cassandra 数据库检索基于用户 ID 的数据。下图会让一切都清楚。
假设例如,如果客户端正在寻找一些数据,userId = 123
那么它将使用主 VIP 调用我们的 REST 服务,然后它将负载平衡到我们的四个服务服务器中的任何一个,假设它得到负载平衡到 Service1,然后 service1 将调用 Cassandra 数据库获取记录userId = 123
,然后返回给客户端。
现在我们计划使用 Infinispan 缓存数据,因为压缩正在扼杀我们的性能,以便我们的读取性能可以得到一些提升。所以我开始研究 Infinispan 并偶然发现了两种模式,如下所述。我不确定在我们的案例中使用 Infinispan 的最佳方式是什么。
其次,从 Infinispan 缓存中,我期望的是,如果我使用嵌入式模式,那么它应该看起来像这样。
如果是,那么 Infinispan 缓存将如何相互交互?有可能在某个时候,我们会为那些将在另一个服务实例 Infinispan 缓存上的用户 ID 寻找数据?正确的?那么在这种情况下会发生什么?infinispan 也会处理这些事情吗?如果是,那么我需要进行哪些配置设置才能确保这件事正常工作。
如果我遗漏了什么,请原谅我的无知。任何明确的信息都会使我对上述两个问题更加清楚。