第 2 章 与 Data Grid REST API 交互


Data Grid REST API 允许您监控、维护和管理数据网格部署,并提供对数据的访问。

注意

默认情况下,当成功时,Data Grid REST API 操作会返回 200 (OK)。但是,当成功处理某些操作时,它们会返回 HTTP 状态代码,如 204202,而不是 200

2.1. 创建和管理缓存

创建和管理 Data Grid 缓存并对数据执行操作。

2.1.1. 创建缓存

在 Data Grid 集群中使用 POST 请求(在有效负载中包含 XML 或 JSON 配置)中创建命名缓存。

POST /rest/v2/caches/{cacheName}
Copy to Clipboard Toggle word wrap
Expand
表 2.1. Headers
标头必需/可选参数

Content-Type

必需

为 Data Grid 配置有效负载设置 MediaTypeapplication/xmlapplication/json

标记

可选

用于设置 AdminFlags

2.1.1.1. 缓存配置

您可以使用 XML、JSON 和 YAML 格式创建声明性缓存配置。

所有声明缓存都必须符合 Data Grid 模式。JSON 格式的配置必须遵循 XML 配置的结构,元素对应于字段和属性。

重要

Data Grid 将字符限制为最多 255 个缓存名称或缓存模板名称。如果您超过这个字符限制,Data Grid 会抛出异常。编写 succinct 缓存名称和缓存模板名称。

重要

文件系统可能会为文件名长度设置限制,因此请确保缓存的名称不超过这个限制。如果缓存名称超过文件系统的命名限制,则对该缓存的一般操作或初始操作可能会失败。写入 succinct 文件名。

分布式缓存

XML

<distributed-cache owners="2"
                   segments="256"
                   capacity-factor="1.0"
                   l1-lifespan="5000"
                   mode="SYNC"
                   statistics="true">
  <encoding media-type="application/x-protostream"/>
  <locking isolation="REPEATABLE_READ"/>
  <transaction mode="FULL_XA"
               locking="OPTIMISTIC"/>
  <expiration lifespan="5000"
              max-idle="1000" />
  <memory max-count="1000000"
          when-full="REMOVE"/>
  <indexing enabled="true"
            storage="local-heap">
    <index-reader refresh-interval="1000"/>
    <indexed-entities>
      <indexed-entity>org.infinispan.Person</indexed-entity>
    </indexed-entities>
  </indexing>
  <partition-handling when-split="ALLOW_READ_WRITES"
                      merge-policy="PREFERRED_NON_NULL"/>
  <persistence passivation="false">
    <!-- Persistent storage configuration. -->
  </persistence>
</distributed-cache>
Copy to Clipboard Toggle word wrap

JSON

{
  "distributed-cache": {
    "mode": "SYNC",
    "owners": "2",
    "segments": "256",
    "capacity-factor": "1.0",
    "l1-lifespan": "5000",
    "statistics": "true",
    "encoding": {
      "media-type": "application/x-protostream"
    },
    "locking": {
      "isolation": "REPEATABLE_READ"
    },
    "transaction": {
      "mode": "FULL_XA",
      "locking": "OPTIMISTIC"
    },
    "expiration" : {
      "lifespan" : "5000",
      "max-idle" : "1000"
    },
    "memory": {
      "max-count": "1000000",
      "when-full": "REMOVE"
    },
    "indexing" : {
          "enabled" : true,
          "storage" : "local-heap",
          "index-reader" : {
            "refresh-interval" : "1000"
          },
          "indexed-entities": [
            "org.infinispan.Person"
          ]
    },
    "partition-handling" : {
      "when-split" : "ALLOW_READ_WRITES",
      "merge-policy" : "PREFERRED_NON_NULL"
    },
    "persistence" : {
      "passivation" : false
    }
  }
}
Copy to Clipboard Toggle word wrap

YAML

distributedCache:
  mode: "SYNC"
  owners: "2"
  segments: "256"
  capacityFactor: "1.0"
  l1Lifespan: "5000"
  statistics: "true"
  encoding:
    mediaType: "application/x-protostream"
  locking:
    isolation: "REPEATABLE_READ"
  transaction:
    mode: "FULL_XA"
    locking: "OPTIMISTIC"
  expiration:
    lifespan: "5000"
    maxIdle: "1000"
  memory:
    maxCount: "1000000"
    whenFull: "REMOVE"
  indexing:
    enabled: "true"
    storage: "local-heap"
    indexReader:
      refreshInterval: "1000"
    indexedEntities:
      - "org.infinispan.Person"
  partitionHandling:
    whenSplit: "ALLOW_READ_WRITES"
    mergePolicy: "PREFERRED_NON_NULL"
  persistence:
    passivation: "false"
    # Persistent storage configuration.
Copy to Clipboard Toggle word wrap

复制的缓存

XML

<replicated-cache segments="256"
                  mode="SYNC"
                  statistics="true">
  <encoding media-type="application/x-protostream"/>
  <locking isolation="REPEATABLE_READ"/>
  <transaction mode="FULL_XA"
               locking="OPTIMISTIC"/>
  <expiration lifespan="5000"
              max-idle="1000" />
  <memory max-count="1000000"
          when-full="REMOVE"/>
  <indexing enabled="true"
            storage="local-heap">
    <index-reader refresh-interval="1000"/>
    <indexed-entities>
      <indexed-entity>org.infinispan.Person</indexed-entity>
    </indexed-entities>
  </indexing>
  <partition-handling when-split="ALLOW_READ_WRITES"
                      merge-policy="PREFERRED_NON_NULL"/>
  <persistence passivation="false">
    <!-- Persistent storage configuration. -->
  </persistence>
</replicated-cache>
Copy to Clipboard Toggle word wrap

JSON

{
  "replicated-cache": {
    "mode": "SYNC",
    "segments": "256",
    "statistics": "true",
    "encoding": {
      "media-type": "application/x-protostream"
    },
    "locking": {
      "isolation": "REPEATABLE_READ"
    },
    "transaction": {
      "mode": "FULL_XA",
      "locking": "OPTIMISTIC"
    },
    "expiration" : {
      "lifespan" : "5000",
      "max-idle" : "1000"
    },
    "memory": {
      "max-count": "1000000",
      "when-full": "REMOVE"
    },
    "indexing" : {
      "enabled" : true,
      "storage" : "local-heap",
      "index-reader" : {
        "refresh-interval" : "1000"
        },
      "indexed-entities": [
        "org.infinispan.Person"
      ]
    },
    "partition-handling" : {
      "when-split" : "ALLOW_READ_WRITES",
      "merge-policy" : "PREFERRED_NON_NULL"
    },
    "persistence" : {
      "passivation" : false
    }
  }
}
Copy to Clipboard Toggle word wrap

YAML

