关于redis的分布式架构

2019-07-31 08:57:05 一点php分享关于redis分布式架构理念的一些总结并不涉及实际部署方式以及代码,不管是redis还 是其余软件全部的架构理念是同样的,我的认为理念更为重要,代码是死的理念是活的,没有一种 架构能够解决一切问题,只有遇到不一样的问题采用不一样的架构根据实际场景调整架构方案。 分布式算法无非是运维开发者手动实现或者是软件自身支持某种算法实现。搭建分布式的目的就在 于将不一样的请求压力以及读写io分散开,关键在于如何分散请求以及后续如何能够精确的命中请 求。php

一致性hash算法: redis存储采用一致性hash方式命中节点,将全部缓存以及节点都放入hash空间中,数据进来后 通 过hash计算得出本身的位置而后顺时针寻找就近节点,若是节点宕机则寻找下一个。若是分布不均 匀,致使某一节点压力过大,能够采用虚拟节点。git

hash取模方式: 数据进来后经过hash取模的方式算出节点位置,从而进行读写操做,这种算法实现简单也有必定的 做用,可是server总数不能轻易变化。由于若是增长/减小server的数量,对原先存储的全部key的 后续查询都将定位到别的server上,致使全部的cache都不能被命中而失效。github

区别: 为了解决这个问题,须要采用一致性hash算法 相对于取模的算法,一致性hash算法除了计算key的hash值外,还会计算每一个server对应的hash 值,而后将这些hash值映射到一个有限的值域上(好比0~2^32)。经过寻找hash值大于 hash(key)的最小server做为存储该key数据的目标server。若是找不到,则直接把具备最小hash值 的server做为目标server。redis

在redis3.0版本以后推出redis自身的实现方式: 生产经过hash槽将0~16383范围分片给不一样节点存储数据,最少6台redis才能将这个架构跑起来, 3台master以及3台slave分别为主各自的主从,而且将16383个hash槽位置分散在3台master节点 中。好处是显而易见的主挂从上,同时主从数据基本同步固然也不是强一致性的,并不能100%的认 为数据一致。当master数量少于必定程度或者某个节点的主从同时宕机,这个集群将中止工做。 关于redis的分布式架构算法

总结: 以上只是博主分享的一部分关于redis的架构理念,只是让你们有个概念,具体细节一篇文章也讲不 完。同时并非说只有这些方式,例如某些大厂中会有自身的一套算法,还有redis中也有哨兵算法等,本文主要做为抛砖引玉的做用。缓存

个人开源商城立刻要发布 了,欢迎你们关注 开源地址:github.crmeb.net/u/lsq架构

相关文章
相关标签/搜索