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

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习 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 的客户端命令请求
  • 向池里添加更多服务器可以线性的扩展系统处理命令请求的能力,以及系统能够保存的数据量
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
15天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
227 0
|
24天前
|
负载均衡 监控 NoSQL
Redis的集群方案有哪些?
Redis集群包括主从复制(基础,手动故障恢复)、哨兵模式(自动高可用)和Redis Cluster(官方分布式解决方案,自动分片和容错)。此外,还有如Codis、Redisson和Twemproxy等第三方工具用于代理和负载均衡。选择方案需考虑应用场景、数据规模和并发需求。
188 2
|
29天前
|
NoSQL Redis
Redis集群(六):集群常用命令及说明
Redis集群(六):集群常用命令及说明
186 0
|
1天前
|
存储 NoSQL 算法
Redis 搭建分片集群
Redis 搭建分片集群
|
24天前
|
NoSQL Java 测试技术
面试官:如何搭建Redis集群?
**Redis Cluster** 是从 Redis 3.0 开始引入的集群解决方案,它分散数据以减少对单个主节点的依赖,提升读写性能。16384 个槽位分配给节点,客户端通过槽位信息直接路由请求。集群是无代理、去中心化的,多数命令直接由节点处理,保持高性能。通过 `create-cluster` 工具快速搭建集群,但适用于测试环境。在生产环境,需手动配置文件,启动节点,然后使用 `redis-cli --cluster create` 分配槽位和从节点。集群动态添加删除节点、数据重新分片及故障转移涉及复杂操作,包括主从切换和槽位迁移。
32 0
面试官:如何搭建Redis集群?
|
28天前
|
存储 缓存 NoSQL
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群功能分析)(一)
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(集群功能分析)
315 0
|
1月前
|
NoSQL Redis Docker
使用Docker搭建一个“一主两从”的 Redis 集群(超详细步骤)
使用Docker搭建一个“一主两从”的 Redis 集群(超详细步骤)
68 0
|
1月前
|
存储 监控 NoSQL
Redis 架构深入:主从复制、哨兵到集群
大家好,我是小康,今天我们来聊下 Redis 的几种架构模式,包括主从复制、哨兵和集群模式。
Redis 架构深入:主从复制、哨兵到集群
|
1月前
|
运维 负载均衡 NoSQL
【大厂面试官】知道Redis集群和Redis主从有什么区别吗
集群节点之间的故障检测和Redis主从中的哨兵检测很类似,都是通过PING消息来检测的。。。面试官抓抓脑袋,继续看你的简历…得想想考点你不懂的😰。
67 1
|
1月前
|
缓存 NoSQL Java
Redis缓存高可用集群
Redis缓存高可用集群

热门文章

最新文章