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配置文件路径