replicatedCache:
  mode: "SYNC"
  segments: "256"
  statistics: "true"
  encoding:
    mediaType: "application/x-protostream"
  locking:
    isolation: "REPEATABLE_READ"
  transaction:
    mode: "FULL_XA"
    locking: "OPTIMISTIC"
  expiration:
    lifespan: "5000"
    maxIdle: "1000"
  memory:
    maxCount: "1000000"
    whenFull: "REMOVE"
  indexing:
    enabled: "true"
    storage: "local-heap"
    indexReader:
      refreshInterval: "1000"
    indexedEntities:
      - "org.infinispan.Person"
  partitionHandling:
    whenSplit: "ALLOW_READ_WRITES"
    mergePolicy: "PREFERRED_NON_NULL"
  persistence:
    passivation: "false"
    # Persistent storage configuration.
Copy to Clipboard Toggle word wrap

多个缓存

XML

<infinispan
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:infinispan:config:15.0 https://infinispan.org/schemas/infinispan-config-15.0.xsd
                          urn:infinispan:server:15.0 https://infinispan.org/schemas/infinispan-server-15.0.xsd"
      xmlns="urn:infinispan:config:15.0"
      xmlns:server="urn:infinispan:server:15.0">
  <cache-container name="default"
                   statistics="true">
    <distributed-cache name="mycacheone"
                       mode="ASYNC"
                       statistics="true">
      <encoding media-type="application/x-protostream"/>
      <expiration lifespan="300000"/>
      <memory max-size="400MB"
              when-full="REMOVE"/>
    </distributed-cache>
    <distributed-cache name="mycachetwo"
                       mode="SYNC"
                       statistics="true">
      <encoding media-type="application/x-protostream"/>
      <expiration lifespan="300000"/>
      <memory max-size="400MB"
              when-full="REMOVE"/>
    </distributed-cache>
  </cache-container>
</infinispan>
Copy to Clipboard Toggle word wrap

JSON

{
  "infinispan" : {
    "cache-container" : {
      "name" : "default",
      "statistics" : "true",
      "caches" : {
        "mycacheone" : {
          "distributed-cache" : {
            "mode": "ASYNC",
            "statistics": "true",
            "encoding": {
              "media-type": "application/x-protostream"
            },
            "expiration" : {
              "lifespan" : "300000"
            },
            "memory": {
              "max-size": "400MB",
              "when-full": "REMOVE"
            }
          }
        },
        "mycachetwo" : {
          "distributed-cache" : {
            "mode": "SYNC",
            "statistics": "true",
            "encoding": {
              "media-type": "application/x-protostream"
            },
            "expiration" : {
              "lifespan" : "300000"
            },
            "memory": {
              "max-size": "400MB",
              "when-full": "REMOVE"
            }
          }
        }
      }
    }
  }
}
Copy to Clipboard Toggle word wrap

YAML

infinispan:
  cacheContainer:
    name: "default"
    statistics: "true"
    caches:
      mycacheone:
       distributedCache:
          mode: "ASYNC"
          statistics: "true"
          encoding:
            mediaType: "application/x-protostream"
          expiration:
            lifespan: "300000"
          memory:
            maxSize: "400MB"
            whenFull: "REMOVE"
      mycachetwo:
        distributedCache:
          mode: "SYNC"
          statistics: "true"
          encoding:
            mediaType: "application/x-protostream"
          expiration:
            lifespan: "300000"
          memory:
            maxSize: "400MB"
            whenFull: "REMOVE"
Copy to Clipboard Toggle word wrap

2.1.2. 修改缓存

使用在有效负载中包含 XML 或 JSON 配置的 PUT 请求,在 Data Grid 集群中更改缓存配置中的属性。

注意

只有在更改与现有配置兼容时,才能修改缓存。

例如,您无法使用复制的缓存配置来修改分布式缓存。同样,如果您使用特定属性创建缓存配置,您无法修改配置来改用不同的属性。例如,尝试通过为 max-count 属性指定值来修改缓存配置,如果已设置了 max-size,则会导致无效的配置。

PUT /rest/v2/caches/{cacheName}
Copy to Clipboard Toggle word wrap
Expand
表 2.2. Headers
标头必需/可选参数

Content-Type

必需

为 Data Grid 配置有效负载设置 MediaTypeapplication/xmlapplication/json

标记

可选

用于设置 AdminFlags

2.1.3. 验证缓存

检查带有 HEAD 请求的 Data Grid 集群中是否存在缓存。

HEAD /rest/v2/caches/{cacheName}
Copy to Clipboard Toggle word wrap

通过 GET 请求检索缓存运行状况。

GET /rest/v2/caches/{cacheName}?action=health
Copy to Clipboard Toggle word wrap

2.1.4. 使用模板创建缓存

使用 POST 请求和 ?template= 参数从 Data Grid 模板创建缓存。

POST /rest/v2/caches/{cacheName}?template={templateName}
Copy to Clipboard Toggle word wrap
提示

请参阅 列出可用缓存模板。

2.1.5. 检索缓存配置

使用 GET 请求检索 Data Grid 缓存配置。

GET /rest/v2/caches/{name}?action=config
Copy to Clipboard Toggle word wrap
Expand
表 2.3. Headers
标头必需/可选参数

accept

可选

设置返回内容所需的格式。支持的格式有 application/xmlapplication/json。默认为 application/json。如需更多信息,请参阅 Accept

2.1.6. 在 XML、JSON 和 YAML 之间转换缓存配置

调用带有有效配置和 ?action=convert 参数的 POST 请求。在 Accept 标头指定的类型中,Data Grid 以等效的配置表示。

POST /rest/v2/caches?action=convert
Copy to Clipboard Toggle word wrap

要转换缓存配置,您必须使用 Content-Type 标头和所需的输出格式,使用 Accept 标头指定配置的输入格式。例如,以下命令将复制的缓存配置从 XML 转换为 YAML:

curl localhost:11222/rest/v2/caches?action=convert \
--digest -u username:password \
-X POST -H "Accept: application/yaml" -H "Content-Type: application/xml" \
-d '<replicated-cache mode="SYNC" statistics="false"><encoding media-type="application/x-protostream"/><expiration lifespan="300000" /><memory max-size="400MB" when-full="REMOVE"/></replicated-cache>'
Copy to Clipboard Toggle word wrap

2.1.7. 比较缓存配置

使用包含两个缓存配置和 ?action=compare 参数的 多部分数据 正文调用 POST 请求。

POST /rest/v2/caches?action=compare
Copy to Clipboard Toggle word wrap
提示

添加 ignoreMutable=true 参数,以忽略比较中的可变属性。

如果配置相等,则数据网格使用 204 (No Content) 响应,如果配置相同,则它们会被 409 (Conflict )。

2.1.8. 检索所有缓存详情

调用 GET 请求,以检索 Data Grid 缓存的所有详细信息。

GET /rest/v2/caches/{name}?action=stats
Copy to Clipboard Toggle word wrap

