codis架构学习

news/2024/7/3 18:48:50/文章来源:https://www.cnblogs.com/BlueBlueSea/p/18275954

转自:https://jackeyzhe.github.io/2018/11/14/玩转Redis集群之Codis/

1.介绍

codis是一种redis 分布式集群解决方案,codis是基于多个redis实例做了一层路由层来进行数据路由,每个redis实例承担一定的数据分片。

  • Codis FE:集群管理界面。多个集群实例共享可以共享同一个前端展示页面;通过配置文件管理后端 codis-dashboard 列表,配置文件可自动更新。
  • Codis Proxy:客户端连接的 Redis 代理服务, 实现了 Redis 协议。 除部分命令不支持以外(不支持的命令列表),表现的和原生的 Redis 没有区别(就像 Twemproxy)。
    • proxy是无状态服务,可以同时部署多个 codis-proxy 实例;
    • 接受redis-client请求,并且把根据用户请求信息进行计算,得到相应的slot,并把redis client请求正确的路由到背后的物理实例上;每个proxy具有所有的solt信息,一个slot分配给哪个server group信息,以及知道一个servergroup谁是master,谁是slave。
    • 不同 codis-proxy 之间由 codis-dashboard 保证状态同步。
  • Codis Dashboard:集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的一致性。  
  •        对于同一个业务集群而言,同一个时刻 codis-dashboard 只能有 0个或者1个;
    • 所有对集群的修改都必须通过 codis-dashboard 完成。
  • codis_group:是一个逻辑概念,不具有对应的进程或者服务,只是proxy里的一个属性。
  •  Codis Server:基于 redis-3.2.8 分支开发。增加了额外的数据结构,以支持 slot 有关的操作以及数据迁移指令。
  • Storage:为集群状态提供外部存储,保存集群meta信息。提供 Namespace 概念,不同集群的会按照不同 product name 进行组织;目前仅提供了 Zookeeper、Etcd、Fs 三种实现。

2.原理

2.1 分片

Codis采用Pre-sharding的技术来实现数据分片,默认分为1024个slot(0-1023)。Codis在接收到命令时,先对key进行crc32运算,然后再对1024取余,得到的结果就是对应的slot。然后就可以将命令转发给slot对应的Redis实例进行处理了。

2.2 扩缩容

// 具体代码还得再学习下。 

2.3 缺点

当Redis Group的master挂掉时,codis不会自动将某个slave升为master,codis提供了一个叫做codis-ha的工具,这个工具通过dashboard提供RESTful API来实现自动主从切换。

 

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

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

相关文章

PTA作业7~8总结

目录1.前言:2.设计与分析:(1)第七次大作业(2)第八次大作业3.采坑心得:4.改进建议:5.总结: ---------------------------------------------------------------------------------------------------------------------------------- PTA作业总结1.前言:这次的作业相比于前几次…

02-单链表的操作

单链表的创建:头插法 #include <stdio.h> #include <malloc.h> #include <stdbool.h>typedef int ElemType; /*定义一个单链表*/ typedef struct LNode{ElemType data;/*下一个元素的地址指针*/struct LNode *next; } LNode,*LinkList;/***单链表的创建* @r…

Java7-8次大作业题目集总结性Blog

Java4~6次大作业题目集的总结性Blog前言这两次大作业无疑就是更好学会面向对象编程了,并且是新添加的信息能够合理处理然后使用。 题量不大,只是在之前的代码上运用开闭原则修改代码,但我还是不能能很好掌握开闭原则。 难度有点大了,第八次大作业在之前的基础上添加了并联…

Linux系统基本介绍

一、Linux系统基本介绍 【1】、Linux操作系统特点多任务的操作系统多任务操作系统严格区分大小写Linux一切皆文件所有文件的起点都是“/”根目录对于Linux操作系统来说文件的后缀名没有任何实际意义,他不像是Windows操作系统中的后缀名代表了本文件是什么类型的文件。Linux中文…

STM32延时函数

STM32延时函数(查询定时器实现) 之前在STM32中使用延时函数的时候,都是直接使用,并不了解其中的原理。经过查阅资料,这里记录一下大致原理。 首先直接贴出来延时函数delay.c,通过查询的SysTick Timer的STK_CTRL寄存器的计数标志位COUNTFLAG方式实现,其中SysTick是一个结构…

OOP最后两次作业总结

OPP最后两次作业总结 前言 两次题目集其实都是在前面的基础上进行迭代,第一次作业说实话我没花什么时间,毕竟我从写第一次PTA就是给电器使用两个接点,我从拿到题目到达到及格分只用了半天时间,然后最后又花了点时间测试几个样例,拿到了82分。然后最后一次作业嘛,我几乎是…

游戏常用运行库 合集 | Game Runtime Libraries Package(2.1.24.0618)

