Redis如何做到高并发和高可用
1、高并发
单机的redis的QPS一般在几万(官方说法可以达到10万)。所以对于十万、百万甚至千万级别的QPS,单机的redis肯定不能支撑这么大的访问量。解决此类高并发问题,可以采用redis的主从架构模式。
主从架构:一主多从实现读写分离,主节点负责写,并将数据同步给其他从节点,从节点负责读,从而实现高并发。
但是,在主从架构中,每个redis实例都容纳了所有的完整数据,比如redis主实例如果有10G的内存容量的话,表示最多只能容纳10g的数据量。如果要缓存更大的数据量,比如几十g,甚至几百g,或者是几t,此时就需要使用redis集群,而且用redis集群之后,可以提供每秒几十万的读写并发。(也就是说,使用redis集群,一方面可以扩展整个redis缓存系统中可以存储的数据量;另一方面也可以提高系统的并发性能)
2、高可用
(1)Sentinel哨兵
如果你做主从架构部署,只要加上哨兵就可以实现任何一个redis实例宕机,自动进行主备切换,保证整个redis系统持续对外提供服务,达到高可用要求。Redis Sentinel是为Redis提供了高可用方案。从实践方面来说,使用Redis Sentinel可以创建一个无需人为干预就可以预防某些故障的Redis环境。Redis Sentinel设计为分布式的架构,运行多个Sentinel进程来共同合作的,当多个Sentinel判定给定的master无法再继续提供服务,就会执行故障检测,从而降低误报的可能性。
Redis Sentinel功能:
Redis Sentinel在Redis高可用方案中主要作用有如下功能:
- 监控
Sentinel会不断的检查master和slave是否像预期那样正常运行 - 通知
通过API,Sentinel能够通知系统管理员、程序监控的Redis实例出现了故障 - 自动故障转移
如果master不像预想中那样正常运行,Sentinel可以启动故障转移过程,其中的一个slave会提成为master,其它slave会重新配置来使用新的master,使用Redis服务的应用程序,当连接时,也会被通知使用新的地址。 - 配置提供者
Sentinel可以做为客户端服务发现的认证源:客户端连接Sentinel来获取目前负责给定服务的Redis master地址。如果发生故障转移,Sentinel会报告新的地址。
(2)redis集群
3、参考博客
https://blog.csdn.net/ssllkkyyaa/article/details/84107474
本文地址:https://blog.csdn.net/wangqsse/article/details/105853308
推荐阅读
-
高并发高可用复杂系统中的缓存架构(十五) 缓存架构讲解,如何保证缓存数据库一致性
-
高并发高可用复杂系统中的缓存架构(三) 能够支撑高并发 + 高可用 + 海量数据 + 备份恢复的 redis 的重要性
-
如何设计和实现高可用的MySQL
-
Redis如何做到高并发和高可用
-
如何利用Redis锁解决高并发问题详解
-
高并发高可用复杂系统中的缓存架构(四) redis架构基础
-
redis+lua实现高并发库存扣减和回流,超卖和少卖场景使用。
-
高并发高可用复杂系统中的缓存架构(十三) redis集群
-
Redis为什么快如何实现高可用及持久化
-
redis高并发(数据洪流)插入(SET)是如何工作的?如何应对?