Data Grid 提供 JSON 响应,如下所示:

 {
  "stats": {
    "time_since_start": -1,
    "time_since_reset": -1,
    "hits": -1,
    "current_number_of_entries": -1,
    "current_number_of_entries_in_memory": -1,
    "stores": -1,
    "off_heap_memory_used": -1,
    "data_memory_used": -1,
    "retrievals": -1,
    "misses": -1,
    "remove_hits": -1,
    "remove_misses": -1,
    "evictions": -1,
    "average_read_time": -1,
    "average_read_time_nanos": -1,
    "average_write_time": -1,
    "average_write_time_nanos": -1,
    "average_remove_time": -1,
    "average_remove_time_nanos": -1,
    "required_minimum_number_of_nodes": -1
  },
  "size": 0,
  "configuration": {
    "distributed-cache": {
      "mode": "SYNC",
      "transaction": {
        "stop-timeout": 0,
        "mode": "NONE"
      }
    }
  },
  "rehash_in_progress": false,
  "rebalancing_enabled": true,
  "bounded": false,
  "indexed": false,
  "persistent": false,
  "transactional": false,
  "secured": false,
  "has_remote_backup": false,
  "indexing_in_progress": false,
  "statistics": false,
  "mode" : "DIST_SYNC",
  "storage_type": "HEAP",
  "max_size": "",
  "max_size_bytes" : -1
}
Copy to Clipboard Toggle word wrap
  • 统计 缓存的当前统计信息。
  • 调整缓存的预期大小。
  • 配置 缓存配置。
  • 当重新哈希正在进行时,rehash_in_progress true。
  • 索引进行时,indexing_in_progress true。
  • 如果启用了重新平衡,则 rebalancing_enabled 为 true。获取此属性可能在服务器上失败。在这种情况下,属性不会存在于有效负载中。
  • 启用过期时间时 绑定
  • 如果缓存被索引,则 索引为 true。
  • 如果缓存被保留,则持久性 为 true。
  • 如果缓存是 事务性,则事务性为 true。
  • 如果缓存 被保护,则安全为 true。
  • 如果缓存有远程备份,则 has_remote_backup true。
  • key_storage 缓存密钥的介质类型。
  • value_storage 缓存值的介质类型。
注意

key_storagevalue_storage 与缓存的编码配置匹配。对于没有编码的服务器缓存,当缓存被索引且 应用程序/ 未知时,Data Grid 会假定应用程序/ x-protostream

2.1.9. 重置所有缓存统计信息

调用 POST 请求,以重置 Data Grid 缓存的所有统计信息。

POST /rest/v2/caches/{name}?action=stats-reset
Copy to Clipboard Toggle word wrap

2.1.10. 检索缓存的数据分发

调用 GET 请求,以检索 Data Grid 缓存的数据分布的所有详细信息。

GET /rest/v2/caches/{name}?action=distribution
Copy to Clipboard Toggle word wrap

Data Grid 提供 JSON 响应,如下所示:

[
  {
    "node_name": "NodeA",
    "node_addresses": [
      "127.0.0.1:44175"
    ],
    "memory_entries": 0,
    "total_entries": 0,
    "memory_used": 528512
  },
  {
    "node_name":"NodeB",
    "node_addresses": [
      "127.0.0.1:44187"
    ],
    "memory_entries": 0,
    "total_entries": 0,
    "memory_used": 528512
  }
]
Copy to Clipboard Toggle word wrap

列表中的每个元素代表节点。这些属性是:

  • node_name 是节点名称
  • node_addresses 是所有节点的物理地址的列表。
  • memory_entries 节点在属于缓存的内存中保存的条目数。
  • total_entries 节点内存和属于缓存的磁盘的条目数。
  • memory_used 数值以字节为单位,驱除算法估计缓存占用情况。如果没有启用驱除,则返回 -1。

2.1.11. 检索所有可变缓存配置属性

调用 GET 请求,以检索 Data Grid 缓存的所有可变缓存配置属性。

GET /rest/v2/caches/{name}?action=get-mutable-attributes
Copy to Clipboard Toggle word wrap

Data Grid 提供 JSON 响应,如下所示:

[
  "jmx-statistics.statistics",
  "locking.acquire-timeout",
  "transaction.single-phase-auto-commit",
  "expiration.max-idle",
  "transaction.stop-timeout",
  "clustering.remote-timeout",
  "expiration.lifespan",
  "expiration.interval",
  "memory.max-count",
  "memory.max-size"
]
Copy to Clipboard Toggle word wrap

添加 full 参数以获取值和类型信息:

GET /rest/v2/caches/mycache?action=get-mutable-attributes&full=true
Copy to Clipboard Toggle word wrap

Data Grid 提供 JSON 响应,如下所示:

{
  "jmx-statistics.statistics": {
    "value": true,
    "type": "boolean"
  },
  "locking.acquire-timeout": {
    "value": 15000,
    "type": "long"
  },
  "transaction.single-phase-auto-commit": {
    "value": false,
    "type": "boolean"
  },
  "expiration.max-idle": {
    "value": -1,
    "type": "long"
  },
  "transaction.stop-timeout": {
    "value": 30000,
    "type": "long"
  },
  "clustering.remote-timeout": {
    "value": 17500,
    "type": "long"
  },
  "expiration.lifespan": {
    "value": -1,
    "type": "long"
  },
  "expiration.interval": {
    "value": 60000,
    "type": "long"
  },
  "memory.max-count": {
    "value": -1,
    "type": "long"
  },
  "memory.max-size": {
    "value": null,
    "type": "string"
  }
}
Copy to Clipboard Toggle word wrap

对于 type enum 的属性,额外的 universe 属性将包含一组可能的值。

2.1.12. 更新缓存配置属性

调用 POST 请求,以更改可变缓存配置属性。

POST /rest/v2/caches/{name}?action=set-mutable-attributes&attribute-name={attributeName}&attribute-value={attributeValue}
Copy to Clipboard Toggle word wrap

2.1.13. 添加条目

使用 POST 请求向缓存添加条目。

POST /rest/v2/caches/{cacheName}/{cacheKey}
Copy to Clipboard Toggle word wrap

前面的请求使用 cacheKey 密钥将有效负载或请求正文放在 cacheName 缓存中。请求替换任何已存在的数据,并在应用时更新 Time-To-LiveLast-Modified 值。

如果成功创建了该条目,服务会返回 204 (非内容)。

如果指定键已存在值,POST 请求会返回 409 (Conflict),且不会修改值。若要更新值,您应该使用 PUT 请求。请参阅 替换条目

Expand
表 2.4. Headers
标头必需/可选参数

Key-Content-Type

可选

设置请求中密钥的内容类型。如需更多信息,请参阅 Key-Content-Type

Content-Type

可选

为键设置 MediaType

timeToLiveSeconds

可选

设置条目自动删除前的秒数。如果没有设置此参数,Data Grid 将使用配置中的默认值。如果您设置了负值,则该条目永远不会被删除。

maxIdleTimeSeconds

可选

