分片架构,Redis Cluster 分析

news2024/10/6 1:42:35

分片架构解决的问题

通过堆机器,提升读写性能,与存储性能

分片架构设计要点

分片规则 

选择Cardinality大的作为分片键,尽可能保证数据分布均匀

常见分片键: 基于主键(业务型数据),基于时间(流水型数据)

常见分片策略:

分片策略

实现举例

数据分布

以后扩展

基于Hash

hash(分片键)%分片数

一致性hash算法

数据分布均匀

不易扩容,扩容需要数据迁移

范围分片

例如按年分,按月,按日

数据分表可能不均匀

易扩展,扩展不需要数据迁移

路由规则

客户端如何找到数据所在分片

  •  静态路由: 配置文件。特点: 简单,不能扩展再平衡,例如:Mysql分表
  • 动态路由:实现复制,支持动态扩展,再平衡

动态路由方式

基本流程

特点

举例

配置中心

配置中心记录分片信息,客户端先访问配置中心,

获取分片信息之后进行读写操作

支持大规模集群,配置中心需要独立部署,需要高可用

MongoDB的Sharding模式

路由转发

所有分片都保存路由信息,客户端请求任意分片,

获取分片信息之后进行读写操作

架构简单,一般利用gossip协议,不支持大规模集群

Redis Cluster (官方推荐1000,实际建议100)

高可用

备份方式

特点

举例

独立备份

架构简单,硬件成本高,分片级别的复制

Mysql ,Redis等

相互备份

架构复杂,硬件成本低,数据块级别的复制

ElasticSearch 等

redis cluster 分析

特点

理论支持1000台,实际建议100台以内。 高性能,线性可扩展,无代理,异步复制。

架构图- 来自阿里云溪社区

分片规则

分片键

redis的key

分片方式

类似一致性Hash, 通过CRC16算法计算出来的哈希值,对16384(2^14)取模,取模之后得到的值就是对应的槽位,然后每个Redis节点都会负责处理一部分的槽位。

扩展1 一般hash算法缺点

hash(键值)%分片数量,如果有分片挂掉,分片数量会下降,整个集群会失效。

扩展2 一致性hash算法

CRC16算法计算出来的哈希值,对2^32取模

实例也分布在圆环(0-2^32)上,我们在圆环上按照顺时针的顺序找到第一个实例

实例可能分布不均匀,采用虚拟节点机制解决

路由规则

路由转发模式,一般利用gossip协议,所有分片都保存路由信息,客户端请求任意分片

集群为了分布均匀,再平衡,或,添加,删除master实例,存在重定向的情况。

重定向

场景

命令

说明

全部迁移完成的情况下

MOVED命令

1.MOVED把客户端所请求数据的最新实例地址返返回客户端

2.更新客户端缓存的哈希槽分配信息

哈希槽数据还在迁移中

ASK

1.ASK 命令把客户端所请求数据的最新实例地址返回给客户端

2.客户端需要给目标实例 发送 ASKING 命令,然后再发送操作命令

3.不更新客户端缓存的哈希槽分配信息

备份方式

独立备份

故障转移

某一个节点认为A宕机了,那么此时是主观宕机

集群内超过半数的节点认为A挂了, 那么此时A就会被标记为客观宕机

从A节点的slave节点中选举出一个,将其切换成新的master对外提供服务

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

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

相关文章

JavaScript高级四、高阶技巧

零、文章目录 JavaScript高级四、高阶技巧 1、深浅拷贝 首先浅拷贝和深拷贝只针对引用类型 (1)浅拷贝 浅拷贝:拷贝对象的属性的值(简单类型存的值就是值本身,引用类型存的值是对象的堆地址)&#xff0c…

windows里怎么杀死一个进程?

我们可以使用 taskkill 命令,可以使用该工具按照进程 ID (PID) 或映像名称终止任务。 显示帮助消息: taskkill /?参数列表: /S:system:指定要连接的远程系统。/U:[domain\]user:指定应该在哪…

【ESP-01S / ESP8266 AT指令连接阿里云物联网平台】

ESP-01S / ESP8266 AT指令连接阿里云物联网平台 阿里云物联网平台新建设备获取AT参数 AT指令介绍连接阿里云AT指令介绍MQTT固件固件下载硬件连接固件烧录 串口助手调试硬件连接测试指令 AT_Command移植总结问题排查 源码获取 关注星标公众号,不错过精彩内容 作者 | …

【简单实用框架】【十大排序算法直接调用】【可移植】

☀️博客主页:CSDN博客主页💨本文由 萌萌的小木屋 原创,首发于 CSDN💢🔥学习专栏推荐:面试汇总❗️游戏框架专栏推荐:游戏实用框架专栏⛅️点赞 👍 收藏 ⭐留言 📝&#…

JeecgBoot企业级开发中实现自定义导出EXCEL的前端表格字段功能

