Redisson官方文档 - 12. 独立节点模式

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Redisson Node指的是Redisson在分布式运算环境中作为独立节点运行的一种模式。Redisson Node的功能可以用来执行通过分布式执行服务或分布式调度执行服务发送的远程任务,也可以用来为分布式远程服务提供远端服务。 所有这些功能全部包含在一个JAR包里。

12.1. 概述

Redisson Node指的是Redisson在分布式运算环境中作为独立节点运行的一种模式。Redisson Node的功能可以用来执行通过分布式执行服务分布式调度执行服务发送的远程任务,也可以用来为分布式远程服务提供远端服务。 所有这些功能全部包含在一个JAR包里,您可以从这里下载

12.2. 配置方法

12.2.1. 配置参数

Redisson Node采用的是与Redisson框架同样的配置方法,并同时还增加了以下几个专用参数。值得注意的是ExecutorService使用的线程数量可以通过threads参数来设定。

mapReduceWorkers (MapReduce的工作者数量)

默认值:0
用来指定执行MapReduce任务的工作者的数量
0 代表当前CPU核的数量

executorServiceWorkers(执行服务的工作者数量)

默认值:null
用一个Map结构来指定某个服务的工作者数量,Map的Key是服务名称,用value指定数量。

redissonNodeInitializer(初始化监听器)

默认值:null

Redisson Node启动完成后调用的初始化监听器。

12.2.2. 通过JSON和YAML配置文件配置独立节点

以下是JSON格式的配置文件范例,该范例是在集群模式配置方法基础上,增加了Redisson Node的配置参数。

{
   "clusterServersConfig":{
      "nodeAddresses":[
         "//127.0.0.1:7004",
         "//127.0.0.1:7001",
         "//127.0.0.1:7000"
      ],
   },
   "threads":0,

   "executorServiceThreads": 0,
   "executorServiceWorkers": {"myExecutor1":3, "myExecutor2":5},
   "redissonNodeInitializer": {"class":"org.mycompany.MyRedissonNodeInitializer"}
}

以下是YAML格式的配置文件范例,该范例是在集群模式配置方法基础上,增加了Redisson Node的配置参数。

---
clusterServersConfig:
  nodeAddresses:
  - "//127.0.0.1:7004"
  - "//127.0.0.1:7001"
  - "//127.0.0.1:7000"
  scanInterval: 1000
threads: 0

executorServiceThreads: 0
executorServiceWorkers:
  myService1: 123
  myService2: 421
redissonNodeInitializer: !<org.mycompany.MyRedissonNodeInitializer> {}

12.3. 初始化监听器

Redisson Node提供了在启动完成后,执行RedissonNodeInitializer指定的初始化监听器的机制。这个机制可以用在启动完成时执行注册在类路径(classpath)中分布式远程服务的实现,或其他必要业务逻辑。比如,通知其他订阅者关于一个新节点上线的通知:

public class MyRedissonNodeInitializer implements RedissonNodeInitializer {

    @Override
    public void onStartup(RedissonNode redissonNode) {
        RMap<String, Integer> map = redissonNode.getRedisson().getMap("myMap");
        // ...
        // 或
        redisson.getRemoteService("myRemoteService").register(MyRemoteService.class, new MyRemoteServiceImpl(...));
        // 或
        reidsson.getTopic("myNotificationTopic").publish("New node has joined. id:" + redissonNode.getId() + " remote-server:" + redissonNode.getRemoteAddress());
    }

}

12.4. 嵌入式运行方法

Redisson Node也可以以嵌入式方式运行在其他应用当中。

// Redisson程序化配置代码
Config config = ...
// Redisson Node 程序化配置方法
RedissonNodeConfig nodeConfig = new RedissonNodeConfig(config);
Map<String, Integer> workers = new HashMap<String, Integer>();
workers.put("test", 1);
nodeConfig.setExecutorServiceWorkers(workers);

// 创建一个Redisson Node实例
RedissonNode node = RedissonNode.create(nodeConfig);
// 或者通过指定的Redisson实例创建Redisson Node实例
RedissonNode node = RedissonNode.create(nodeConfig, redisson);

node.start();

//...

node.shutdown();

12.5. 命令行运行方法

  1. 下载Redisson Node的JAR包。
  2. 编写一个JSON或YAML格式的配置文件。
  3. 通过以下方式之一运行Redisson Node:
    java -jar redisson-all.jar config.json


java -jar redisson-all.jar config.yaml

另外不要忘记添加-Xmx-Xms之类的参数。

12.6. Docker方式运行方法

  1. 首先运行Redis(没有现有Redis环境的情况):
    docker run -d --name redis-node redis
  2. 再运行Redisson Node:
    docker run -d --network container:redis-node -v <path-to-config>:/opt/redisson-node/redisson.conf redisson/redisson-node

可以通过JAVA_OPTS来指定JAVA虚拟主机的运行参数:
docker run -d --network container:redis-node -e JAVA_OPTS="-Xmx1g" -v <path-to-config>:/opt/redisson-node/redisson.conf redisson/redisson-node

<path-to-config> - Redisson Node的JSON或YAML配置文件路径

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
缓存 Java Nacos
nacos常见问题之节点元数据多一个7858接口如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
48 0
|
6月前
|
NoSQL Java Redis
redis集群拓扑结构自动更新:使用Lettuce连接Cluster集群实例时异常处理(一)
redis集群拓扑结构自动更新:使用Lettuce连接Cluster集群实例时异常处理
360 0
|
6月前
|
NoSQL Java Redis
redis集群拓扑结构自动更新:使用Lettuce连接Cluster集群实例时异常处理(二)
redis集群拓扑结构自动更新:使用Lettuce连接Cluster集群实例时异常处理
273 0
|
7月前
|
NoSQL 网络协议 Unix
【Redis源码】集群之分布式cluster建立集群关系(十三)
【Redis源码】集群之分布式cluster建立集群关系(十三)
25 0
|
11月前
|
存储 监控 NoSQL
Redis哨兵的工作原理、配置和使用方法,以及相应的最佳实践
Redis哨兵的工作原理、配置和使用方法,以及相应的最佳实践
261 0
|
12月前
|
存储 NoSQL Java
【JavaP6大纲】分布式会话篇:集群部署时的分布式 Session 如何实现?
【JavaP6大纲】分布式会话篇:集群部署时的分布式 Session 如何实现?
|
Shell Linux 定位技术
内嵌 ZK 模式集群-2 | 学习笔记
快速学习内嵌 ZK 模式集群-2
220 0
内嵌 ZK 模式集群-2  |  学习笔记
|
运维 Java Linux
内嵌 ZK 模式集群-1 | 学习笔记
快速学习内嵌 ZK 模式集群-1
203 0
内嵌 ZK 模式集群-1  |  学习笔记
|
NoSQL Java Redis
SpringBoot整合Jedis可切换使用单机、哨兵、集群模式
SpringBoot整合Jedis可利用配置文件一键切换使用单机、哨兵、集群模式
583 0
|
存储 缓存 Dubbo
Sentinel 调用上下文环境实现原理(含原理图)
Sentinel 调用上下文环境实现原理(含原理图)
Sentinel 调用上下文环境实现原理(含原理图)