设置条目可以闲置的秒数。如果在最大闲置时间过后没有对条目发生读取或写入操作,该条目将会被自动删除。如果没有设置此参数,Data Grid 将使用配置中的默认值。如果您设置了负值,则该条目永远不会被删除。

标记

可选

用于添加条目的标志。如需更多信息,请参阅 标记

注意

标志 标头还适用于涉及缓存数据操作的所有其他操作,

注意

如果 timeToLiveSecondsmaxIdleTimeSeconds 的值为 0,Data Grid 则使用来自配置的默认 lifespanmaxIdle 值。

如果 只有 maxIdleTimeSeconds 的值为 0, Data Grid 使用:

  • 配置中的默认 maxIdle 值。
  • 如果未传递值,则 timeToLiveSeconds 的值作为请求参数传递,或值为 -1

如果 只有 timeToLiveSeconds 的值为 0, Data Grid 使用:

  • 配置中的 默认 lifespan 值。
  • 如果没有传递值,则 maxIdle 的值作为请求参数传递,或值为 -1

2.1.14. 替换条目

使用 PUT 请求替换缓存中的条目。

PUT /rest/v2/caches/{cacheName}/{cacheKey}
Copy to Clipboard Toggle word wrap

如果指定键已存在值,PUT 请求会更新值。如果您不想修改现有值,请使用返回 409 (Conflict)POST 请求,而不是修改值。请参阅 添加值

2.1.15. 按键检索数据

使用 GET 请求检索特定密钥的数据。

GET /rest/v2/caches/{cacheName}/{cacheKey}
Copy to Clipboard Toggle word wrap

服务器在响应正文中的给定密钥 cacheKey 下返回来自给定 cacheName 的数据。响应包含与 MediaType 协商对应的 Content-Type 标头。

注意

浏览器也可以直接访问缓存,如内容交付网络(CDN)。Data Grid 为每个条目返回一个唯一的 ETag,以及 Last-ModifiedExpires 标头字段。

这些字段提供有关请求中返回的数据状态的信息。eTags 允许浏览器和其他客户端仅请求已更改的数据,从而节省带宽。

Expand
表 2.5. Headers
标头必需/可选参数

Key-Content-Type

可选

设置请求中密钥的内容类型。默认为 application/x-java-object; type=java.lang.String。如需更多信息,请参阅 Key-Content-Type

accept

可选

设置返回内容所需的格式。如需更多信息,请参阅 Accept

提示

在查询字符串中附加 extended 参数以获取附加信息:

GET /rest/v2/caches/{cacheName}/{cacheKey}?extended
Copy to Clipboard Toggle word wrap

前面的请求返回自定义标头:

  • cluster-Primary-Owner 返回键的主所有者的节点名称。
  • cluster-Node-Name 返回处理请求的服务器的 JGroups 节点名称。
  • cluster-Physical-Address 返回处理请求的服务器的物理 JGroups 地址。

2.1.16. 检查 Entries Exist

验证特定的条目是否存在 HEAD 请求。

HEAD /rest/v2/caches/{cacheName}/{cacheKey}
Copy to Clipboard Toggle word wrap

前面的请求仅返回与条目存储的标头字段和相同内容。例如,如果您存储了 String,请求会返回一个 String。如果您存储了二进制、base64 编码的、Blob 或序列化 Java 对象,则 Data Grid 不会对请求中的内容进行序列化。

注意

HEAD 请求也支持 扩展 参数。

Expand
表 2.6. Headers
标头必需/可选参数

Key-Content-Type

可选

设置请求中密钥的内容类型。默认为 application/x-java-object; type=java.lang.String。如需更多信息,请参阅 Key-Content-Type

2.1.17. 删除条目

使用 DELETE 请求从缓存中删除条目。

DELETE /rest/v2/caches/{cacheName}/{cacheKey}
Copy to Clipboard Toggle word wrap
Expand
表 2.7. Headers
标头必需/可选参数

Key-Content-Type

可选

设置请求中密钥的内容类型。默认为 application/x-java-object; type=java.lang.String。如需更多信息,请参阅 Key-Content-Type

2.1.18. 检查缓存条目的发布

调用此端点,以检索 Data Grid 缓存条目的数据分布详情。

GET /rest/v2/caches/{cacheName}/{cacheKey}?action=distribution
Copy to Clipboard Toggle word wrap

Data Grid 提供 JSON 响应,如下所示:

{
  "contains_key": true,
  "owners": [
    {
      "node_name": "NodeA",
      "primary": true,
      "node_addresses": [
        "127.0.0.1:39492"
      ]
    },
    {
      "node_name": "NodeB",
      "primary": false,
      "node_addresses": [
        "127.0.0.1:38195"
      ]
    }
  ]
}
Copy to Clipboard Toggle word wrap
  • 如果缓存包含密钥,则 contains_key 会返回 true
  • owners 提供包含密钥的节点列表

owners 列表包括以下属性:

  • node_name 显示节点的名称
  • primary 标识是主所有者的节点
  • node_addresses 显示可以访问该节点的 IP 地址和端口

2.1.19. 删除缓存

使用 DELETE 请求从 Data Grid 集群中删除缓存。

DELETE /rest/v2/caches/{cacheName}
Copy to Clipboard Toggle word wrap

2.1.20. 从缓存检索所有密钥

调用 GET 请求,以 JSON 格式检索缓存中的所有密钥。

GET /rest/v2/caches/{cacheName}?action=keys
Copy to Clipboard Toggle word wrap
Expand
表 2.8. 请求参数
参数必需/可选value

limit

可选

指定使用 InputStream 检索的最大键数。负值检索所有键。默认值为 -1

batch

可选

在检索密钥时指定内部批处理大小。默认值为 1000

2.1.21. 从缓存检索所有条目

调用 GET 请求,以 JSON 格式检索缓存中的所有条目。

GET /rest/v2/caches/{cacheName}?action=entries
Copy to Clipboard Toggle word wrap
Expand
表 2.9. 请求参数
参数必需/可选value

metadata

可选

在响应中包含每个条目的元数据。默认值为 false

limit

可选

指定响应中包含的最大键数。负值检索所有键。默认值为 -1

batch

可选

在检索密钥时指定内部批处理大小。默认值为 1000

content-negotiation

可选

如果为 true,则将键和值转换为可读的格式。对于使用文本编码的缓存(如 text/plain、xml、json),服务器以纯文本形式返回键和值。对于带有二进制编码的缓存,如果支持转换,服务器会将条目返回为 JSON,否则以文本十六进制格式返回,如 0xA123CF98。当使用 content-negotiation 时,响应将包含两个标头: key-content-typevalue-content-type 来描述协商的格式。

Data Grid 提供 JSON 响应,如下所示:

