Redis 集群原理解析

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
全局流量管理 GTM,标准版 1个月
简介: Redis 集群原理解析

概述

Redis集群是redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能

一 节点

一个Redis集群由多个节点组成,最初他们都是相互独立的,他们都处于一个只包含自己的集群当中,但是要形成一个真正可用的集群,就必须将各个节点联系起来,构成一个包含多个节点的集群

连接各个节点通过 CLUSTER MEET 命令

连接成功后就可以将对方节点拉到自己所在的集群中,连接页可以称之为握手。节点的状态在redis中是通过clusterNode对象进行保存的

二 槽指派

Redis集群通过分片的方式来保存数据库中的键值对:集群中的整个数据库被分为16384个槽,数据库中的每个键都属于16384个槽中的其中一个,集群中的每个节点都可以处理0个或者最多16384个槽

当数据库中的16384个槽都有节点在处理时,集群处于上线状态,否则处于下线状态

通过 CLUSTER ADDSLOTS 命令,可以进行节点的槽指派

槽指排信息会记录在clusterNode对象的slots和numslot属性上。

当设置已经存在的数据,如 set msg "hello world"时,集群会先计算出msg属于哪个槽,然后判断槽属于哪一个节点,如果当前节点不是槽所在的节点,那么会返回moved错误,指引节点转向正在负责这个槽的节点进行数据的处理

三 重新分片

Redis的重新分片可以将任意数量已经指派给某个节点的槽改为指派给另一个节点,并且相关节点的键值对也移动到另一个节点

重新分片可以在线上进行,集群不用下线,并且源节点和目标节点都可以继续执行命令请求

四 ASK错误

当迁移过程中可能会发生错误,访问源节点时数据其实已经迁移到了目标节点,这时候会发出ask错误,并将请求指向目标节点

五 复制和故障转移

集群中的节点分为主节点和从节点,其中主节点复杂处理槽,从节点用于复制某个主节点,例如 7000,7001,7002为3个主节点,将7004,7005设置到集群里,添加为从节点。

集群各个节点会互相发送ping命令,来互相发现对方是不是存于下线状态,clusterNode中的flags记录了节点的状态,分为三个在线状态,疑似下线状态,下线状态,当半数以上负责处理槽的主节点报告某一主节点为疑似下线状态,那么这个主节点就会被标记为已下线。

六 选取新的主节点

当一个主节点下线了,那么剩下的主节点会进行投票给从节点,从从节点中选择一个新的主节点,当一个从节点获取到的票数大于N/2+1时,这个从节点就会晋升为主节点。这里要说一下,部署4个主节点和部署5个主节点在投票时其实是一样的,因为他们都是需要3张选票才能推选谁是主节点。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
20天前
|
存储 缓存 算法
HashMap深度解析:从原理到实战
HashMap,作为Java集合框架中的一个核心组件,以其高效的键值对存储和检索机制,在软件开发中扮演着举足轻重的角色。作为一名资深的AI工程师,深入理解HashMap的原理、历史、业务场景以及实战应用,对于提升数据处理和算法实现的效率至关重要。本文将通过手绘结构图、流程图,结合Java代码示例,全方位解析HashMap,帮助读者从理论到实践全面掌握这一关键技术。
67 13
|
2月前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
76 1
|
6天前
|
存储 物联网 大数据
探索阿里云 Flink 物化表:原理、优势与应用场景全解析
阿里云Flink的物化表是流批一体化平台中的关键特性,支持低延迟实时更新、灵活查询性能、无缝流批处理和高容错性。它广泛应用于电商、物联网和金融等领域,助力企业高效处理实时数据,提升业务决策能力。实践案例表明,物化表显著提高了交易欺诈损失率的控制和信贷审批效率,推动企业在数字化转型中取得竞争优势。
44 14
|
15天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
67 1
|
1月前
|
存储 NoSQL Redis
redis主从集群与分片集群的区别
主从集群通过主节点处理写操作并向从节点广播读操作,从节点处理读操作并复制主节点数据,优点在于提高读取性能、数据冗余及故障转移。分片集群则将数据分散存储于多节点,根据规则路由请求,优势在于横向扩展能力强,提升读写性能与存储容量,增强系统可用性和容错性。主从适用于简单场景,分片适合大规模高性能需求。
44 5
|
2月前
|
运维 持续交付 虚拟化
深入解析Docker容器化技术的核心原理
深入解析Docker容器化技术的核心原理
56 1
|
2月前
|
存储 供应链 算法
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景
62 0
|
2月前
|
JavaScript 前端开发 API
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
67 0
|
2月前
|
API 持续交付 网络架构
深入解析微服务架构:原理、优势与实践
深入解析微服务架构:原理、优势与实践
48 0
|
2月前
|
存储 供应链 物联网
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景

推荐镜像

更多