搜索

3.4. 创建远程缓存

download PDF

当您在运行时创建远程缓存时,Data Grid 服务器会在集群中同步您的配置,以便所有节点都有副本。因此,您应该始终使用以下机制动态创建远程缓存:

  • Data Grid 控制台
  • Data Grid 命令行界面(CLI)
  • 热 Rod 或 HTTP 客户端

3.4.1. 默认缓存管理器

Data Grid Server 提供了一个默认的缓存管理器,用于控制远程缓存的生命周期。启动 Data Grid 服务器会自动实例化缓存管理器,以便您可以创建和删除远程缓存和其他资源,如 Protobuf 模式。

启动 Data Grid 服务器并添加用户凭证后,您可以查看缓存管理器的详情,并从 Data Grid 控制台获取集群信息。

  • 在任何浏览器中打开 127.0.0.1:11222

您还可以通过命令行界面(CLI)或 REST API 获取有关缓存管理器的信息:

CLI

在 default 容器中运行 describe 命令。

[//containers/default]> describe
REST
在任何浏览器中打开 127.0.0.1:11222/rest/v2/container/
默认缓存管理器配置

XML

<infinispan>
  <!-- Creates a Cache Manager named "default" and enables metrics. -->
  <cache-container name="default"
                   statistics="true">
     <!-- Adds cluster transport that uses the default JGroups TCP stack. -->
     <transport cluster="${infinispan.cluster.name:cluster}"
                stack="${infinispan.cluster.stack:tcp}"
                node-name="${infinispan.node.name:}"/>
     <!-- Requires user permission to access caches and perform operations. -->
     <security>
        <authorization/>
     </security>
  </cache-container>
</infinispan>

JSON

{
  "infinispan" : {
    "jgroups" : {
      "transport" : "org.infinispan.remoting.transport.jgroups.JGroupsTransport"
    },
    "cache-container" : {
      "name" : "default",
      "statistics" : "true",
      "transport" : {
        "cluster" : "cluster",
        "node-name" : "",
        "stack" : "tcp"
      },
      "security" : {
        "authorization" : {}
      }
    }
  }
}

YAML

infinispan:
  jgroups:
    transport: "org.infinispan.remoting.transport.jgroups.JGroupsTransport"
  cacheContainer:
    name: "default"
    statistics: "true"
    transport:
      cluster: "cluster"
      nodeName: ""
      stack: "tcp"
    security:
      authorization: ~

3.4.2. 使用 Data Grid 控制台创建缓存

使用 Data Grid 控制台从任何 Web 浏览器使用直观的可视化界面创建远程缓存。

先决条件

  • 创建具有 admin 权限的 Data Grid 用户。
  • 至少启动一个 Data Grid 服务器实例。
  • 具有 Data Grid 缓存配置。

流程

  1. 在任意浏览器中打开 127.0.0.1:11222/console/
  2. 选择 Create Cache 并按照步骤操作,作为 Data Grid Console 指南。

3.4.3. 使用 Data Grid CLI 创建远程缓存

使用 Data Grid 命令行界面(CLI)在 Data Grid Server 中添加远程缓存。

先决条件

  • 创建具有 admin 权限的 Data Grid 用户。
  • 至少启动一个 Data Grid 服务器实例。
  • 具有 Data Grid 缓存配置。

流程

  1. 启动 CLI。

    bin/cli.sh
  2. 运行 connect 命令,并在提示时输入您的用户名和密码。
  3. 使用 create cache 命令创建远程缓存。

    例如,从名为 mycache.xml 的文件创建一个名为 "mycache" 的缓存,如下所示:

    create cache --file=mycache.xml mycache

验证

  1. 使用 ls 命令列出所有远程缓存。

    ls caches
    mycache
  2. 使用 describe 命令查看缓存配置。

    describe caches/mycache

3.4.4. 从 Hot Rod 客户端创建远程缓存

使用 Data Grid Hot Rod API 从 Java、C++、.NET/C#、JS 客户端等在 Data Grid Server 上创建远程缓存。

此流程演示了如何使用 Hot Rod Java 客户端在首次访问时创建远程缓存。您可以在 Data Grid Tutorials 中找到其他 Hot Rod 客户端的代码示例。

先决条件

  • 创建具有 admin 权限的 Data Grid 用户。
  • 至少启动一个 Data Grid 服务器实例。
  • 具有 Data Grid 缓存配置。

流程

  • 调用 remoteCache () 方法,作为 ConfigurationBuilder 的一部分。
  • 在 classpath 上的 hotrod-client.properties 文件中设置 configurationconfiguration_uri 属性。

ConfigurationBuilder

File file = new File("path/to/infinispan.xml")
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.remoteCache("another-cache")
       .configuration("<distributed-cache name=\"another-cache\"/>");
builder.remoteCache("my.other.cache")
       .configurationURI(file.toURI());

hotrod-client.properties

infinispan.client.hotrod.cache.another-cache.configuration=<distributed-cache name=\"another-cache\"/>
infinispan.client.hotrod.cache.[my.other.cache].configuration_uri=file:///path/to/infinispan.xml

重要

如果远程缓存的名称包含 . 字符,则必须在使用 hotrod-client.properties 文件时将其放在方括号中。

3.4.5. 使用 REST API 创建远程缓存

使用 Data Grid REST API 从任何合适的 HTTP 客户端在 Data Grid Server 上创建远程缓存。

先决条件

  • 创建具有 admin 权限的 Data Grid 用户。
  • 至少启动一个 Data Grid 服务器实例。
  • 具有 Data Grid 缓存配置。

流程

  • 使用有效负载中的缓存配置调用 POST 请求到 /rest/v2/caches/<cache_name >。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.