hot Rod Node.JS Client Guide
配置和使用 Hot Rod JS 客户端
摘要
Red Hat Data Grid 复制链接链接已复制到粘贴板!
Data Grid 是一个高性能分布式内存数据存储。
- 无架构数据结构
- 将不同对象存储为键值对的灵活性。
- 基于网格的数据存储
- 旨在在集群中分发和复制数据。
- 弹性扩展
- 动态调整节点数量,以便在不中断服务的情况下满足需求。
- 数据互操作性
- 从不同端点在网格中存储、检索和查询数据。
Data Grid 文档 复制链接链接已复制到粘贴板!
红帽客户门户网站中提供了 Data Grid 的文档。
Data Grid 下载 复制链接链接已复制到粘贴板!
访问 红帽客户门户上的 Data Grid 软件下载。
您必须有一个红帽帐户才能访问和下载数据中心软件。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
第 1 章 安装和配置 Hot Rod JS 客户端 复制链接链接已复制到粘贴板!
在安装 Hot Rod JS 客户端前,请确定您的系统满足要求。然后,您可以配置 Hot Rod JS 客户端来连接到 Data Grid Server,将不同的介质类型用于键和值,并自定义日志记录。
1.1. 安装 Hot Rod JS 客户端 复制链接链接已复制到粘贴板!
Data Grid 提供 Hot Rod JS 客户端的发布,您可以通过 NPM 软件包管理器进行安装。
先决条件
-
Node.js 版本
12或14。 - Data Grid Server 8.3。
流程
在您的 NPM 配置中添加红帽软件仓库。
您可以使用
npm config命令,或者在项目中的.npmrc文件中添加以下内容:@redhat:registry=https://npm.registry.redhat.com registry=https://registry.npmjs.org/
@redhat:registry=https://npm.registry.redhat.com registry=https://registry.npmjs.org/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装 Hot Rod JS 客户端,如下所示:
npm install @redhat/infinispan
npm install @redhat/infinispanCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. 配置 Data Grid 连接 复制链接链接已复制到粘贴板!
配置 Hot Rod JS 客户端以连接到数据中心服务器。
如果向配置添加多个服务器地址,则 Hot Rod JS 客户端循环,直到它找到它可以连接的节点。
但是,您只需要为客户端添加一个 Data Grid Server 地址来接收整个集群拓扑。如果 Hot Rod JS 客户端连接到作为集群成员的单个服务器实例,客户端会获取所有节点的地址信息。
由于 Hot Rod JS 客户端已识别拓扑,如果连接到一个 Data Grid Server 中断,客户端会在集群中的其他节点上重试任何不完整的操作。同样,如果在一个 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 JS 客户端配置中定义 Data Grid 集群。
流程
-
调用
switchToCluster (clusterName)方法,来强制客户端切换到客户端配置中定义的 Data Grid 集群。 调用
switchToDefaultCluster ()方法开始使用初始 Data Grid 集群。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. 配置身份验证 复制链接链接已复制到粘贴板!
Data Grid Server 使用不同的 SASL 机制来验证 Hot Rod JS 客户端连接。
先决条件
- 创建 Data Grid 用户。
- 在 Data Grid 服务器配置中的 Hot Rod 连接器中添加 SASL 身份验证机制。
流程
- 打开 Hot Rod JS 客户端配置进行编辑。
-
添加设置
enabled: true标志的身份验证方法。 -
为与 Hot Rod 连接器的 SASL 身份验证机制匹配的
saslMechanism参数指定一个值。 - 根据需要配置特定于 SASL 身份验证机制的任何参数。
1.3.1. SASL 身份验证机制 复制链接链接已复制到粘贴板!
热 Rod JS 客户端可使用以下 SASL 身份验证机制连接到 Data Grid 服务器。
PLAIN
以纯文本(未加密)发送凭据,其方式类似于 HTTP BASIC 身份验证。
要保护 Data Grid 凭证,您应该只结合使用 PLAIN 身份验证与 TLS 加密。
DIGEST-MD5
除了非ces 来加密凭据外,使用 MD5 哈希算法。
SCRAM
除了哈希算法和非值加密凭证外,还使用 salt 值。热 Rod 端点支持 SCRAM-SHA-1、SCRAM-SHA-256、SCRAM-SHA-384、SCRAM-SHA-512 哈希算法,以实现强度。
1.4. 配置加密 复制链接链接已复制到粘贴板!
数据中心服务器可以强制实施不同类型的 SSL/TLS 加密来保护 Hot Rod JS 客户端连接。
先决条件
- 创建 Hot Rod JS 客户端可用于验证数据中心服务器身份的信任存储。
- 如果您将 Data Grid 服务器配置为验证或验证客户端证书,请根据需要创建密钥存储。
流程
- 打开 Hot Rod JS 客户端配置进行编辑。
-
添加设置
enabled: true标记的ssl方法。 - 提供特定于您使用的加密类型的任何其他配置。
1.4.1. 加密类型 复制链接链接已复制到粘贴板!
热 Rod JS 客户端可以使用不同类型的加密来与 Data Grid Server 协商安全连接。
Data Grid Server 身份
对于基本加密,您可以在配置中为 Data Grid Server 证书添加签名证书或 CA 捆绑包,如下所示:
要验证发布到 Data Grid Server 的证书,Hot Rod JS 客户端需要完整证书链或以 Root CA 开头的部分链。
信任存储
您可以使用 PKCS12 或 PFX 格式添加信任存储,如下所示:
客户端证书身份验证
如果您在 Data Grid 服务器配置中启用客户端证书身份验证,请添加密钥存储,如下例所示:
在使用客户端证书身份验证时,您必须使用 EXTERNAL 身份验证机制配置 Hot Rod JS 客户端。
服务器名称验证(SNI)
如果您使用 SNI 来允许 Hot Rod JS 客户端请求 Data Grid Server 主机名,请为与 Data Grid 服务器配置中主机名匹配的 sniHostName 参数设置一个值。
sniHostName 参数默认为 localhost。
默认情况下,热 Rod JS 客户端不允许自签名证书,这可能会导致开发或测试环境中没有公共证书颁发机构(CA)密钥的问题。
查看 Data Grid 代码教程 中有关使用 Java keytool 创建签名证书的示例。
1.5. 配置数据格式 复制链接链接已复制到粘贴板!
热 Rod JS 客户端可以作为原生 JavaScript 对象表示法(JSON)对象或字符串对象处理键和值。默认情况下,客户端将条目处理为 String 对象。如果要以 JSON 格式将数据传送到 Data Grid 服务器,您必须配置 Hot Rod JS 客户端。
脚本操作仅支持字符串键/值对和字符串参数。
流程
-
在您的客户端中添加
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 客户端后,请先尝试一些基本缓存操作来开始使用它,然后再进入更复杂的 Data Grid 交互。
2.1.1. hello world 复制链接链接已复制到粘贴板!
在 Data Grid 服务器上创建一个名为 "myCache" 的缓存,然后添加并检索条目。
2.1.2. 使用条目并检索缓存统计信息 复制链接链接已复制到粘贴板!
添加、检索、删除单个条目并查看缓存的统计信息。
2.1.3. 使用多个缓存条目 复制链接链接已复制到粘贴板!
创建带有简单递归循环的多个缓存条目。
2.1.4. 使用 Async 和 Await 结构 复制链接链接已复制到粘贴板!
Node.js 提供 async 和 wait 结构,可简化缓存操作。
单个缓存条目
多个缓存条目
2.1.5. 运行服务器端脚本 复制链接链接已复制到粘贴板!
您可以将自定义脚本添加到 Data Grid 服务器,然后从 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 converter 进行不必要的往返。例如,这允许您在事件中找到与键值关联的值,而不是在以后检索它们。
远程事件转换器
您可以将自定义转换器添加到 Data Grid Server。如需更多信息,请参阅 Data Grid 文档。
2.1.7. 使用条件操作 复制链接链接已复制到粘贴板!
Hot Rod 协议将有关值的元数据存储在 Data Grid 中。此元数据提供了一个确定因素,可让您为特定条件执行缓存操作。例如,如果要替换键的值(如果版本不匹配)。
使用 getWithMetadata 方法检索与键值关联的元数据。
2.1.8. 使用临时数据 复制链接链接已复制到粘贴板!
使用 getWithMetadata 和 size 方法使缓存条目过期。