redis使用过程主要考虑:高并发、高可用、持久性几个方面
高并发
单节点redis通常能够支持1w到几万的,假如单节点实力能够支撑5w的qps
问题1:如何用redis支撑10万的读qps?
分为两种情况来考虑:
1、数据量单节点能够完全存储
读写分离+主从架构:单节点->主从模式(每个节点容纳全量的数据)
写入走主节点,读取走从节点,从节点分摊qps
问题扩展:如何支撑100w的读qps呢?
读写分离+主从架构,增加更多的从节点来分担请求
假如单节点qps:5w,提供20个从节点
2、数据量单节点无法完全存储
在实际场景中,往往遇到一个节点的容量问题
(1)业务拆分,数据分类
(2)到了数据不能拆分,进行数据分片
大体可以分为两种模式:
客户端逻辑拆分
-
进行hash取模
影响分布式的扩展性%3,%4,增加或者减少机器会影响数据的访问,需要进行数据迁移) -
一致性hash算法(常用的解决方案,官方cluster也是采用该方案)
proxy代理层
开源方案:twemproxy
未完待续