当前位置: 首页 > news >正文

Redis Cluster架构和设计机制简单介绍

之前另一篇文章也介绍了 Redis Cluster (link,在文章的后半部分)

今天看到这一篇,简单说一下(http://hot66hot.iteye.com/blog/2050676)

 

作者的目标:Redis Cluster will support up to ~1000 nodes. 赞...

目前redis支持的cluster特性(已测试):

1):节点自动发现

2):slave->master 选举,集群容错

3):Hot resharding:在线分片

4):集群管理:cluster xxx

5):基于配置(nodes-port.conf)的集群管理

6):ASK 转向/MOVED 转向机制.

 

1)redis-cluster架构图

 

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的master节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->key

 

2) redis-cluster选举:容错

(1)选举过程是集群中所有master参与,如果半数以上master节点与故障节点通信超过(cluster-node-timeout),认为该节点故障,自动触发故障转移操作.

(2):什么时候整个集群不可用(cluster_state:fail)? 

    a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态.

ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.

    b:如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.

ps:当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误

 

二:redis cluster的使用

忽略。现在基本用单机版Redis,通过master-slave + (Partition 或者 Pre-sharding) 方式来进行。挺好。

 

redis-cluster客户端的一些坑.

1)cluster环境下slave默认不接受任何读写操作,在slave执行readonly命令后,可执行读操作

2)client端不支持多key操作(mget,mset等),但当keys集合对应的slot相同时支持mget操作见:hash_tag

3)不支持多数据库,只有一个db,select 0。

4)JedisCluster 没有针对byte[]的API,需要自己扩展(附件是我加的基于byte[]的BinaryJedisCluster  api)

 

转载于:https://www.cnblogs.com/charlesblc/p/6033570.html

相关文章:

  • Android View体系(六)从源码解析Activity的构成
  • EXCEL 读取
  • rip路由协议基本配置
  • [Unity3D]深度相机 Depth Camera
  • phpmyadmin安装教程及配置设置
  • 11.08---日记
  • 互斥量与信号量
  • 数据库备份那点事儿
  • maven 中使用jetty
  • 微软宣布Azure DNS全面通用
  • Flex 布局教程:语法篇
  • passwd命令--Linux命令应用大词典729个命令解读
  • 【阿里云资讯】马云为何还要做92届双11?
  • openstack出错记录
  • LAMP编译安装(四)——安装xcache-3.2.0
  • 【5+】跨webview多页面 触发事件(二)
  • C语言笔记(第一章:C语言编程)
  • Java超时控制的实现
  • js作用域和this的理解
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • SpriteKit 技巧之添加背景图片
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 简单数学运算程序(不定期更新)
  • 排序算法之--选择排序
  • 驱动程序原理
  • 如何用vue打造一个移动端音乐播放器
  • 思维导图—你不知道的JavaScript中卷
  • 听说你叫Java(二)–Servlet请求
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #pragma预处理命令
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $$$$GB2312-80区位编码表$$$$
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (原創) 物件導向與老子思想 (OO)
  • (转)h264中avc和flv数据的解析
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .bat批处理(一):@echo off
  • .Family_物联网
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET大文件上传知识整理
  • .net和jar包windows服务部署
  • .Net中wcf服务生成及调用
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [ABC294Ex] K-Coloring
  • [Android]竖直滑动选择器WheelView的实现