Redis集群模式

1、常见的三种数据的集群存储模式

  1. full-mirror:全量镜像模式,单纯备份模式,各个节点数据相同,都包含了全量数据,仅主节点可写,保证了数据冗余和读的负载均衡。数据安全性高,横向扩展能力差,资源利用率不高。
  2. pure-sharding:数据分片,每个节点的数据不相同,所有节点中数据的并集就是全量数据。横向扩展能力强,资源利用率高,但是数据安全性低。
  3. mirrored-sharding:结合两种模式的优点,既满足高数据安全性要求,又能实现规模的横向扩展。

2、Redis集群的必要性和分类

  • 必要性:单实例服务存在单点故障,集群模式能提高服务的整体可用性。
  • 分类:
    • 主从复制(Replication):数据在主从间全量镜像,仅主节点可写,所有节点都可读,但仍不具备横向扩展能力。

      • 静态主从:在启动服务时,在配置文件中指定,给slave指定其从属的master,可以实现数据的备份和读操作的负载均衡,但是缺乏对master实例的高可用保障。

        redis-server --port 6380 slavaof 127.0.0.1 6379 //将6379配置为本实例的master

        还可以在服务运行过程中通过客户端命令手动改变实例的角色:

        redis > slaveof 127.0.0.1 6381 //将本实例的master改为6381

        redis > slaveof no one //将本实例从主从结构中独立出来,但会保留之前的数据

      • 利用哨兵(Sentinel )实现高可用:每个服务实例都启动一个哨兵守护进程,负责集群中节点状态的监控和主节点的选举,此时主节点也就实现了高可用。哨兵可以单实例管理单集群,也可以单实例管理多集群,还可以组成无中心哨兵集群,哨兵集群内部使用paxos理论进行协调管理。
    • 分布式集群(Cluster):
      • twemproxy:twitter开发的一个针对key提供路由功能的代理曾,代理层上方时客户端,下方是多个Redis服务实例,形成分片集群,客户端针对key的读写操作都必须经过代理层路由到分片集群中指定的服务实例上(key的hashcode对节点数量取模),这就实现了集群的横向扩展。

        • 缺点:
        1. 存在数据倾斜问题,一旦发生倾斜将不能成分利用集群资源,消除倾斜需要额外设计算法,耗时耗力。
        2. 代理层存在单点缺陷。
        3. 节点数量变动后必须对历史数据全量再分发。
      • 官方集群方案(3.x后):将整个集群划分为16384个逻辑slot,每个服务实例集群构成master-slave分片,各分片各自来认领一批逻辑slot。所有的key都会被路由到某个逻辑slot上,计算公式为【slot_num = crc16(key) % 16384】,式中crc16函数是16位循环冗余校验和函数。
        1. 当需要横向扩容时,旧节点让出一部分slot给新节点,这部分数据也随slot迁移到新节点上,这就避免了全量数据的重分发。
        2. 当发生数据倾斜时可以手动瓜分较重节点上的slot,实现数据的分摊,从而解决了倾斜问题。
        3. 每个分片都是一个master-slave结构,保证本分片内的高可用(当前模式将sentinel进程融合到了server进程中,方便分片内节点的状态和角色管理)。
        4. 每个分片的主节点都具有slot计算能力,当某个主节点接收到一个key的添加时,都会计算其应该归属的slot,如果恰好命中本分片,就存储数据,如果未命中则会告诉客户端让其重新计算。读数据时,分片主节点会计算key的slot,如果恰好命中则返回value,如果未命中则会返给正确的存储节点位置。
        5. 部署时至少要启动6各节点,三个分片,每个分片内一主一从。

3、Redis主从复制(哨兵模式)

  1. 一个Redis主服务拥有多个副本服务,形成master-slave结构。
  2. 只要网络正常,master会一直将自己的数据更新同步给slave,保持主从数据一致。
  3. 只有master能接收写命令,master和slave都可以接收读命令,实现读操作的负载均衡。

原文地址:https://www.cnblogs.com/JaxYoun/p/12336930.html

时间: 2024-10-09 16:39:29

Redis集群模式的相关文章

