25 redis 中 cluster 集群的工作模式

前言

我们这里首先来看 redis 这边实现比较复杂的 cluster集群模式 

整个 cluster集群 中会包含多对 Master+Slave 的组合, 然后这多对 Master+Slave 来分解 16384 个 slot

然后 客户端这边 set, get 的时候, 先根据 key 计算对应存储的 slot, 然后 服务器这边响应 MOVED + 目标机器 给客户端, 然后客户端这边 重新连接目标机器, 然后 将原有的命令发送到 目标机器上面

服务器这边主要是如果目标slot在本机, 则进行业务处理, 否则进行一个 转发的处理

客户端这边的处理就是, 向服务器发送命令, 如果服务器正常响应, 则处理正常, 如果服务器返回 MOVED + 目标机器, 则连接目标机器, 然后发送命令 

所以 这个集群其实就是 转发 + 几对主从, 来实现的集群, 然后 主从本身提供了服务的高可用, 多备份, 完整性, 一致性 

转发 + 几对主从, 提升了集群的处理效率, 吞吐量等等 

 

 

客户端发送 set 命令

在客户端上面发送命令 “set name4 jerry”

ca791baea52e4049903cd554fc049808.png

 

 

服务器这边的 keyHash 处理

服务器这边的转发处理如下, 这里是转发的最终结果 

客户端目前连接的是 “192.168.220.132:7004”, 然后这里服务器根据 ”name4” 计算, 需要转发的机器是 “192.168.220.132:7005”, 以及 slot 是 8736

ffca7dcb379548248c56aa84e7af8923.png

 

计算 slot 的方式如下, 传入 “name4” 然后根据 keyHashSlot 进行 slot 的计算, 具体的计算规则 我们可以不用关心, 只需要知道 一个 key 会计算到一个固定的 slot 就行 

cd772f67a40d4d389caa1f4ebd1dd403.png

 

计算的方式如下, 如果是包含 “{” 和 “}” 计算 之间的部分, 基于 crc16(str) % 16384

否则计算 crc16(key) % 16384

a62d49caa9d8473292cd88005a1930dc.png

 

 

客户端这边的转发处理

这里打印了日志, 更新了 config.hostip, config.hostport 以及刷新了 prompt 的信息 

a56f8d0ff4c249c9bfc0c64339897e48.png

 

然后在外面的发送命令的循环中, 会重新和目标服务器建立间接, 然后重新发送命令 

cfa8629eaa094274adb92049ec51cd58.png

 

然后转发到目标服务端这边的时候, 客户端这边 调用堆栈如下

e43051ae732842a0b4596b847f74ac3f.png

 

 

目标服务端这边的业务处理

服务器这边的处理如下, 这个就是 常规意义上的真实的 set 命令的落地处理了 

39f3ecb0383d4eb99e83ce06bd2cc7c8.png

 

在 processCommand 中, 调用真实业务处理的是在这里, 在处理的末尾了 

7401f36bacab49268002f24509d2acff.png

 

然后上面的计算 keyHash, 计算集群节点跳转的处理, 是在上面的地方 

如果是计算出来, 是其他节点, 才跳转, 否则 继续往后走, 走正常执行业务的处理 

497b916aef2a44b68634b12aab4fa847.png

 

 

 

 

 

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

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

相关文章

飞速(FS)100G ZR4 光模块80km长距离传输

如今,100G QSFP28光模块已经被广泛部署在100m到40km的范围内。然而,传统的100G QSFP28模块面临一个挑战,因为它们的设计仅限于不超过40km的距离。超出此范围,色散、光衰减等问题就会增加,导致信噪比(SNR&am…

【C语言】自定义类型:结构体深入解析(一)

🌈write in front :🔍个人主页 : 啊森要自信的主页 ✏️真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝>希望看完我的文章对你有小小的帮助&am…

Sharding-Jdbc(5):Sharding-Jdbc通过配置文件形式配置分表

1 项目目录 2 配置maven <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…

LeetCode Hot100 51.N皇后

题目&#xff1a; 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的…

微机原理与接口技术——中断系统

文章目录 一、中断指令概念1、中断类型码2、中断向量3、中断向量表简述接收到中断指令后操作 二、8086中断指令开中断指令&#xff1a;STI关中断指令&#xff1a;CLI软件中断指令&#xff1a;INT n中断返回指令 IRET 三、微机系统中断分类四、CPU响应可屏蔽与非屏蔽中断的条件响…

34 无聊的小明

数组存放每一次运算后的结果&#xff0c;若有重复则满足小明心意。 #include <iostream> using namespace::std; using std::cout; using std::cin; int pfh(int n) {int sum 0;while(n ! 0){int tn%10;sum sumt*t;n n/10;}return sum; }int wlxm(int n) {int js0;i…

【LeetCode刷题-树】--236.二叉树的最近公共祖先

236.二叉树的最近公共祖先 方法&#xff1a;使用哈希表存储父节点 利用哈希表存储所有节点的父节点&#xff0c;然后就可以利用节点的父节点信息从p节点开始不断向上跳&#xff0c;并记录已经访问过的节点&#xff0c;再从q节点开始不断向上跳&#xff0c;如果碰到已经访问过的…

WebGL开发EDA软件

WebGL是一种用于在Web浏览器中进行高性能图形渲染的JavaScript API&#xff0c;通常用于开发与图形、3D模型渲染相关的Web应用。在EDA&#xff08;Electronic Design Automation&#xff09;软件的开发中&#xff0c;涉及到电子设计和电路仿真等方面&#xff0c;WebGL可以用于创…

使用P3口流水点亮8位LED

#include<reg51.h> //包含单片机寄存器的头文件 /**************************************** 函数功能&#xff1a;延时一段时间 *****************************************/ void delay(void) { unsigned char i,j; for(i0;i<250;i) fo…

ansible远程操作主机功能(1)

自动化运维&#xff08;playbook剧本yaml&#xff09; 是基于Python开发的配置管理和应用部署工具。自动化运维中&#xff0c;现在是异军突起。 Ansible能批量配置&#xff0c;部署&#xff0c;管理上千台主机&#xff0c;类似于Xshell的一键输入的工具&#xff0c;不需要每次…

从零开始在Linux服务器配置并运行YOLO8+Web项目

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f49e;当前专栏&#xff1a; 神经网络&#xff08;随缘更新&#xff09; ✨特色…

【PHD申请文书】motivation letter|不限字数|Medical Imaging and Application

本文目录 APPLICATION ESSAYCriticism思考 Ref: https://essayforum.com/letters/tryst-technology-motivation-erasmus-degree-85383/ APPLICATION ESSAY My tryst with technology - motivation letter for Erasmus Degree in Medical Imaging and Application 原文机翻My…