Redis基于Proxy以及客户端的数据分片和Redis-Cluster分片

本文探讨了单节点Redis存在的问题,包括单点故障、数据容量和连接压力。针对数据容量问题,提出了基于客户端的分片方案,如业务拆分和Hash算法(包括Modula、Random和Ketama一致性Hash),以及通过Proxy实现数据路由。还介绍了Redis Cluster的特点和工作原理,强调了数据加标签以避免跨节点操作。最后,分享了相关面试题和Java核心知识点资源。
摘要由CSDN通过智能技术生成

一、先谈单节点的 Redis 存在的问题

  1. 单点故障
  2. 数据容量问题
  3. 连接数、请求压力问题

主从+哨兵架构,解决了单点问题和请求压力问题,但是数据容量仍然是 1:1 的克隆数据,数据容量问题依旧存在,数据并没有分摊到各个节点。

二、如何解决单点数据容量问题

A:基于客户端的方案

1.业务拆分数据

从业务的角度不同的模块按约定好的逻辑落入不同的Redis 节点。

比如:评论业务用一个redis阶段,商品信息业务用另外一个节点,购物车用另外一个节点。

2.通过Hash算法路由

  • 2.1 Modula:将hash(ID)%redis节点数

弊端:redis节点数改变的话,数据就分配规则就被打破了。

  • 2.2 Random:随机分配

使用场景:消息队列。

数据随机的落入到不同的节点,对于客户端而言无所谓数据落在那一台节点,只需要知道key就能拿到数据。

  • 2.3 Ketama:一致性Hash算法将数据分摊到不同的节点。

规划一个虚拟的环形节点,将节点和数据参与位置分配算法。

优点:增加节点可以分担其他节点的压力,不会造成全局洗牌,原本的数据还在最初规划出的物理节点中。

一致性Hash缺点:

  • 击穿的风险,原本数据是在a节点的&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值