口碑好的网站建设,深圳外贸网络推广渠道,做体力活的网站,网页游戏排行榜第一分片架构解决的问题 
通过堆机器#xff0c;提升读写性能#xff0c;与存储性能 分片架构设计要点 
分片规则  
选择Cardinality大的作为分片键#xff0c;尽可能保证数据分布均匀 
常见分片键#xff1a; 基于主键#xff08;业务型数据#xff09;#xff0c;基于时间…分片架构解决的问题 
通过堆机器提升读写性能与存储性能 分片架构设计要点 
分片规则  
选择Cardinality大的作为分片键尽可能保证数据分布均匀 
常见分片键 基于主键业务型数据基于时间流水型数据 
常见分片策略 分片策略  实现举例  数据分布  以后扩展  基于Hash  hash(分片键)%分片数 一致性hash算法  数据分布均匀  不易扩容扩容需要数据迁移  范围分片  例如按年分按月按日  数据分表可能不均匀  易扩展扩展不需要数据迁移  路由规则 客户端如何找到数据所在分片 静态路由 配置文件。特点 简单不能扩展再平衡例如Mysql分表动态路由实现复制支持动态扩展再平衡 动态路由方式  基本流程  特点  举例  配置中心  配置中心记录分片信息客户端先访问配置中心 获取分片信息之后进行读写操作  支持大规模集群配置中心需要独立部署需要高可用  MongoDB的Sharding模式  路由转发  所有分片都保存路由信息客户端请求任意分片 获取分片信息之后进行读写操作  架构简单一般利用gossip协议不支持大规模集群  Redis Cluster 官方推荐1000实际建议100  
高可用 备份方式  特点  举例  独立备份  架构简单硬件成本高分片级别的复制  Mysql Redis等  相互备份  架构复杂硬件成本低数据块级别的复制  ElasticSearch 等  
redis cluster 分析 
特点 
理论支持1000台实际建议100台以内。 高性能线性可扩展无代理异步复制。 
架构图- 来自阿里云溪社区 分片规则 
分片键  
redis的key 
分片方式 
类似一致性Hash 通过CRC16算法计算出来的哈希值对163842^14取模取模之后得到的值就是对应的槽位然后每个Redis节点都会负责处理一部分的槽位。 
扩展1 一般hash算法缺点 
hash键值%分片数量如果有分片挂掉分片数量会下降整个集群会失效。 
扩展2 一致性hash算法 
CRC16算法计算出来的哈希值对2^32取模 
实例也分布在圆环(0-2^32)上我们在圆环上按照顺时针的顺序找到第一个实例 实例可能分布不均匀采用虚拟节点机制解决 路由规则 
路由转发模式一般利用gossip协议所有分片都保存路由信息客户端请求任意分片 
集群为了分布均匀再平衡或添加删除master实例存在重定向的情况。 
重定向 场景  命令  说明  全部迁移完成的情况下  MOVED命令  1.MOVED把客户端所请求数据的最新实例地址返返回客户端 2.更新客户端缓存的哈希槽分配信息  哈希槽数据还在迁移中  ASK  1.ASK 命令把客户端所请求数据的最新实例地址返回给客户端 2.客户端需要给目标实例 发送 ASKING 命令然后再发送操作命令 3.不更新客户端缓存的哈希槽分配信息  备份方式 
独立备份 
故障转移 
某一个节点认为A宕机了那么此时是主观宕机 
集群内超过半数的节点认为A挂了 那么此时A就会被标记为客观宕机 
从A节点的slave节点中选举出一个将其切换成新的master对外提供服务