分布式
我们做的是分布式数据库,也就是我们的节点会有很多个。 那么数据应该存储到哪个节点上呢,如何计算?
hash 一致性算法使用hash一致性算法可以使用多个节点,hash的节点值为ip地址,算法: unsigned int hvalue = hash(ip); hash函数计算出一个四字节整型数,按照0----2的32次方排列。那么,就可以计算输入值来放到什么位置了。
unsigned int xxx = hash(输入值);
我们把所有节点放到list里面 #include
list allnode; 算法特别简单,把计算出来的值按照顺时针走,走到哪个节点,就放到哪个节点里面。 为了防止节点出错,冗余算法就是: 1、按照顺时针和逆时针都放入值,这样,在多个节点都有值,假定有n个节点,单个节点出错时,那么取数据出错的概念为0。 2、两个非相邻节点出错时,出错概率依然为0,大大降低了风险。 其他还可以使用校验算法,将多个节点的值进行校验
hash算法一下为其他hash的算法,为了计算正确,后面的prime为素数。
#include
#include
#include
//注意prime是素数
static int rotating_hash(const char *key, int prime)
{
size_t hash, i;
size_t len = strlen(key);
for (hash = len, i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?