怎么保证redis是高并发以及高可用的?

1. 如果redis要支撑超过10万+的并发,应该怎么做?

a) 单机的redis几户不可能QPS超过10万,一般都是单机几万
解决:读写分离,对缓存,一般都是用来支撑读高并发的,写的请求是比较少的,大量的请求都是在读
一般有多个redis,其中有一个master-redis,专门接受写请求,然后把数据复制到其他的多个slave-redis中,然后所有的读请求都从多个slave-redis中去读
这种架构就是主从架构,一主多从,主负责写,并且将数据同步复制到其他的slave节点,从节点负责读,所有的读请求全部走从节点
好处:可以水平扩容,继续增加slave节点就行

2. redis replication基本原理核心机制

a) 主节点异步向从节点复制,从redis2.8开始,slave-node会周期性的确认自己每次复制的数据量
b) 一个master-node可以配置多个slave-node
c) slave-node也可以连接其他slave-node
d) slave-node在复制的时候,master-node是正常工作的,也不影响slave-node的读操作,因为复制时候,slave-node用的是旧的数据集来提供服务,但是复制完成的时候,需要删除旧的数据集,加载新数据集,这个时候就会暂停对外服务了
e) slave-node主要是用来做横向扩容的,做读写分离,扩容的slave-node可以提高读的吞吐量

3. master持久化对于主从节点的安全保障的意义

a) 如果开启了主从架构,必须开启master-node的持久化;万一master-node宕机了,还可以从持久化的备份文件中去恢复数据,master-node启动的时候才有数据,slave-node复制的时候才有数据
b) 不建议用slave-node作为master-node的数据热备,因为那样的话,如果你关掉master-node的持久化,可能master-node节点在宕机重启的时候数据是空的,然后slave-node一经过复制,slave-node数据也丢了

4. redis主从复制原理,断点续传,无磁盘化复制,过期key处理

a) 主从复制的原理
当启动一个slave-node的时候,它会发送一个PSYNC命令给master-node,如果这是slave-node第一次连接master-node,那么会触发一次full resynchronization ,开始full resynchronization的时候,master-node会启动一个后台线程,开始生成一份RDB快照文件,同时还会将客户端收到的所有写命令缓存到内存中,RDB文件生成完毕之后,master-node会将这个RDB发送给slave-node,slave-node会先写入本地磁盘,然后再从本地磁盘加载到内存中,然后master-node会将内存中缓存的写命令发送给slave-node,slave-node也会同步这些数据

Slave-node如果跟master-node有网络故障,断开了连接,会自动重连,master-node如果发现有多个slave-node都来重新连接,仅仅会启动一个rdb save操作,用一份数据服务所有的slave-node
b) 断点续传
从redis2.8开始,就支持主从复制的断电续传,如果主从复制过程中,网络连接断掉了,那么可以接着上次复制的地方,继续复制下去,而不是从头开始复制一份

Mater-node会在内存中创建一个backlog,mster和slave都会保存一个replica offset还有一个master id,offset就是保存在backlog中的,如果master和slave网络连接断掉了,slave会让master从上次的replice offset开始继续复制

但是如果没有找到对应的offset,那么就会执行一次resynchronization
c) 无磁盘化复制
Master-node在内存中直接创建rdb,然后发送给slave-node,不会在自己本地落地磁盘了,其中有两个参数设置
repl-diskless-sync
repl-diskless-sync-delay ,等待一定时长再开始复制,因为要等更多的slave-node重新链接过来,因为一旦复制开始,就不能再去连接其他的slave-node了
d) 过期key处理
slave-node不会过期key,只会等待master过期key,如果master-node过期了一个key,或者通过LRU淘汰了一个key,那么会模拟一条del命令发送给slave

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值