突破Java面试-Redis集群模式的原理

1 面试题 Redis集群模式的工作原理说一下?在集群模式下,key是如何寻址的?寻址都有哪些算法?了解一致性hash吗? 2 考点分析 Redis不断在发展-Redis cluster集群模式,可以做到在多台机器上,部署多个实例,每个实例存储一部分的数据,同时每个实例可以带上Redis从实例,自动确保说,如果Redis主实例挂了,会自动切换到redis从实例顶上来. 现在新版本,大家都是用Redis cluster的,也就是原生支持的集群模式,那么面试官肯定会就redis cluster对你来

7.redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?

作者:中华石杉 面试题 redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? 面试官心理分析 在前几年,redis 如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有 codis,或者 twemproxy,都有.有一些 redis 中间件,你读写 redis 中间件,redis 中间件负责将你的数据分布式存储在多台机器上的 redis 实例中. 这两年,redis 不断在发展

就publish/subscribe功能看redis集群模式下的队列技术(一)

Redis 简介 Redis 是完全开源免费的,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储. Redis支持数据的备份,即master-slave模式的数据备份. 性能极高 – Redis能读的速度是110000次/s

Redis集群模式部署

以下以Linux(CentOS)系统为例 1.1 下载和编译 $ wget http://download.redis.io/releases/redis-4.0.7.tar.gz $ tar xzf redis-4.0.7.tar.gz $ cd redis-4.0.7 $ make 1 2 3 4 编译完成后会在src目录下生成Redis服务端程序redis-server和客户端程序redis-cli. 1.2 启动服务 1.前台运行 src/redis-server 1 该方式启动默认为前

深入剖析Redis系列: Redis集群模式搭建与原理详解

前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 Redis 在 分布式 方面的需求.当遇到 单机内存.并发.流量 等瓶颈时,可以采用 Cluster 架构方案达到 负载均衡 的目的. 本文将从 集群方案.数据分布.搭建集群.节点通信.集群伸缩.请求路由.故障转移.集群运维 等几个方面介绍 Redis Cluster. 正文 1. Redis集群方

Redis集群模式介绍

前言: 一.为什么要使用redis 1,解决应用服务器的cpu和内存压力 2,减少io的读操作,减轻io的压力(内存中读取) 3,关系型数据库扩展性,不强,难以改变表的结构 二.优点 1,nosql数据库没有关联关系,数据结构简单,扩展容易 2,数据读写快,能够每秒胜任几十万的并发,处理速度快 三.使用场景 1,数据高并发读写 2,海量数据读写 3,对不规则数据也就是扩展性要求高的数据 四.不适合场景 1,需要事务支持,虽然它也有事务但是没有关系型数据库的那么成熟吧 2,基于sql进行操作 五.

Linux下配置Redis集群模式

配置机器1 在演示中,172.16.179.130为当前ubuntu机器的ip 在172.16.179.130上进?Desktop?录,创建conf?录 在conf?录下创建?件7000.conf,编辑内容如下 port 7000 bind 172.16.179.130 daemonize yes pidfile 7000.pid cluster-enabled yes cluster-config-file 7000_node.conf cluster-node-timeout 15000 a

Centos7安装Redis(集群模式)

环境:centos7.6 redis4.0模拟在一个Centos7下安装6个redis实例搭建集群 3主3从 安装wgetyum -y install wget 安装gccyum -y install gcc automake autoconf libtool make 下载rediscd /usr/local/softwarewget http://download.redis.io/releases/redis-4.0.0.tar.gz 解压tar -xzvf redis-4.0.0.tar

redis 集群模式

redis cluster 介绍 自动将数据进行分片,每个 master 上放一部分数据 提供内置的高可用支持,部分 master 不可用时,还是可以继续工作的 在 redis cluster 架构下,每个 redis 要放开两个端口号,比如一个是 6379,另外一个就是 加1w 的端口号,比如 16379. 16379 端口号是用来进行节点间通信的,也就是 cluster bus 的东西,cluster bus 的通信,用来进行故障检测.配置更新.故障转移授权.cluster bus 用了另外