[
    {
        "key": 1,
        "value": "value1",
        "timeToLiveSeconds": -1,
        "maxIdleTimeSeconds": -1,
        "created": -1,
        "lastUsed": -1,
        "expireTime": -1
    },
    {
        "key": 2,
        "value": "value2",
        "timeToLiveSeconds": 10,
        "maxIdleTimeSeconds": 45,
        "created": 1607966017944,
        "lastUsed": 1607966017944,
        "expireTime": 1607966027944,
        "version": 7
    },
    {
        "key": 3,
        "value": "value2",
        "timeToLiveSeconds": 10,
        "maxIdleTimeSeconds": 45,
        "created": 1607966017944,
        "lastUsed": 1607966017944,
        "expireTime": 1607966027944,
        "version": 7,
        "topologyId": 9
    }
]
Copy to Clipboard Toggle word wrap
  • 条目的密钥。
  • :条目的值。
  • timeToLiveSeconds 基于条目生命周期,但以秒为单位,如果条目永不过期,则为 -1。除非设置了 metadata="true",否则不会返回。
  • maxIdleTimeSeconds 最大空闲时间(以秒为单位)或 -1 ( 如果条目永不过期)。除非设置了 metadata="true",否则不会返回。
  • 为 immortal 条目创建的时间,或为 -1 创建条目。除非设置了 metadata="true",否则不会返回。
  • lastUsed Last time when a operation on the entry or -1 for immortal 条目。除非设置了 metadata="true",否则不会返回。
  • 当条目过期或 -1 用于 immortal 条目时的 expireTime 时间。除非设置了 metadata="true",否则不会返回。
  • Version 与缓存条目相关的元数据版本。只有在存在值时才。
  • topologyId 一个集群版本元数据的拓扑 Id。只有在存在值时才。

2.1.22. 清除缓存

要从缓存中删除所有数据,请使用 ?action=clear 参数调用 POST 请求。

POST /rest/v2/caches/{cacheName}?action=clear
Copy to Clipboard Toggle word wrap

如果操作成功完成,服务会返回 204 (不内容)

2.1.23. 获取缓存大小

使用 GET 请求和 ?action=size 参数在整个集群中检索缓存的大小。

GET /rest/v2/caches/{cacheName}?action=size
Copy to Clipboard Toggle word wrap

2.1.24. 获取缓存统计信息

获取使用 GET 请求的缓存的运行时统计信息。

GET /rest/v2/caches/{cacheName}?action=stats
Copy to Clipboard Toggle word wrap

2.1.25. 列出缓存

使用 GET 请求列出 Data Grid 集群中的所有可用缓存。

GET /rest/v2/caches/
Copy to Clipboard Toggle word wrap

2.1.26. 获取缓存状态和信息

检索缓存管理器的所有可用缓存的列表,以及缓存状态和详细信息,以及 GET 请求。

GET /rest/v2/caches?action=detailed
Copy to Clipboard Toggle word wrap

Data Grid 响应列出并描述每个可用缓存的 JSON 数组,如下例所示:

[ {
  "status" : "RUNNING",
  "name" : "cache1",
  "type" : "local-cache",
  "simple_cache" : false,
  "transactional" : false,
  "persistent" : false,
  "bounded": false,
  "secured": false,
  "indexed": true,
  "has_remote_backup": true,
  "health":"HEALTHY",
  "rebalancing_enabled": true
}, {
  "status" : "RUNNING",
  "name" : "cache2",
  "type" : "distributed-cache",
  "simple_cache" : false,
  "transactional" : true,
  "persistent" : false,
  "bounded": false,
  "secured": false,
  "indexed": true,
  "has_remote_backup": true,
  "health":"HEALTHY",
  "rebalancing_enabled": false
}]
Copy to Clipboard Toggle word wrap
Expand
表 2.10. 请求参数
参数必需/可选描述

pretty

可选

如果为 true 返回格式化内容,包括额外的空间和行分隔符,以提高可读性,但会增加有效负载大小。默认值为 false

2.1.27. 列出角色的可访问缓存

启用安全性后,检索角色的所有可访问缓存的列表。此操作需要 ADMIN 权限。

GET /rest/v2/caches?action=role-accessible&role=observer
Copy to Clipboard Toggle word wrap

data Grid 使用 JSON 响应,如下例所示:

{
  "secured" : ["securedCache1", "securedCache2"],
  "non-secured" : ["cache1", "cache2", "cache3"]
}
Copy to Clipboard Toggle word wrap
Expand
表 2.11. 请求参数
参数必需/可选描述

pretty

可选

如果为 true 返回格式化内容,包括额外的空间和行分隔符,以提高可读性,但会增加有效负载大小。默认值为 false

2.1.28. 侦听缓存事件

使用 服务器事件接收缓存事件事件值 将是 cache-entry-created,cache-entry-removed,cache-entry-updated,cache-entry-expired 之一。data 值将包含触发事件(以 Accept 标头设置的格式)的键。

GET /rest/v2/caches/{name}?action=listen
Copy to Clipboard Toggle word wrap
Expand
表 2.12. Headers
标头必需/可选参数

accept

可选

设置返回内容所需的格式。支持的格式为 text/plainapplication/json。默认为 application/json。如需更多信息,请参阅 Accept

2.1.29. 启用重新平衡

打开特定缓存的自动重新平衡。

POST /rest/v2/caches/{cacheName}?action=enable-rebalancing
Copy to Clipboard Toggle word wrap

2.1.30. 禁用重新平衡

关闭特定缓存的自动重新平衡。

POST /rest/v2/caches/{cacheName}?action=disable-rebalancing
Copy to Clipboard Toggle word wrap

2.1.31. 获取缓存可用性

检索缓存的可用性。

GET /rest/v2/caches/{cacheName}?action=get-availability
Copy to Clipboard Toggle word wrap
注意

您可以获取内部缓存的可用性,但可能会在未来的 Data Grid 版本中有所变化。

2.1.32. 设置缓存可用性

在使用 DENY_READ_WRITES 或 ALLOW_READS 分区处理策略时,更改集群缓存的可用性。

POST /rest/v2/caches/{cacheName}?action=set-availability&availability={AVAILABILITY}
Copy to Clipboard Toggle word wrap
Expand
表 2.13. 请求参数
参数必需/可选value

可用性

必需

AVAILABLE 或 DEGRADED_MODE

  • AVAILABLE 使缓存对网络分区中的所有节点可用。
  • DEGRADED_MODE 可防止在网络分区发生时对缓存进行读写操作。
注意

您可以设置内部缓存的可用性,但可能会在未来的 Data Grid 版本中有所变化。

2.1.33. 设置 Stable Topology

默认情况下,在集群关闭后,Data Grid 会等待所有节点加入集群并恢复拓扑。但是,您可以使用 REST 操作将当前集群拓扑定义为特定缓存的稳定。

POST /rest/v2/caches/{cacheName}?action=initialize&force={FORCE}
Copy to Clipboard Toggle word wrap
Expand
表 2.14. 请求参数
参数必需/可选value

force

可选

