Infinispan运营模式

ars*_*nal 4 java caching distributed-cache infinispan

我最近开始研究Infinispan作为我们的缓存层.在阅读Infinispan中的操作模式后,如下所述.

  1. 嵌入模式:这是在与应用程序相同的JVM中启动Infinispan的时候.
  2. 客户端 - 服务器模式:这是当您启动远程Infinispan实例并使用各种不同协议连接到它时.

首先,我现在很困惑,最适合我上述两种模式的应用.

我有一个非常简单的用例,我们有一个客户端代码,它将使用服务的主要VIP调用我们的REST服务,然后它将负载平衡到Service Server我们部署服务的个人,然后它将交互使用Cassandra数据库检索用户ID的数据基础.下图将使一切清晰. 在此输入图像描述

假设,例如,如果客户端正在寻找一些数据,userId = 123那么它将使用主VIP调用我们的REST服务,然后它将负载平衡到我们的四个服务服务器中的任何一个,假设它被负载平衡到Service1,然后service1将调用Cassandra数据库获取记录userId = 123,然后返回给客户端.

现在我们计划使用Infinispan缓存数据,因为压缩会破坏我们的性能,因此我们的读取性能可以得到一些提升.所以我开始研究Infinispan并发现了两种模式,如下所述.我不确定在我们的案例中使用Infinispan的最佳方式是什么.

其次,从Infinispan缓存来看,我将期待的是假设我使用嵌入式模式,那么它应该看起来像这样.

在此输入图像描述

如果是,那么Infinispan缓存将如何相互影响?有可能在某个时候,我们将寻找那些将在另一个Service Instance Infinispan缓存上的userId的数据?对?那么在那种情况下会发生什么?infinispan会不会照顾这些事情?如果是的话,那么我需要进行哪些配置设置以确保此功能正常.

如果我遗失任何东西,请原谅我的无知.任何明确的信息都会让我对上述两个问题更清楚.

tsy*_*ora 6

关于你的第二张图片,是的,架构将完全如此.

如果是,那么Infinispan缓存将如何相互影响?

请看这里:https: //docs.jboss.org/author/display/ISPN/Getting+Started+Guide#GettingStartedGuide-UsingInfinispanasanembeddeddatagridinJavaSE Infinispan将使用JGroups协议管理它并在节点之间发送消息.将形成集群并将节点集群化.之后,您可以体验特定节点上条目复制的预期行为.

在这里,我们转到您的下一个问题:

有可能在某个时候,我们将寻找那些将在另一个Service Instance Infinispan缓存上的userId的数据?对?那么在那种情况下会发生什么?infinispan会不会照顾这些事情?

Infinispan是针对这种情况开发的,因此您根本不需要担心它.如果您有4个节点并使用numberOfOwners = 2设置分发模式,则您的缓存数据将在每个时刻正好位于2个节点上.在NON所有者节点上发出GET命令时,将从所有者获取条目.

您还可以将群集模式设置为复制,其中所有节点都包含所有条目.请在此处阅读有关模式的更多信息:https://docs.jboss.org/author/display/ISPN/Clustering+modes并选择最适合您的用例.

此外,当您向群集添加新节点时,将发生StateTransfer并在群集中同步/重新平衡条目.NonBlockingStateTransfer已经实现,因此您的群集仍然能够在加入阶段提供响应.请参阅:https://community.jboss.org/wiki/Non-BlockingStateTransferV2 同样用于删除/崩溃群集中的节点.将有自动重新平衡过程,例如,根据分发模式中的numberOfOwners属性,一些条目(numOwners = 2)在仅在一个节点上实时崩溃之后将分别被复制到2个节点上.

总而言之,您的群集仍将是最新的,这与您要求特定条目的节点无关.如果它不包含它,将从所有者获取条目.

如果是的话,那么我需要进行哪些配置设置以确保此功能正常.

上述入门指南充满的例子,再加上你可以找到在Infinispan的分布一些配置文件的例子:ISPN的/ etc /配置样本/*

我建议你也看一下这个来源:http://refcardz.dzone.com/refcardz/getting-started-infinispan你可以找到更基本,更快速的配置示例.

此来源还为您的第一个问题提供决策相关信息:"我应该使用嵌入模式还是远程客户端 - 服务器模式?" 从我的角度来看,使用远程集群是更加企业化的解决方案(参见:http://howtojboss.com/2012/11/07/data-grid-why/).您的缓存层非常容易扩展,高可用性和容错性,并且与数据库层和应用程序层无关,因为它只是位于它们之间.

您可能也对此功能感兴趣:https://docs.jboss.org/author/display/ISPN/Cache+Loaders+and+Stores