搜索

24.3.3. 集群模式

download PDF

可以使用 Infinispan 以两种不同的方式在 JBoss EAP 中配置集群。应用程序的最佳方法将取决于您的要求。每种模式的可用性、一致性、可靠性和可扩展性之间有一个权衡。在选择群集模式之前,您必须确定网络最重要的功能,并平衡这些要求。

缓存模式
复制
复制模式会自动检测并添加新实例。对这些实例所做的更改将复制到群集上的所有节点。复制模式通常最适合在小型集群中工作,因为需要通过网络复制大量信息。Infinispan 可以配置为使用 UDP 多播,从而将网络流量拥塞减少到某种程度。
distribution

分发模式允许 Infinispan 线性扩展群集。分发模式使用一致的哈希算法来确定新节点的放置位置。要保留的信息的副本数或所有者是可配置的。在保留的副本数、数据的持久性和性能之间有一个权衡。所保留的副本越多,对性能的影响越高,但在服务器故障中丢失数据的可能性就越少。哈希算法也致力于通过查找不多播或存储元数据的条目来减少网络流量。

当集群大小超过 6-8 节点时,您应该考虑将分发模式视为缓存策略。使用分发模式时,数据仅分发到集群中的一个节点子集,而不是所有节点。

分散

分散模式类似于分发模式,因为它使用一致的哈希算法来确定所有权。但是,所有权仅限于两个成员,或原始器或接收给定会话请求的节点,始终假定所有权用于协调锁定和缓存条目更新。以分散模式使用的缓存写入算法确保写入操作仅产生单个 RPC 调用,其中具有两个所有者的分发缓存通常可以使用两个 RPC 调用。这对分布式 Web 会话非常有用,因为负载平衡器故障转移往往会将流量定向到非主要所有者,甚至备份节点。这可以在集群拓扑更改后减少争用并提高性能。

分散模式不支持事务或 L1 缓存。但是,它确实支持错误的读取,允许发起给定条目的缓存写入的节点继续在某些持续时间内为该条目执行读取服务,即使它不是根据一致的哈希的所有者。其效果类似于 L1 缓存,尽管冲突读取的配置属性和 L1 缓存的配置属性不同。

同步和异步复制

复制可以采用同步或异步模式执行,所选的模式则取决于您的要求和应用。

重要

从 JBoss EAP 7.1 开始,您必须始终使用同步(SYNC)缓存模式。SYNC 也是默认的缓存模式。使用异步(ASYNC)模式无效,从而导致锁定争用。如需有关会话复制和适当缓存模式的更多信息,请参阅如何为 EAP 配置和调优会话复制

同步复制
通过同步复制,复制过程在处理用户请求的同一线程中运行。会话复制在完成响应后开始,线程只有在复制完成后才会发布。同步复制对网络流量有影响,因为它需要来自集群中的每个节点的响应。但是,其优点是确保对集群中的所有节点都进行了所有修改。
异步复制
通过异步复制,Infinispan 使用线程池在后台进行复制。发送方不等待来自集群中其他节点的回复。但是,在上一个复制完成之前,同一会话的缓存读取将阻止,以便不读取陈旧数据。复制会根据时间或队列大小触发。失败的复制尝试写入日志,而不是实时通知。

24.3.3.1. 配置缓存模式

您可以使用管理 CLI 更改默认缓存。

注意

本节显示与配置 Web 会话缓存相关的说明,它默认为分发模式。可以轻松调整步骤和管理 CLI 命令,以应用到其他缓存容器。

进入 Replication Cache 模式

Web 会话缓存的默认 JBoss EAP 7 配置不包括 复制 缓存。必须先添加此缓存。

注意

以下管理 CLI 命令用于单机服务器。在受管域中运行时,您必须通过 /profile =infinispan 命令并使用 /profile= PROFILE_NAME 指定要更新的配置集。

  1. 添加 复制 缓存并将其设置为默认缓存。

    batch
    /subsystem=infinispan/cache-container=web/replicated-cache=repl:add(mode=ASYNC)
    /subsystem=infinispan/cache-container=web/replicated-cache=repl/component=transaction:add(mode=BATCH)
    /subsystem=infinispan/cache-container=web/replicated-cache=repl/component=locking:add(isolation=REPEATABLE_READ)
    /subsystem=infinispan/cache-container=web/replicated-cache=repl/store=file:add
    /subsystem=infinispan/cache-container=web:write-attribute(name=default-cache,value=repl)
    run-batch
  2. 重新加载服务器:

    reload
进入发布缓存模式

Web 会话缓存的默认 JBoss EAP 7 配置已包含 离散分发 缓存。

注意

以下管理 CLI 命令用于单机服务器。在受管域中运行时,您必须通过 /profile =infinispan 命令并使用 /profile= PROFILE_NAME 指定要更新的配置集。

  1. 将默认缓存更改为 dist 分发缓存。

    /subsystem=infinispan/cache-container=web:write-attribute(name=default-cache,value=dist)
  2. 设置分发缓存的所有者数量。以下命令设置 5 所有者:默认值为 2

    /subsystem=infinispan/cache-container=web/distributed-cache=dist:write-attribute(name=owners,value=5)
  3. 重新加载服务器:

    reload
进入 Scattered Cache 模式

Web 会话缓存的默认 JBoss EAP 配置不包括 分布式缓存。以下示例显示了管理 CLI 命令,以添加分散的缓存并将其设置为默认缓存。

注意

以下管理 CLI 命令适用于使用 HA 配置文件的单机服务器:在受管域中运行时,您必须通过 /profile =infinispan 命令并使用 /profile= PROFILE_NAME 指定要更新的配置集。

  1. 创建分散的缓存,读取寿命等于默认的 web 会话超时值 30 分钟。

    /subsystem=infinispan/cache-container=web/scattered-cache=scattered:add(bias-lifespan=1800000)
  2. 分散 设置为默认缓存。

    /subsystem=infinispan/cache-container=web:write-attribute(name=default-cache,value=scattered)

这将产生以下服务器配置:

<cache-container name="web" default-cache="scattered" module="org.wildfly.clustering.web.infinispan">
    ...
    <scattered-cache name="scattered" bias-lifespan="1800000"/>
    ...
</cache-container>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.