Redis_ 集群 _Twitter_Twemproxy 模式_1|学习笔记

简介: 快速学习 Redis_集群 _Twitter_Twemproxy 模式_1

开发者学堂课程【Redis 数据库入门Redis_ 集群 _Twitter_Twemproxy 模式_1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/15/detail/61


Redis_集群_Twitter_Twemproxy模式_1


内容介绍

一、Redis 主从复制

二、Redis 哨兵

三、Redis Twemproxy


一、Redis 主从复制

1.主从复制 Replication

(1)一个 Redis 服务可以有多个该服务的复制品,这个 Redis 服务称为 Master,其他复制品称为 Slaves

只要网络连接正常, Master 会一直将自己的数据更新同步给 Slaves,保持主从同步

只有 Master 可以执行写命令, Slaves 只能执行读命令

image.png      image.png

  1. 从服务器执行客户端发送的读命令,比如 GET、LRANGE、SMEMMBERS、HGET ZRANGE 等等

客户端可以连接 Slaves 执行读请求,来降低 Master 的读压力

image.jpeg

2.主从复制创建

  • redis-server--slaveof<master-ip><masterport, 配置前服务称为某 Redis 服务的 Slave

#redis-server--port6380--slaveof1270.016379

  • SLAVEOFhostport  命令,将当前服务器状态从 Master 修改为别的服务器的 Slave

redis>SLAVEOF 192168116379,将服务器转换为 Slave

redis>SLAVEOF NO ONE,将服务器重新恢复到 Master,不会丢弃已同步数据

  • 配置方式:启动时,服务器读取配置文件,并自动成为指定服务器的从服务器

slaveof<masterip> <masterport>

slaveof1270.0.16379

3.主从复制演示 

  • redis-server--slaveof<masterip><master-port>
  • #redis-server--port6380--slaveof 127.0.0.16379
  • #redis-cli-p6380-n0
  • 测试 Master 和 Slave 的读写

4.主从复制问题

  • 一个 Master 可以有多个 Slaves
  • Slave 下线,只是读请求的处理性能下降
  • Master 下线,写请求无法执行
  • 其中一台 Slave 使用 SLAVEOFno one  命令成为Master ,

其它 Slaves 执行 SLAVEOF 命令指向这个新的 Master ,从它这里同步数据

以上过程是手动的,能够实现自动,这就需要 Sentinel 哨兵,实现故障转移 Failover 操作


二、Redis 哨兵

1. 高可用 Sentinel

  • 官方提供的高可用方案,可以用它管理多个 Redis 服务实例
  • 编译后产生 redis-sentinel 程序文件
  • Redis Sentinel 是一个分布式系统,可以在一个架构中运行多

Sentinel 进程

2. 启动 Sentinel

  • src 目录下产生 redis-sentinel 程序文件复制到 $REDIS HOME/bin
  • 启动一个运行在 Sentinel 模式下的 Redis 服务实例

redis-sentinel

redis-server/path/to/sentinelconf--sentinel

  • Redis Sentinel 是一个分布式系统,可以在一个架构中运行多个Sentinel 进程

3. 监控 Monitoring

  • Sentinel 会不断检查 Master 和 Slaves 是否正常
  • 每一个Sentinel可以监控任意多个 Master 和该 Master 下的 Slaves

image.png

4.Sentinel 网络

(1)监控同一个 Master 的 Sentinel 会自动连接,组成一个分布式的 Sentinel 网络,互相通信并交换彼此关于被监视服务器的信息

下图中3个 Sentinel 监控着 S1和它的2个 Slave

image.png

(2)服务器下线

  • 当一个 sentinel 认为被监视的服务器已经下线时,它会向网络中的其他 Sentinel 进行确认,判断该服务器是否真的已经下线
  • 如果下线的服务器为主服务器,那么 sentinel 网络将对下线主服务器进行自动故障转移,通过将下线主服务器的某个从服务器提升为新的主服务器,并让其从服务器转为复制新的主服务器,以此来让系统重新回到上线的状态

image.png

(3)服务器下线后重新上线

image.png

 

5.Sentinel 配置文件

  • 至少包含一个监控配置选项,用于指定被监控 Master 的相关信息
  • Sentinel monitor<name><ip><port><quorum>,例如

