大规模redis集群的服务治理之路
高嵩
About me
11年工作经验,2011年加入优酷,曾任高级工程师、技术专家,现任高级技术经理
目前在大优酷数据战略团队主要负责分布式缓存、实时计算平台的搭建与优化
对分布式存储、流计算、高并发高可用系统有浓厚兴趣,热爱分享与交流
技术博客:http://blueswind8306.iteye.com/
目录
Redis Cluster介绍
Redis Cluster特性&集群架构
服务端分片
客户端请求&请求重定向
Failover
运维经验
集群扩容
手动failover
集群迁移
Redis Cluster介绍
Redis Cluster特性
支持string/hash/list/set/sortedset/hyperloglog/geo/pubsub等大部分单机Redis功能
去中心化的分布式集群
主从全量/增量同步
服务端分片
节点水平伸缩,扩容/缩容对调用方透明
自动failover/failback
Redis Cluster集群架构
Client / Proxy
Client / Proxy
Server1
Redis Master
Server2
Redis Master
Server3
Redis Master
Server4
Redis Master
Redis Master
Redis Master
Redis Master
Redis Master
Redis Slave
Redis Slave
Redis Slave
Redis Slave
Redis Slave
Redis Slave
Redis Slave
Redis Slave
服务端分片
数据分为固定的16384个槽(slot)
每个node负责一部分slot的数据存储
每个node有整个集群的slot->node映射关系
集群初始化时确定slot->node的关系
扩容/缩容通过slot迁移完成
slots
0~5000
5001~10000
10001~16383
A
B
C
客户端请求
客户端缓存slot->node的映射关系
请求一个key时,在本地先算出key对应的slot,再根据slot->node的对应关系找到node
如果服务端的映射关系和客户端不一致怎么办?
Key
CRC16(key) % 16384
slot
Request to node