true 或 false。

  • 当当前拓扑中缺失的节点数量大于或等于拥有者的数量时,需要 force
重要

手动安装拓扑可能会导致数据丢失,只有在无法重新创建初始拓扑时才执行此操作。

2.1.34. 使用 REST API 进行索引和查询

使用来自任何 HTTP 客户端的 GET 请求和 ?action=search&query 参数查询远程缓存。

GET /rest/v2/caches/{cacheName}?action=search&query={ickle query}
Copy to Clipboard Toggle word wrap

Data Grid 响应

{
  "hit_count" : 150,
  "hit_count_exact" : true,
  "hits" : [ {
    "hit" : {
      "name" : "user1",
      "age" : 35
    }
  }, {
    "hit" : {
       "name" : "user2",
       "age" : 42
    }
  }, {
    "hit" : {
       "name" : "user3",
       "age" : 12
    }
  } ]
}
Copy to Clipboard Toggle word wrap

  • hit_count 显示查询的结果总数。
  • hit_count_exacttrue,这意味着 hit_count 是准确的。为 false 时,这意味着点击数值为较低的绑定。
  • hits 代表来自查询的单个匹配的数组。
  • hit 指的是与查询中匹配项对应的每个对象。

    提示

    如果使用 Select 子句,则 hits 可以包含所有字段或字段子集。

Expand
表 2.15. 请求参数
参数必需/可选value

query

必需

指定查询字符串。

offset

可选

指定要返回的第一个结果的索引。默认值为 0

max_results

可选

设置要返回的结果数。默认值为 10

hit_count_accuracy

可选

将索引查询的点击数所需的准确性限制为上限。默认值为 10_000。您可以通过设置 query.hit-count-accuracy 缓存属性来更改默认限制。

local

可选

true 时,查询仅限于处理请求的节点中存在的数据。默认值为 false

要使用请求的正文而不是指定查询参数,请按如下所示调用 POST 请求:

POST /rest/v2/caches/{cacheName}?action=search
Copy to Clipboard Toggle word wrap

在请求正文中查询

{
 "query":"from Entity where name:\"user1\"",
 "max_results":20,
 "offset":10
}
Copy to Clipboard Toggle word wrap

2.1.34.1. 重建索引

当您删除字段或更改索引字段定义时,您必须重建索引以确保索引与缓存中的数据一致。

注意

使用 REST、CLI、Data Grid 控制台或远程客户端重建 Protobuf 模式可能会导致不一致。远程客户端可能具有不同的 Protostream 实体版本,这可能会导致不可靠的行为。

使用 POST 请求和 ?action=reindex 参数在缓存中重新索引所有数据。

POST /rest/v2/caches/{cacheName}/search/indexes?action=reindex
Copy to Clipboard Toggle word wrap
Expand
表 2.16. 请求参数
参数必需/可选value

模式

可选

mode 参数的值如下:

* sync 仅在重新索引操作完成后返回 204 (非内容 )。

* async 立即返回 204 (No Content),重新索引操作将继续在集群中运行。您可以使用 Index Statistics REST 调用来检查状态。

local

可选

true 时,只有来自处理请求的节点的数据才会重新索引。默认值为 false,表示集群范围的所有数据都被重新索引。

2.1.34.2. 更新索引模式

更新索引模式操作可让您以最少的停机时间添加模式更改。Data Grid 不移除之前索引的数据并重新创建索引模式,而是为现有的架构添加新字段。

使用 POST 请求和 ?action=updateSchema 参数,更新您缓存中的值的索引模式。

POST /rest/v2/caches/{cacheName}/search/indexes?action=updateSchema
Copy to Clipboard Toggle word wrap

2.1.34.3. 清除索引

使用 POST 请求和 ?action=clear 参数从缓存中删除所有索引。

POST /rest/v2/caches/{cacheName}/search/indexes?action=clear
Copy to Clipboard Toggle word wrap

如果操作成功完成,服务会返回 204 (不内容)

2.1.34.4. get Indexes Metamodel

介绍此缓存中定义的所有索引的完整索引模式 metamodel。

GET /rest/v2/caches/{cacheName}/search/indexes/metamodel
Copy to Clipboard Toggle word wrap

Data Grid 响应

[{
    "entity-name": "org.infinispan.query.test.Book",
    "java-class": "org.infinispan.query.test.Book",
    "index-name": "org.infinispan.query.test.Book",
    "value-fields": {
        "description": {
            "multi-valued": false,
            "multi-valued-in-root": false,
            "type": "java.lang.String",
            "projection-type": "java.lang.String",
            "argument-type": "java.lang.String",
            "searchable": true,
            "sortable": false,
            "projectable": false,
            "aggregable": false,
            "analyzer": "standard"
        },
        "name": {
            "multi-valued": false,
            "multi-valued-in-root": true,
            "type": "java.lang.String",
            "projection-type": "java.lang.String",
            "argument-type": "java.lang.String",
            "searchable": true,
            "sortable": false,
            "projectable": false,
            "aggregable": false,
            "analyzer": "standard"
        },
        "surname": {
            "multi-valued": false,
            "multi-valued-in-root": true,
            "type": "java.lang.String",
            "projection-type": "java.lang.String",
            "argument-type": "java.lang.String",
            "searchable": true,
            "sortable": false,
            "projectable": false,
            "aggregable": false
        },
        "title": {
            "multi-valued": false,
            "multi-valued-in-root": false,
            "type": "java.lang.String",
            "projection-type": "java.lang.String",
            "argument-type": "java.lang.String",
            "searchable": true,
            "sortable": false,
            "projectable": false,
            "aggregable": false
        }
    },
    "object-fields": {
        "authors": {
            "multi-valued": true,
            "multi-valued-in-root": true,
            "nested": true,
            "value-fields": {
                "name": {
                    "multi-valued": false,
                    "multi-valued-in-root": true,
                    "type": "java.lang.String",
                    "projection-type": "java.lang.String",
                    "argument-type": "java.lang.String",
                    "searchable": true,
                    "sortable": false,
                    "projectable": false,
                    "aggregable": false,
                    "analyzer": "standard"
                },
                "surname": {
                    "multi-valued": false,
                    "multi-valued-in-root": true,
                    "type": "java.lang.String",
                    "projection-type": "java.lang.String",
                    "argument-type": "java.lang.String",
                    "searchable": true,
                    "sortable": false,
                    "projectable": false,
                    "aggregable": false
                }
            }
        }
    }
}, {
    "entity-name": "org.infinispan.query.test.Author",
    "java-class": "org.infinispan.query.test.Author",
    "index-name": "org.infinispan.query.test.Author",
    "value-fields": {
        "surname": {
            "multi-valued": false,
            "multi-valued-in-root": false,
            "type": "java.lang.String",
            "projection-type": "java.lang.String",
            "argument-type": "java.lang.String",
            "searchable": true,
            "sortable": false,
            "projectable": false,
            "aggregable": false
        },
        "name": {
            "multi-valued": false,
            "multi-valued-in-root": false,
            "type": "java.lang.String",
            "projection-type": "java.lang.String",
            "argument-type": "java.lang.String",
            "searchable": true,
            "sortable": false,
            "projectable": false,
            "aggregable": false,
            "analyzer": "standard"
        }
    }
}]
Copy to Clipboard Toggle word wrap