sentinel monitor mymaster 1270.0163792

监视 mymaster 的主服务器,服务器 ip 和端口,将这个主服务器判断为下线失效至少需要2个 Sentinel 同意,如果多数 Sentinel 同意才会执行故障转移

  • Sentinel 会根据 Master 的配置自动发现 Master 的 Slaves
  • Sentinel 默认端口号为26379

6.Sentinel 实验

image.png

7.Sentinel 总结

  • 主从复制,解决了读请求的分担,从节点下线,会使得读请求能力有所下降
  • Master 只有一个,写请求单点问题
  • Sentinel 会在 Master 下线后自动执行 Failover 操作,提升一台 Slave 为 Master ,并让其他 Slaves 重新成为新 Master 的 SlavesI
  • 主从复制+哨兵 Sentinel 只解决了读性能和高可用问题,但是没有解决写性能问题


三、Redis Twemproxy

1.问题引出

  • 主从对写压力没有分担
  • 解决思路就是,使用多个节点分担,将写请求分散到不同节点处理
  • 分片 Sharding: 多节点分担的思路就是关系型数据库处理大表的水平切分思路

image.png

2.Twemproxy

  • Twitter 开发,代理用户的读写请求

image.png

  • Twitter 开发的代理服务器,他兼容 Redis 和 Memcached,允许用户将多个 redis 服务器添加到一个服务器池(pool)里面,并通过用户选择的散列函数和分布函数,将来自客户端的命令请求分发给服务器池中的各个服务器
  • 通过使用 twemproxv 我们可以将数据库分片到多台 redis 服务器上面,并使用这些服务器来分担系统压力以及数据库容量:在服务器硬件条件相同的情况下,对于一个包含 N 台 redis 服务器的池来说,池中每台平均1/N 的客户端命令请求
  • 向池里添加更多服务器可以线性的扩展系统处理命令请求的能力,以及系统能够保存的数据量
相关文章
|
4月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
375 2
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
504 5
|
3月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
8月前
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
316 5
|
3月前
|
存储 运维 NoSQL
Redis集群模式
Redis集群是一种分布式存储方案,旨在解决数据存储容量不足的问题。它通过将数据分片存储在多个节点上,实现数据的横向扩展。常见的分片算法包括哈希求余、一致性哈希和哈希槽分区。其中,Redis采用哈希槽分区算法,将数据均匀分配到16384个槽位中,每个分片负责一部分槽位。当节点故障时,集群通过故障检测和主从切换机制,确保服务的高可用性。集群还支持自动的数据迁移和负载均衡,保障系统稳定运行。
|
5月前
|
负载均衡 NoSQL Redis
【赵渝强老师】Redis的主从复制集群
Redis主从复制是指将一台Redis服务器的数据复制到其他Redis服务器,实现数据热备份、故障恢复、负载均衡及高可用架构的基础。主节点负责写操作,从节点同步数据并可提供读服务,提升并发处理能力。
167 5
|
4月前
|
存储 NoSQL 算法
Redis的集群架构与使用经验
本文介绍了Redis的集群架构与使用经验,包括主从复制、哨兵集群及Cluster分片集群的应用场景与实现原理。内容涵盖Redis主从同步机制、数据分片存储方式、事务支持及与Memcached的区别,并讨论了Redis内存用尽时的处理策略。适用于了解Redis高可用与性能优化方案。
|
8月前
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
9月前
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用的算法是哈希槽分区算法。Redis集群中有16384个哈希槽(槽的范围是 0 -16383,哈希槽),将不同的哈希槽分布在不同的Redis节点上面进行管理,也就是说每个Redis节点只负责一部分的哈希槽。在对数据进行操作的时候,集群会对使用CRC16算法对key进行计算并对16384取模(slot = CRC16(key)%16383),得到的结果就是 Key-Value 所放入的槽,通过这个值,去找到对应的槽所对应的Redis节点,然后直接到这个对应的节点上进行存取操作
|
机器学习/深度学习 NoSQL Redis
Redis高可用之集群架构(第三部分)
Redis高可用之集群架构(第三部分)