软件简介: 游戏常用运行库 合集 整合了许多游戏会用到的运行库,支持 Windows XP – Windows 11 系统,并且支持自动检测系统勾选推荐的运行库,方便快捷。 本版特点: By:mefcl整合常见最新游戏所需运行库根据系统自动勾选推荐的版本纯净安装包无病毒和弹窗行为支持静默安装…

背包DP——混合背包

顾名思义,混合背包就是将前面三种的背包问题(01,完全,多重)混合起来,有的只能取一次,有的能取无限次,有的只能取 k 次。 正解特解 部分情况下,如小数据,可以转换成多重背包(把完全情况的数量换成足够大,如1e7,就把完全相对变成了多重) 例题 https://www.luogu.co…

cent os配置docker(解决2024.6月docker镜像拉取问题)

docker拉取镜像目前已经失效,多方查找目前试了试下面这个还可以用 首先执行以下命令安装dockeruname -r yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum …

Field stock doesnt have a default value

当你遇到 "Field stock doesnt have a default value"​ 这个错误时,这意味着你正在尝试插入一条新记录到数据库中,但是涉及的 stock 字段没有提供一个值,同时该字段在数据库表定义中也没有设置默认值(default value),并且数据库配置为严格模式,不允许NULL值或…

南昌航空大学软件学院23201823第三次blog

一、前言 这是最后一次blog了,是一些关于题目集7~8次的总结以及这一个学期对于PTA题目集的总结了。最后这两次的题目难度其实我并不是非常了解,大抵是因为我已经来不及挽救了,但是我还是想说其实这几次题目的难度感觉并没有想象中的触不可及,而是我自己没有花足够的心思去了…

中国城市降雨量历史记录查询 All In One

中国城市降雨量历史记录查询 All In One 降雨量 历史记录中国城市降雨量历史记录查询 All In One降雨量 历史记录https://www.ceicdata.com.cn/zh-hans/china/precipitation 中国 降水量:河南:郑州 1990 - 2022 | 月 | 毫米 | 气象局 降水量:河南:郑州在12-01-2022达1.500毫米,…

oracle安装调用图形化失败

报错现象: [grid@19c01 grid]$ ./gridSetup.sh ERROR: Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable.No X11 DISPLAY variable was set, but this program performed an operatio…

Kubernetes-高可用k8s集群部署(多Master节点二进制方式)

一、安装Docker 配置docker的yum源地址 yum -y install wget wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum provides docker-ce 安装指定的docker版本 yum install -y docker-ce-20.10.7 docker-ce-cli-20…

23201813-第三次blog作业

前言: 这学期已经接近了尾声,java和面向对象的学习也已经接近结束,在这门课程的最后时间里,剩余的两次pta我都没有完成,一部分原因是后面的题目集感觉好难,然后要经过好多迭代,还有期末的考试学科很多,有大部分的时间用来复习,所以对pta就基本上放弃了,所以最后两个题…

一个HTML页面demo

代码:<!--* @Description: 一个博客页面布局,加上一些CSS和JS样式* @Author: zhangyh* @Date: 2024-06-29 15:25:16* @LastEditTime: 2024-06-29 23:06:12* @LastEditors: zhangyh* Copyright (c) 2024 by zhangyinghui181217@163.com, All Rights Reserved. --><!…

WPF网格类型像素着色器

由于WPF只能写像素着色器,没法写顶点着色器,所以只能在这上面做文章了 刚好有个纹理坐标TEXCOORD输入可用,而且值的范围是已知的0-1,左上角是原点,这就好办了 例子 索引 二分网格使用ceil 0-1移动定义域到-0.5 - 0.5,然后向上取整变成 0 / 1float4 main(float2 uv : TEXC…

LLM大模型: RAG两大核心利器: M3E-embedding和bge-rerank

RAG的效果好不好,最核心依赖两点:文本embedding语义提取的好不好,rerank的排序效果好不好(包含正确答案的文本是不是排在前面)!各自使用的环节如下:1、文本embedding的提取:理论上讲,任何transformer架构的encoder部分都可用于生成token的embedding,然后采用合适的po…

oop-PTA题目集7~8总结

一、前言 第七次和第八次的题目集中的题目均是在前两次的电路模拟程序中增加新的内容,难度相较前面两次的题目有明显增大,主要是电路结构更加复杂,比如多并联、并联包含并联等较为特殊的情况,另外,新增了一些需要特殊处理的电器设备,比如有三个引脚的互斥开关、与其他设备…

lamp lump

为网站备案老王:记得一定要完成ICP备案,才可以通过网站对外提供互联网信息服务! 老王:根据 《互联网信息服务管理办法》以及 《非经营性互联网信息服务备案管理办法》,国家对非经营性互联网信息服务实行备案制度,对经营性互联网信息服务实行许可制度。未取得许可或者未履…