讲解redis分布式数据存储的核心算法,数据分布的算法

最老土的hash算法以及弊端

 

 一致性hash算法的讲解和优点

 

 

 

 一致性hash算法的虚拟节点实现负载均衡

 

 

hash算法 -> 一致性hash算法(memcached) -> redis cluster,hash slot算法

用不同的算法,就决定了在多个master节点的时候,数据如何分布到这些节点上去,解决这个问题

1、redis cluster介绍

redis cluster

(1)自动将数据进行分片,每个master上放一部分数据
(2)提供内置的高可用支持,部分master不可用时,还是可以继续工作的

在redis cluster架构下,每个redis要放开两个端口号,比如一个是6379,另外一个就是加10000的端口号,比如16379

16379端口号是用来进行节点间通信的,也就是cluster bus的东西,集群总线。cluster bus的通信,用来进行故障检测,配置更新,故障转移授权

cluster bus用了另外一种二进制的协议,主要用于节点间进行高效的数据交换,占用更少的网络带宽和处理时间

2、最老土的hash算法和弊端(大量缓存重建)

3、一致性hash算法(自动缓存迁移)+虚拟节点(自动负载均衡)

4、redis cluster的hash slot算法

redis cluster有固定的16384个hash slot,对每个key计算CRC16值,然后对16384取模,可以获取key对应的hash slot

redis cluster中每个master都会持有部分slot,比如有3个master,那么可能每个master持有5000多个hash slot

hash slot让node的增加和移除很简单,增加一个master,就将其他master的hash slot移动部分过去,减少一个master,就将它的hash slot移动到其他master上去

移动hash slot的成本是非常低的

客户端的api,可以对指定的数据,让他们走同一个hash slot,通过hash tag来实现

推荐这些技术文章:

Docker Redis分布式存储

哈希槽分区
是什么?
https://www.cnblogs.com/frankcui/p/15355089.html
哈希槽实质就是一个数组,数据【0,2^14-1】形成一个hash slot空间;
解决均匀分布的问题;在数据和节点之间有加入了一层;
把这层称为哈希槽;用于管理数据和节点之间的关系,现在就相当于节点上放的是槽,槽里面放到是数据; 
槽解决的是粒度问题,相当于把粒度变大...

3.Redis数据分布之Redis数据分区和集群功能限制

数据分区
 redis cluster采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式:slot=CRC16(key) &16383.每个节点负责维护一部分槽以及槽所映射的健值数据
  
  Redis虚拟槽分区的特点:
  .解耦数据和节点之间的关系,简化了节点扩容和收缩难度。
  .节点自身维护槽的映射关系,不需要客户端或者代理服务维护槽分区元数据
  .支...

redis cluster的核心原理分析:gossip通信、jedis smart定位、主备切换

gossip协议维护集群元数据    集中式的集群元数据存储和维护     一、节点间的内部通信机制 1、基础通信原理 (1)redis cluster节点间采取gossip协议进行通信 跟集中式不同,不是将集群元数据(节点信息,故障,等等)集中存储在某个节点上,而是互相之间不断通信,保持整个集群所有节点的数据是完整的 维护集群的元数据用得,集中式,一...

Redis学习(三):Redis分布式缓存与数据库的数据一致性

概括:缓存是通过牺牲强一致性来提高性能的。
这个是由CAP理论决定的。缓存系统适用的场景就是非强一致性的场景,它属于CAP中的AP。
强一致性还是弱一致性?

CAP理论,指的是在一个分布式系统中,只能满足其中两项,三者不可兼得。

CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中:

一致性(Consistency)
可用性(Availability)
分区容错性(...

不会一致性hash算法,劝你简历别写搞过负载均衡

大家好,我是小富~

个人公众号:程序员内点事,欢迎学习交流

这两天看到技术群里,有小伙伴在讨论一致性hash算法的问题,正愁没啥写的题目就来了,那就简单介绍下它的原理。下边我们以分布式缓存中经典场景举例,面试中也是经常提及的一些话题,看看什么是一致性hash算法以及它有那些过人之处。

构建场景
假如我们有三台缓存服务器编号node0、node1、node2,现在有3000万个key,希望可...

11.本地存储数据

js有两种在本地存储数据的方法,
第一种是长期的存储方式:localStorage  可以永久保存
第二种是短期存储方式:sessionStorage  在关闭一次浏览器失效
存储方式为

// 设置本地存储
localStorage.newTitle = "这是本地存储";
// 取出本地存储
console.log(localStorage.newTitle);

//...

Redis集群环境各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式

总结/朱季谦
在搭建Redis5.x版本的集群环境曾出现各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的情况,故而把解决方式记录下来。
在以下三台虚拟机机器=搭建Redis集群——
192.168.200.160

192.168.200.161

192.168.200.162

启动三台Redis集群,然后连接其中一台客户端,随便se...

一站式学习Redis, 从入门到高可用分布式实践-09-初识redis cluster

redis cluster是redis3.0提供的分布式解决方案,有效的解决了redis分布式方面的需求,同时它也是学习分布式存储的绝佳案例。

学习redis cluster是大家学习分布式数据库的一个很好的案例

我们为什么需要redis cluster集群这样的功能?
并发量:redis单机默认支持10万/s ,如果对并发要求更高,百万/s呢?
数据量:redis单机内存是16-256...

RocketMQ IndexFile ByteBuffer的Hash存储结构

 
 
 
1:Header是一个固定长度的Byte数组,具体数据结构参考IndexHeader实现
2:Slot是一块连续Byte数组用于存储Key/Value存储结构,其中Key是一个hash(key),Value是当前元素是第一个索引(也就是当前索引的序号),存储序号目的是便于检索,后面会详细描述。
3:Index也是一块连续Byte数组,用于存储每一个Ind...

一致性哈希算法——虚拟节点

一致性哈希算法——虚拟节点
一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。
因此,引入了一致性哈希算法:

把数...

文章标题:讲解redis分布式数据存储的核心算法,数据分布的算法
文章链接:https://www.dianjilingqu.com/928.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>