文章目录 如何在后端实现导出前端列表字段到Excel功能需求前端的实现1. 提供一个导出的点击函数2.引入组件中的userMethod3.tableProps中导出中添加对应的查询参数4. 编写导出函数 后端逻辑的实现1.Controller层2.创建Modal类3.Sevice层 检验成果总结 如何在后端实现导出前端列…

【Android Gradle 插件】更新依赖方式,同时解决github三方库引用无法使用问题

首先看一下完整的 settings.gradle 依赖介绍 /* pluginManagement 脚本块,用于配置Gradle插件的Maven仓库,配置的是构建过程中,使用的仓库 ; pluginManagement 脚本块中的 repositories 配置 , 对应之前的 buildscript 中的 repositories 配置 ; */ pluginManagement {reposit…

技术分享 | 一文了解 MySQL Optimizer Trace 的神奇功效

作者:Mutlis CSDN & 阿里云 & 知乎 等平台优质作者,擅长Oracle & MySQL等主流数据库系统的维护和管理等 本文来源:原创投稿 前言 对于 MySQL 5.6 以及之前的版本来说,查询优化器就像是一个黑盒子一样,…

迪赛智慧数——柱状图(基本柱状图):购买雪糕考虑的因素

效果图 冰淇淋季节来袭,因其细腻凉爽的口感和浓郁的口味被广大消费者所钟爱,近年来已经从一款传统的解暑冷冻饮品转变为一种原料丰富、口味多元、追求健康、愉悦和高品质生活方式的休闲食品。据数据显示,82.2%女性、82.3%男性消费…

chatgpt赋能python:Python中乘方的介绍

Python中乘方的介绍 在Python中,乘方运算指数运算,常用符号为“”(例如2的3次方为23)。使用乘方运算可以快速地进行数值计算,尤其是在科学和工程领域中。 为什么要使用乘方运算? 乘方运算主要用于处理大…

NeRF算法

Instant-ngp Instant-ngp简单介绍 Instant-ngp论文链接 英伟达实现的github链接 taichi实现Instant-ngp taichi实现的github链接 渲染 采用体素渲染方法,从相机光线出发,逐步采样3D场景中的三维坐标点的颜色,即可渲染出3D画面。如果直接将3…

进阶神册,Redis+Nginx+设计模式+Spring全家桶+Dubbo核心技术笔记

最近花了很长的时间去搜罗Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档。昨天也是终于全部整理好了,今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方…

vue3组件通信详解

vue3组件通信方式有以下几种:porps,$emit, bus,v-model,useAttrs,$ref/$parent,provide/inject,pinia,slot。下面将逐一讲解。 目录 1.porps:实现父子组件通…

V7.0_增加消息队列功能

一,功能描述 增加消息队列;使用自定义copy功能时,子进程copy结束后向父进程发送消息(通过消息队列)然后exit;此时因wait()而处于阻塞态的父进程终于解除了阻塞并且从队列中读取到消…

【云原生-K8s-1】kubeadm搭建k8s集群(一主两从)完整教程及kubernetes简介

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录 Kubernetes简介1 kubernetes架构1.1m…

清凉一夏小风扇-React版

这里写目录标题 前言 一、效果二、代码分享三、总结 前言 本片文章主要是做一个小练习,通过react来制作一个风扇练习css动画。 vue3实现部分看这里–> 一、效果 二、代码分享 1、主体框架 “react”: “^18.2.0” “sass”: “^1.62.1” 2、主要技术点 使用事…

企业上云容灾如何实现碳中和?

随着能源成本的增加和数据消费的激增,“电耗”和“碳排放”成为今年世界移动通信大会热议的话题。目前,ICT行业耗电量约占全球用电量的7%。预计到2040年,ICT行业碳排放量占全球排放量的比例将上升至14%。 容灾是企业为了在灾难时保证业务继续…

基于html+css的图展示99

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Log4j2 - JNDI 注入漏洞复现(CVE-2021-44228)

文章目录 Apache Log4j简介漏洞介绍影响版本漏洞编号影响组件应用 环境准备靶场搭建漏洞利用利用工具使用方式 反弹shell操作 漏洞修复建议 Apache Log4j简介 Apache log4j 是 Apache 的一个开源项目, Apache log4j2 是一个 Java 的日志记录工具。该工具重写了 log4…

03.hadoop上课笔记之hdfs环境的搭建和使用

1.启动网络 在windows任务管理器启动服务vm Dhcp #由动态ip变为静态 #启动网卡ifup ens33#修改网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33BOOTSTRAPstaticIPADDR192.168.202.101NETMASK255.255.255.0GATEWAY192.168.202.2DNS1192.168.202.2#重启网络 servic…

Vue动态路由在实际项目中的应用(包含前后台细节)

背景 近期做一个公司的门户网站,在产品和新闻这一块需要用到动态路由。本节博客以产品板块为例说一下动态路由的应用。 另外如果路由相关的基础知识有问题,可以查看我的这篇博客: Vue2路由的详细讲解 另外,这篇博客也会涉及到一…