热 Rod Node.JS 客户端指南
配置和使用 Hot Rod JS 客户端
摘要
Red Hat Data Grid 复制链接链接已复制到粘贴板!
Data Grid 是一个高性能分布式内存数据存储。
- 无架构数据结构
- 将不同对象存储为键值对的灵活性。
- 基于网格的数据存储
- 旨在在集群中分发和复制数据。
- 弹性扩展
- 动态调整节点数量,以便在不中断服务的情况下满足需求。
- 数据互操作性
- 从不同端点在网格中存储、检索和查询数据。
Data Grid 文档 复制链接链接已复制到粘贴板!
红帽客户门户网站中提供了 Data Grid 的文档。
Data Grid 下载 复制链接链接已复制到粘贴板!
访问红帽客户门户上的 Data Grid 软件下载。
您必须有一个红帽帐户才能访问和下载数据中心软件。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息。
第 1 章 安装和配置 Hot Rod JS 客户端 复制链接链接已复制到粘贴板!
在安装 Hot Rod JS 客户端前,请确保您的系统满足要求。然后,您可以将 Hot Rod JS 客户端配置为连接到 Data Grid 服务器,对键和值使用不同的介质类型,并自定义日志记录。
1.1. 安装 Hot Rod JS 客户端 复制链接链接已复制到粘贴板!
Data Grid 提供 Hot Rod JS 客户端的分发,您可以通过 NPM 软件包管理器进行安装。
先决条件
-
Node.js 版本
12
或14
。 - Data Grid Server 8.2.
流程
-
从红帽客户门户下载并提取
redhat-datagrid-<version>-nodejs-client.zip
。 从提取的目录安装
tgz
软件包,如下例所示:npm install /path/to/redhat-datagrid-<version>-nodejs-client/infinispan-<version>.tgz
$ npm install /path/to/redhat-datagrid-<version>-nodejs-client/infinispan-<version>.tgz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. 配置数据网格连接 复制链接链接已复制到粘贴板!
配置 Hot Rod JS 客户端以连接到 Data Grid 服务器。
如果向配置添加多个服务器地址,Hot Rod JS 客户端会循环,直到它找到可以连接到的节点。
但是,您只需要为客户端添加一个 Data Grid Server 地址来接收整个集群拓扑。如果 Hot Rod JS 客户端连接到一个作为群集成员的单个服务器实例,客户端会获取所有节点的地址信息。
由于 Hot Rod JS 客户端是拓扑感知,所以如果连接到一个 Data Grid 服务器中断,客户端会在集群中的其他节点上重试任何不完整的操作。同样,如果在一个 Data Grid 服务器上注册的客户端监听程序失败或留出集群,客户端会透明地将侦听器注册迁移到集群中的另一节点,以便继续接收事件。
先决条件
- 安装 Hot Rod JS 客户端。
- 至少有一个正在运行的 Data Grid 服务器实例。
流程
在客户端配置中指定 Data Grid 服务器的主机名和端口。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1. 在客户端配置中定义 Data Grid 集群 复制链接链接已复制到粘贴板!
当您在单独的数据中心中设置 Data Grid 集群来执行跨站点复制时,您可以将不同站点的连接详情添加到客户端配置中。
先决条件
- 安装 Hot Rod JS 客户端。
- 配置数据网格以进行跨站点复制。
流程
-
在
配置中添加集群
定义。 为每个 Data Grid 集群添加
名称和
服务器
定义。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.2. 手动切换 Data Grid 集群 复制链接链接已复制到粘贴板!
将 Hot Rod JS 客户端的 Data Grid 集群更改为连接了 Hot Rod。
先决条件
- 在 Hot Rod JS 客户端配置中定义 Data Grid 集群。
流程
-
调用
switchToCluster (clusterName)
方法,以强制客户端切换到客户端配置中定义的 Data Grid 集群。 调用
switchToDefaultCluster ()
方法,以使用初始 Data Grid 集群。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. 配置身份验证 复制链接链接已复制到粘贴板!
数据网格服务器使用不同的 SASL 机制来验证 Hot Rod JS 客户端连接。
先决条件
- 创建 Data Grid 用户。
- 将 SASL 身份验证机制添加到 Data Grid 服务器配置中的 Hot Rod 连接器中。
流程
- 打开 Hot Rod JS 客户端配置以进行编辑。
-
添加设置
enabled: true
标志的验证方法。 -
为
saslMechanism
参数指定一个值,与 Hot Rod 连接器的 SASL 身份验证机制匹配。 - 根据需要配置特定于 SASL 身份验证机制的任何参数。
1.3.1. SASL 身份验证机制 复制链接链接已复制到粘贴板!
热 Rod JS 客户端可使用以下 SASL 身份验证机制连接到 Data Grid 服务器。
PLAIN
通过线路以类似于 HTTP BASIC
身份验证的方式以纯文本(未加密)发送凭据。
要保护数据网格凭证,您应该只使用 PLAIN
身份验证与 TLS 加密。
DIGEST-MD5
除了非ce用来加密凭据外,还使用 MD5 哈希算法。
SCRAM
除了哈希算法和非ce 值外,使用 salt 值来加密凭据。热 Rod 端点支持 SCRAM-SHA-1
、SCRAM-SHA-256
、SCRAM-SHA-384
、SCRAM-SHA-512
哈希算法,以强度顺序。
1.4. 配置加密 复制链接链接已复制到粘贴板!
Data Grid Server 可以强制不同类型的 SSL/TLS 加密来保护 Hot Rod JS 客户端连接。
先决条件
- 创建 Hot Rod JS 客户端可用于验证数据网格服务器身份的信任存储。
- 如果您将 Data Grid Server 配置为验证或验证客户端证书,请根据情况创建密钥存储。
流程
- 打开 Hot Rod JS 客户端配置以进行编辑。
-
添加设置
enabled: true
标志的ssl
方法。 - 提供特定于您使用的加密类型的任何其他配置。
1.4.1. 加密类型 复制链接链接已复制到粘贴板!
热 Rod JS 客户端可以使用不同类型的加密来与 Data Grid 服务器协商安全连接。
Data Grid Server 身份
对于基本加密,您可以在配置中为 Data Grid 服务器证书添加签名证书或 CA 捆绑包,如下所示:
要验证向 Data Grid Server 发布的证书,Hot Rod JS 客户端需要完整的证书链或以 Root CA 开头的部分链。
信任存储
您可以以 PKCS12
或 PFX
格式添加信任存储,如下所示:
客户端证书身份验证
如果在 Data Grid Server 配置中启用客户端证书身份验证,请添加密钥存储,如下例所示:
在使用客户端证书身份验证时,您必须使用 EXTERNAL
身份验证机制配置 Hot Rod JS 客户端。
Server Name Indication (SNI)
如果您使用 SNI 来允许 Hot Rod JS 客户端请求数据网格服务器主机名,请为与 Data Grid Server 配置中的主机名匹配的 sniHostName
参数设置一个值。
sniHostName
参数默认为 localhost
。
默认情况下,热 Rod JS 客户端不允许自签名证书,这可能会导致开发或测试环境中没有公共证书颁发机构(CA)密钥的问题。
有关使用 Java keytool 创建签名证书的示例,请查看 Data Grid 代码教程。
1.5. 配置数据格式 复制链接链接已复制到粘贴板!
热 Rod JS 客户端可以将键和值处理为原生 JavaScript 对象表示法(JSON)对象或 String 对象。默认情况下,客户端将条目作为 String 对象处理。如果要以 JSON 格式将数据传输到 Data Grid Server,您必须配置 Hot Rod JS 客户端。
脚本操作仅支持 String 键/值对和字符串参数。
流程
-
向客户端添加
dataFormat
配置。 -
使用
keyType
和valueType
参数设置键和值的数据格式。
键和值可以有不同的介质类型。对于 JSON 对象,指定 application/json
。对于 String 对象,请指定 text/plain
或省略参数以使用默认值。
1.6. 配置日志记录 复制链接链接已复制到粘贴板!
热 Rod JS 客户端使用 log4js
,您可以通过提供 JSON 格式的配置来修改这些日志。
流程
以 JSON 格式创建日志配置。
例如,以下 JSON 配置附加程序,它将 TRACE 级别日志事件写入文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
var log4js = require ('log4js')
语句添加到 Hot Rod JS 客户端配置中。 使用
log4js.configure ()
方法指定 JSON 日志记录配置的路径,如下例所示:var log4js = require('log4js'); log4js.configure('path/to/my-log4js.json');
var log4js = require('log4js'); log4js.configure('path/to/my-log4js.json');
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 2 章 使用 Hot Rod JS 客户端 复制链接链接已复制到粘贴板!
了解将 Hot Rod JS 客户端与 Data Grid 搭配使用的一些示例。
2.1. hot Rod JS 客户端示例 复制链接链接已复制到粘贴板!
在安装和配置 Hot Rod JS 客户端后,请先尝试一些基本的缓存操作,然后再继续与数据网格进行更复杂的交互。
2.1.1. hello world 复制链接链接已复制到粘贴板!
在 Data Grid Server 上创建一个名为 "myCache" 的缓存,然后添加并检索条目。
2.1.2. 使用条目和检索缓存统计信息 复制链接链接已复制到粘贴板!
添加、检索、删除单个条目和查看缓存统计信息。
2.1.3. 使用多个缓存条目 复制链接链接已复制到粘贴板!
使用简单递归循环创建多个缓存条目。
2.1.4. 使用 Async 和 Await 结构 复制链接链接已复制到粘贴板!
Node.js 提供 async
和 await
结构,可简化缓存操作。
单个缓存条目
多个缓存条目
2.1.5. 运行服务器端脚本 复制链接链接已复制到粘贴板!
您可以将自定义脚本添加到 Data Grid Server,然后从 Hot Rod JS 客户端运行它们。
脚本示例
// mode=local,language=javascript,parameters=[k, v],datatype='text/plain; charset=utf-8' cache.put(k, v); cache.get(k);
// mode=local,language=javascript,parameters=[k, v],datatype='text/plain; charset=utf-8'
cache.put(k, v);
cache.get(k);
脚本执行
2.1.6. 注册事件监听程序 复制链接链接已复制到粘贴板!
事件监听器在缓存更新发生时通知 Hot Rod JS 客户端,包括创建、修改、删除或过期条目。
用于条目创建和修改通知客户端有关键和值的事件。仅删除条目和过期通知客户端有关密钥的事件。
事件监听程序注册
您可以调整来自事件监听程序的通知,以避免使用 key-value-with-previous-converter-factory
转换程序进行不必要的往返。例如,这允许您查找与事件内键关联的值,而不是在以后检索它们。
远程事件转换器
您可以将自定义转换器添加到 Data Grid Server。如需更多信息,请参阅 Data Grid 文档。
2.1.7. 使用条件操作 复制链接链接已复制到粘贴板!
Hot Rod 协议存储有关数据网格值的元数据。这个元数据提供了一个确定性因素,可让您为特定条件执行缓存操作。例如,如果版本不匹配,则需要替换键的值。
使用 getWithMetadata
方法检索与键值关联的元数据。
2.1.8. 使用临时数据 复制链接链接已复制到粘贴板!
使用 getWithMetadata
和 size
方法使缓存条目过期。