Redisson—独立节点模式和集群管理工具

一、集群管理工具

Redisson集群管理工具提供了通过程序化的方式,像redis-trib.rb脚本一样方便地管理Redis集群的工具。

1、 创建集群

以下范例展示了如何创建三主三从的Redis集群。

ClusterNodes clusterNodes = ClusterNodes.create()
.master("127.0.0.1:7000").withSlaves("127.0.0.1:7001", "127.0.0.1:7002")
.master("127.0.0.1:7003").withSlaves("127.0.0.1:7004")
.master("127.0.0.1:7005");
ClusterManagementTool.createCluster(clusterNodes);

主节点127.0.0.1:7000的从节点有127.0.0.1:7001和127.0.0.1:7002。

主节点127.0.0.1:7003的从节点是127.0.0.1:7004。

主节点127.0.0.1:7005没有从节点。

2、踢出节点

以下范例展示了如何将一个节点踢出集群。

ClusterManagementTool.removeNode("127.0.0.1:7000", "127.0.0.1:7002");
// 或
redisson.getClusterNodesGroup().removeNode("127.0.0.1:7002");

将从节点127.0.0.1:7002从其主节点127.0.0.1:7000里踢出。

3、 数据槽迁移

以下范例展示了如何将数据槽在集群的主节点之间迁移。

ClusterManagementTool.moveSlots("127.0.0.1:7000", "127.0.0.1:7002", 23, 419, 4712, 8490);
// 或
redisson.getClusterNodesGroup().moveSlots("127.0.0.1:7000", "127.0.0.1:7002", 23, 419, 4712, 8490);

将番号为23,419,4712和8490的数据槽从127.0.0.1:7002节点迁移至127.0.0.1:7000节点。

以下范例展示了如何将一个范围的数据槽在集群的主节点之间迁移。

ClusterManagementTool.moveSlotsRange("127.0.0.1:7000", "127.0.0.1:7002", 51, 9811);
// 或
redisson.getClusterNodesGroup().moveSlotsRange("127.0.0.1:7000", "127.0.0.1:7002", 51, 9811);

将番号范围在[51, 9811](含)之间的数据槽从127.0.0.1:7002节点移动到127.0.0.1:7000节点。

4 、添加从节点

以下范例展示了如何向集群中添加从节点。

ClusterManagementTool.addSlaveNode("127.0.0.1:7000", "127.0.0.1:7003");
// 或
redisson.getClusterNodesGroup().addSlaveNode("127.0.0.1:7003");

将127.0.0.1:7003作为从节点添加至127.0.0.1:7000所在的集群里。

5、 添加主节点

以下范例展示了如何向集群中添加主节点。

ClusterManagementTool.addMasterNode("127.0.0.1:7000", "127.0.0.1:7004");
// 或
redisson.getClusterNodesGroup().addMasterNode("127.0.0.1:7004");

将127.0.0.1:7004作为主节点添加至127.0.0.1:7000所在的集群里。 Adds master node 127.0.0.1:7004 to cluster where 127.0.0.1:7000 participate in

二、独立节点模式

1、 概述

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

2、配置方法

2.1. 配置参数

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

mapReduceWorkers (MapReduce的工作者数量)

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

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

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

redissonNodeInitializer(初始化监听器)

默认值:null

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

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: 0executorServiceThreads: 0
executorServiceWorkers:myService1: 123myService2: 421
redissonNodeInitializer: !<org.mycompany.MyRedissonNodeInitializer> {}

3、 初始化监听器

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

public class MyRedissonNodeInitializer implements RedissonNodeInitializer {@Overridepublic 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());}}

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();

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之类的参数。

6、Docker方式运行方法

无现有Redis环境:

  1. 首先运行Redis: docker run -d --name redis-node redis
  2. 再运行Redisson Node: docker run -d --network container:redis-node -e JAVA_OPTS="<java-opts>" -v <path-to-config>:/opt/redisson-node/redisson.conf redisson/redisson-node
  3. <path-to-config> - Redisson Node的JSON或YAML配置文件路径 <java-opts> - JAVA虚拟机的运行参数

有现有Redis环境:

  1. 运行Redisson Node: docker run -d -e JAVA_OPTS="<java-opts>" -v <path-to-config>:/opt/redisson-node/redisson.conf redisson/redisson-node
  2. <path-to-config> - Redisson Node的JSON或YAML配置文件路径 <java-opts> - JAVA虚拟机的运行参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/71936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(其他) 剑指 Offer 46. 把数字翻译成字符串 ——【Leetcode每日一题】

❓ 剑指 Offer 46. 把数字翻译成字符串 难度&#xff1a;中等 给定一个数字&#xff0c;我们按照如下规则把它翻译为字符串&#xff1a;0 翻译成 “a” &#xff0c;1 翻译成 “b”&#xff0c;……&#xff0c;11 翻译成 “l”&#xff0c;……&#xff0c;25 翻译成 “z”。…

springcloud3 注册中心以及cloud启动原理总结(含面试)

一 Springcloud微服务面试题 1.1 为何使用注册中心 1)问题描述 在多个单体微服务之间&#xff0c;可以直接通过http请求进行通信&#xff0c;但是存在以下问题&#xff1a; 1.调用服务提供者时需要写ip和端口&#xff0c;如果出现ip和端口进行了修改&#xff0c;没有及时告…

微信小程序开发---基本组件的使用

目录 一、scroll-view &#xff08;1&#xff09;作用 &#xff08;2&#xff09;用法 二、swiper和swiper-item &#xff08;1&#xff09;作用 &#xff08;2&#xff09;用法 三、text &#xff08;1&#xff09;作用 &#xff08;2&#xff09;使用 四、rich-tex…