2.1.34.5. 检索查询和索引统计

使用 GET 请求获取缓存中查询和索引的信息。

注意

您必须在缓存配置中启用统计信息,或者结果为空。

GET /rest/v2/caches/{cacheName}/search/stats
Copy to Clipboard Toggle word wrap
Expand
表 2.17. 请求参数
参数必需/可选value

scope

可选

使用 cluster 检索群集的所有成员的整合统计数据。如果省略,Data Grid 会返回本地查询和索引的统计信息。

Data Grid 响应

{
  "query": {
    "indexed_local": {
      "count": 1,
      "average": 12344.2,
      "max": 122324,
      "slowest": "FROM Entity WHERE field > 4"
    },
    "indexed_distributed": {
      "count": 0,
      "average": 0.0,
      "max": -1,
      "slowest": "FROM Entity WHERE field > 4"
    },
    "hybrid": {
      "count": 0,
      "average": 0.0,
      "max": -1,
      "slowest": "FROM Entity WHERE field > 4 AND desc = 'value'"
    },
    "non_indexed": {
      "count": 0,
      "average": 0.0,
      "max": -1,
      "slowest": "FROM Entity WHERE desc = 'value'"
    },
    "entity_load": {
      "count": 123,
      "average": 10.0,
      "max": 120
    }
  },
  "index": {
    "types": {
      "org.infinispan.same.test.Entity": {
        "count": 5660001,
        "size": 0
      },
      "org.infinispan.same.test.AnotherEntity": {
        "count": 40,
        "size": 345560
      }
    },
    "reindexing": false
  }
}
Copy to Clipboard Toggle word wrap

query 部分中:

  • indexed_local 提供索引查询的详情。
  • indexed_distributed 提供关于分布式索引查询的详细信息。
  • 混合 提供关于仅部分使用索引的查询的详细信息。
  • non_indexed 提供有关没有使用索引的查询的详情。
  • entity_load 提供有关在索引查询执行后获取对象的缓存操作详情。
注意

时间始终以纳秒为单位。

index 部分中:

  • Type 提供缓存中配置的每个索引类型(类名称或 protobuf 消息)的详情。

    • 计算为类型索引的实体数。
    • 类型 的大小 (以字节为单位)。
  • 如果值为 true,则 索引程序 在缓存中运行。

2.1.34.6. 清除查询统计信息

使用 POST 请求和 ?action=clear 参数重置运行时统计信息。

POST /rest/v2/caches/{cacheName}/search/stats?action=clear
Copy to Clipboard Toggle word wrap

Data Grid 仅重置本地节点的查询执行时间。此操作不会清除索引统计信息。

2.1.34.7. 检索索引统计信息(已弃用)

使用 GET 请求获取缓存中索引的信息。

GET /rest/v2/caches/{cacheName}/search/indexes/stats
Copy to Clipboard Toggle word wrap

Data Grid 响应

{
    "indexed_class_names": ["org.infinispan.sample.User"],
    "indexed_entities_count": {
        "org.infinispan.sample.User": 4
    },
    "index_sizes": {
        "cacheName_protobuf": 14551
    },
    "reindexing": false
}
Copy to Clipboard Toggle word wrap

  • indexed_class_names 提供缓存中存在的索引的类名称。对于 Protobuf,值始终为 org.infinispan.query.remote.impl.indexing.ProtobufValueWrapper
  • indexed_entities_count 提供每个类索引的实体数量。
  • index_sizes 为缓存中的每个索引提供大小(以字节为单位)。
  • 重新索引 指示是否对缓存执行重新索引操作。如果值为 true,则 MassIndexer 在缓存中启动。

2.1.34.8. 检索查询统计信息(已弃用)

获取有关使用 GET 请求在缓存中运行的查询的信息。

GET /rest/v2/caches/{cacheName}/search/query/stats
Copy to Clipboard Toggle word wrap

Data Grid 响应

{
    "search_query_execution_count":20,
    "search_query_total_time":5,
    "search_query_execution_max_time":154,
    "search_query_execution_avg_time":2,
    "object_loading_total_time":1,
    "object_loading_execution_max_time":1,
    "object_loading_execution_avg_time":1,
    "objects_loaded_count":20,
    "search_query_execution_max_time_query_string": "FROM entity"
}
Copy to Clipboard Toggle word wrap

  • search_query_execution_count 提供已运行的查询数量。
  • search_query_total_time 提供查询的总时间。
  • search_query_execution_max_time 提供查询所花费的最长时间。
  • search_query_execution_avg_time 提供平均查询时间。
  • object_loading_total_time 提供在查询执行后从缓存中加载对象的总时间。
  • object_loading_execution_max_time 提供载入对象执行的最大时间。
  • object_loading_execution_avg_time 提供加载对象执行的平均时间。
  • objects_loaded_count 提供载入的对象计数。
  • search_query_execution_max_time_query_string 提供了执行最慢的查询。

2.1.34.9. 清除查询统计信息(已弃用)

使用 POST 请求和 ?action=clear 参数重置运行时统计信息。

POST /rest/v2/caches/{cacheName}/search/query/stats?action=clear
Copy to Clipboard Toggle word wrap

2.1.35. 使用缓存进行跨站点操作

使用 Data Grid REST API 执行跨站点复制操作。

2.1.35.1. 获取所有备份位置的状态

使用 GET 请求检索所有备份位置的状态。

GET /rest/v2/caches/{cacheName}/x-site/backups/
Copy to Clipboard Toggle word wrap

Data Grid 以 JSON 格式为每个备份位置的状态响应,如下例所示:

{
  "NYC": {
    "status": "online"
  },
  "LON": {
    "status": "mixed",
    "online": [
      "NodeA"
    ],
    "offline": [
      "NodeB"
    ]
  }
}
Copy to Clipboard Toggle word wrap
Expand
表 2.18. 返回的状态
value描述

online

本地集群中的所有节点都有一个带有备份位置的跨站点视图。

离线

本地集群中没有带有备份位置的跨站点视图。

mixed

本地集群中的某些节点具有带有备份位置的跨站点视图,本地集群中的其他节点没有跨站点视图。响应表示每个节点的状态。

2.1.35.2. 获取特定备份位置的状态

使用 GET 请求检索备份位置的状态。

GET /rest/v2/caches/{cacheName}/x-site/backups/{siteName}
Copy to Clipboard Toggle word wrap

Data Grid 以 JSON 格式通过站点中的每个节点状态进行响应,如下例所示:

{
  "NodeA":"offline",
  "NodeB":"online"
}
Copy to Clipboard Toggle word wrap
Expand
表 2.19. 返回的状态
value描述

