• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

基于Redis Sentinel实现Redis集群

Redis 彭东稳 8年前 (2016-10-01) 24226次浏览 已收录 0个评论

一、集群应用

我们的Redis集群主要承担了以下服务:

1)实时推荐。

2)用户画像。

3)诚信分值服务。

二、集群状况

集群峰值QPS 1W左右,RW响应时间999线在1ms左右。

三、整个集群

1)Redis节点: 8台物理机;每台128G内存;每台机器上8个instance。

2)Sentienl:3台虚拟机。

集群方案

基于Redis Sentinel实现Redis集群

Redis Node由一组Redis Instance组成,一组Redis Instatnce可以有一个Master Instance,多个Slave Instance。

一、整体设计

1、数据Hash分布在不同的Redis Instatnce上。

2、M/S的切换采用Sentinel。

3、写:只会写master Instance,从sentinel获取当前的master Instane。

4、读:从Redis Node中基于权重选取一个Redis Instance读取,失败/超时则轮询其他Instance。

5、通过RPC服务访问,RPC server端封装了Redis客户端,客户端基于jedis开发。

6、批量写/删除:不保证事务。

二、实现方式

1)RedisKey

Family的存在时为了避免多个业务key冲突,给每个业务定义自己独立的Famiily。出于性能考虑,参考Redis存储设计,实际保存在Redis上的key为经过hash之后的值。

2)接口

目前支持的接口包括:

3)写Redis流程

1. 计算Redis Key Hash值。

2. 根据Hash值获取Redis Node编号。

3. 从sentinel获取Redis Node的Master。

4.  写数据到Redis。

代码实现:

4)读Redis流程

1. 计算Redis Key Hash值

2. 根据Hash值获取Redis Node编号

3. 根据权重选取一个Redis Instatnce

4.  轮询读

代码实现:

5)权重计算

初始化的时候,会给每个Redis Instatnce赋一个权重值weight,根据权重获取Redis Instance的代码:

转载:http://blog.csdn.net/yfkiss/article/details/38944179。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (1)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!