【面试经典150题】H 指数

题目链接 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义&#xff1a;h 代表“高引用次数” &#xff0c;一名科研人员的 h 指数 是指他&#xff08;她&#x…

C# 中什么是重写(子类改写父类方法)

方法重写是指在继承关系中&#xff0c;子类重新实现父类或基类的某个方法。这种方法允许子类根据需要修改或扩展父类或基类的方法功能。在面向对象编程中&#xff0c;方法重写是一种多态的表现形式&#xff0c;它使得子类可以根据不同的需求和场景提供不同的方法实现。 方法重…

智慧公厕是将数据、技术、业务深度融合的公共厕所敏捷化“操作系统”

文明社会的进步离不开公共设施的不断创新和提升。而在这些公共设施中&#xff0c;公共厕所一直是一个备受关注和改善的领域。近年来&#xff0c;随着智慧城市建设的推进&#xff0c;智慧公厕成为了城市管理的重要一环。智慧公厕不仅仅是为公众提供方便和舒适的便利设施&#xf…

如何使用Puppeteer进行金融数据抓取和预测

导语 Puppeteer是一个基于Node.js的库&#xff0c;可以用来控制Chrome或Chromium浏览器&#xff0c;实现网页操作、截图、PDF生成等功能。本文将介绍如何使用Puppeteer进行金融数据抓取和预测&#xff0c;以及如何使用亿牛云爬虫代理提高爬虫效果。 概述 金融数据抓取是指从…

Java HashMap源码学习

Java HashMap源码学习 基本使用 包含创建&#xff0c;添加&#xff0c;删除&#xff0c;迭代&#xff0c;打印 val map java.util.HashMap<Int, Int>() map.put(1, 2) map.put(2, 2) map.put(3, 2) map.remove(1) map.forEach {println("it.key${it.key}, it.va…

Cocos独立游戏开发框架中的日志模块:Bug无所遁形

引言 本系列是《8年主程手把手打造Cocos独立游戏开发框架》&#xff0c;欢迎大家关注分享收藏订阅。 在Cocos独立游戏开发框架中&#xff0c;一个强大的日志模块是不可或缺的组成部分。日志不仅仅是记录应用程序的运行状态&#xff0c;还可以用于故障排除、性能监测和安全审计…

26.篮球练习

题目 Description 小徐酷爱打篮球&#xff0c;在小学期的前两周半都在练习篮球。 今天&#xff0c;小徐想要练习如何突破。练习场地可由如下所示的网格图表示&#xff0c;图中的位置可用坐标表示。 其中A点(0,0)为小徐的起始位置&#xff0c;B点(n,m)为小徐想要到达的位置。…

高教社杯数模竞赛特辑论文篇-2018年D题:汽车总装线配置的优化模型研究

目录 摘 要 1. 问题的重述 1.1 装配要求 1.2 喷涂要求 1.3 需要解决的问题 2. 问

python中如何使用正则表达匹配\本身?(文末赠书)

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 将军向宠&#xff0c;性行淑均。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python钻石群【空】问了一个Python正则表达式的问题&#xff0c;一起…

PageHelper分页原理解析

大家好&#xff0c;我是Leo! 今天给大家带来的是关于PageHelper原理的解析&#xff0c;最近遇到一个SQL优化的问题&#xff0c;顺便研究了一下PageHelper的原理&#xff0c;毕竟也是比较常用&#xff0c;源码也比较好看的懂&#xff0c;如果感兴趣的小伙伴可以跟着过程去DEBUG源…

tcp字节传输(java)-自定义包头和数据识别

1、背景 tcp传输的时候会自动拆包&#xff0c;因此服务端接收的数据段可能跟客户端发送过来的数据段长度不一致&#xff0c;比如客户端一次发送10000个字节。但是服务端接收了两次才接收完整&#xff08;例如第一次接收6000字节&#xff0c;第二次接收4000字节&#xff09;。但…

vue3 watch watchEffect

watch & watchEffect 函数都是监听器, 用于监视数据的变化; watch 有惰性&#xff0c;watchEffect 无惰性&#xff1b;watch 需要指定具体的监视属性&#xff0c;watchEffect 不需要指定具体的监视属性和配置参数&#xff0c;会自动感知代码依赖&#xff1b;watch 能获取到…

【Web_接口测试_Python3_日期时间库】Arrow获取过去/当前未来时间日期、格式化时间日期、转换时间戳、获取不同时区时间日期等

## 简介 Arrow是一个 Python 库&#xff0c;它提供了一种明智且人性化的方法来创建、操作、格式化和转换日期、时间和时间戳。它实现并更新 datetime 类型&#xff0c;填补了功能上的空白&#xff0c;并提供了支持许多常见创建方案的智能模块 API。简而言之&#xff0c;它可以帮…

AI云服务平台大全:GPU租用 | App托管 | MLOps平台

我们搜集整理了国内外主要的深度学习云服务商&#xff0c;包括云GPU供应商、WebApp托管商和MLOps平台商。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 1、云GPU供应商 只有一台笔记本电脑&#x1f4bb;不足以运行你的AI模型&#xff0c;忘记它吧&#xff0c;使用云 …

解密Spring Cloud Alibaba核心技术,实战案例书现世

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作者&#x1f3c6;&#xff0c;阿里云专家博主&#x1f3…

晨启,MSP430开发板,51开发板,原理图,PCB图

下载&#xff1a;https://github.com/xddun/blog_code_search

【算法训练-链表 五】【求和】:链表相加(逆序)、链表相加II(顺序)

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【链表相加】&#xff0c;使用【链表】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…