online

节点在线。

离线

节点离线。

失败

无法检索状态。远程缓存可以在请求期间关闭或发生网络错误。

2.1.35.3. 使备份位置离线

通过 POST 请求和 ?action=take-offline 参数使备份位置离线。

POST /rest/v2/caches/{cacheName}/x-site/backups/{siteName}?action=take-offline
Copy to Clipboard Toggle word wrap

2.1.35.4. 在线提供备份位置

使用 ?action=bring-online 参数在线启动备份位置。

POST /rest/v2/caches/{cacheName}/x-site/backups/{siteName}?action=bring-online
Copy to Clipboard Toggle word wrap

2.1.35.5. 将状态推送到备份位置

使用 ?action=start-push-state 参数将缓存状态推送到备份位置。

POST /rest/v2/caches/{cacheName}/x-site/backups/{siteName}?action=start-push-state
Copy to Clipboard Toggle word wrap

2.1.35.6. 取消状态传输

使用 ?action=cancel-push-state 参数取消状态传输操作。

POST /rest/v2/caches/{cacheName}/x-site/backups/{siteName}?action=cancel-push-state
Copy to Clipboard Toggle word wrap

2.1.35.7. 获取状态传输状态

使用 ?action=push-state-status 参数检索状态传输操作的状态。

GET /rest/v2/caches/{cacheName}/x-site/backups?action=push-state-status
Copy to Clipboard Toggle word wrap

Data Grid 以 JSON 格式为每个备份位置的状态进行响应,如下例所示:

{
   "NYC":"CANCELED",
   "LON":"OK"
}
Copy to Clipboard Toggle word wrap
Expand
表 2.20. 返回的状态
value描述

发送

状态传输到备份位置正在进行。

确定

状态传输成功完成。

ERROR

出现错误,状态为 transfer。检查日志文件。

取消

状态转移取消正在进行。

2.1.35.8. 清除状态传输状态

使用 ?action=clear-push-state-status 参数发送站点的清除状态传输状态。

POST /rest/v2/caches/{cacheName}/x-site/local?action=clear-push-state-status
Copy to Clipboard Toggle word wrap

2.1.35.9. 修改 会使离线条件

如果满足某些条件,站点将处于离线状态。修改离线参数,以控制备份位置自动离线的时间。

流程

  1. 检查配置了 GET 请求和 take-offline-config 参数的离线参数。

    GET /rest/v2/caches/{cacheName}/x-site/backups/{siteName}/take-offline-config
    Copy to Clipboard Toggle word wrap

    Data Grid 响应包括 after_failuresmin_wait 字段,如下所示:

    {
      "after_failures": 2,
      "min_wait": 1000
    }
    Copy to Clipboard Toggle word wrap
  2. 修改 取 PUT 请求正文中的离线参数。

    PUT /rest/v2/caches/{cacheName}/x-site/backups/{siteName}/take-offline-config
    Copy to Clipboard Toggle word wrap

    如果操作成功完成,服务会返回 204 (不内容)

2.1.35.10. 从接收站点取消状态传输

如果两个备份位置之间的连接中断,您可以在接收推送的站点上取消状态传输。

从远程站点取消状态传输,并使用 ?action=cancel-receive-state 参数保留本地缓存的当前状态。

POST /rest/v2/caches/{cacheName}/x-site/backups/{siteName}?action=cancel-receive-state
Copy to Clipboard Toggle word wrap

2.1.36. 滚动升级

在 Data Grid 集群间执行缓存数据的滚动升级

2.1.36.1. 连接源集群

使用以下方法将目标集群连接到源集群:

POST /rest/v2/caches/{cacheName}/rolling-upgrade/source-connection
Copy to Clipboard Toggle word wrap

您必须以 JSON 格式提供 remote-store 定义作为正文:

JSON

{
  "remote-store": {
    "cache": "my-cache",
    "shared": true,
    "raw-values": true,
    "socket-timeout": 60000,
    "protocol-version": "2.9",
    "remote-server": [
      {
        "host": "127.0.0.2",
        "port": 12222
      }
    ],
    "connection-pool": {
      "max-active": 110,
      "exhausted-action": "CREATE_NEW"
    },
    "async-executor": {
      "properties": {
        "name": 4
      }
    },
    "security": {
      "authentication": {
        "server-name": "servername",
        "digest": {
          "username": "username",
          "password": "password",
          "realm": "realm",
          "sasl-mechanism": "DIGEST-MD5"
        }
      },
      "encryption": {
        "protocol": "TLSv1.2",
        "sni-hostname": "snihostname",
        "keystore": {
          "filename": "/path/to/keystore_client.jks",
          "password": "secret",
          "certificate-password": "secret",
          "key-alias": "hotrod",
          "type": "JKS"
        },
        "truststore": {
          "filename": "/path/to/gca.jks",
          "password": "secret",
          "type": "JKS"
        }
      }
    }
  }
}
Copy to Clipboard Toggle word wrap

几个元素是可选的,如 security,async-executorconnection-pool。配置必须包含缓存名称,raw-values 被设置为 false,以及源集群中单个端口的主机/IP。有关 remote-store 配置的详细信息,请参阅 XSD 架构

如果操作成功完成,服务会返回 204 (非内容)。如果目标集群已连接到源集群,它会返回状态 304 (未修改)。

2.1.36.2. 获取源集群连接详情

要获取缓存的 remote-store 定义,请使用 GET 请求:

GET /rest/v2/caches/{cacheName}/rolling-upgrade/source-connection
Copy to Clipboard Toggle word wrap

如果缓存之前连接,它将以 JSON 格式返回关联 remote-store 的配置,其状态为 200 (OK),否则为 404 (Not Found)状态。

注意

这不是集群范围的操作,它只在处理 REST 调用的节点中返回缓存的远程存储。

2.1.36.3. 检查缓存是否已连接

要检查缓存是否已连接到远程集群,请使用 HEAD 请求:

HEAD /rest/v2/caches/{cacheName}/rolling-upgrade/source-connection
Copy to Clipboard Toggle word wrap

如果为群集的所有节点返回 200 (OK)状态,则 cacheName 配置了单个远程存储,否则 404 (NOT_FOUND)。

2.1.36.4. 同步数据

使用 POST 请求和 ?action=sync-data 参数将数据从源集群同步到目标集群:

POST /rest/v2/caches/{cacheName}?action=sync-data
Copy to Clipboard Toggle word wrap

当操作完成后,Data Grid 使用复制到目标集群的条目总数进行响应。

2.1.36.5. 断开源集群

将数据同步到目标集群后,使用 DELETE 请求断开与源集群的连接:

DELETE /rest/v2/caches/{cacheName}/rolling-upgrade/source-connection
Copy to Clipboard Toggle word wrap

如果操作成功完成,服务会返回 204 (不内容)它没有连接源,它会返回代码 304 (未修改)。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat