dht 分布式hash 一致性hash区别
先有一致性hash :一致性哈希,似乎最早提出是在分布式缓存里面的,让节点震荡的时候,影响最小。不过现在已经应用在分布式存储和p2p系统里面。
dht 是p2p领域的概念,内有三大概念是由keyspace(key 空间)、keyspace partition(key 空间划分)、overlay network(覆盖网)组成。keyspace 很好理解,是所有定长字符串的空间。keyspace partition 方案将keyspace 上不同区域划分到不同的参与节点上。overlay network(覆盖网)将节点连接起来,使得网络中节点通过这个网络可以找到保存指定key 的节点。consistent hashing 对比DHT 的区别是,一致性哈希只覆盖了前两个概念,提供了一种keyspace 的划分方法
DHT只是一个概念,提出了这样一种网络模型。并且说明它是对分布式存储很有好处的。但具体怎么实现,并不是DHT的范畴。
分布式哈希表DHT 是一种去中心化的分布式系统,提供一种类似于哈希表的查询功能。
DHT 的研究最初是因为P2P 系统的兴起,如Napster,Gnutella 和Freenet。
Napster 是最早的P2P 服务的代表作,有一个中心index server 保存资源的index(key),当有节点加入、退出和查询时,与index server 进行交互,获取资源信息,存在单点故障,在遇到法律纠纷时,这个index server 很容就被关闭了。
Gnutella 去中心化得松散布局,当节点发起查询时,通过洪泛(flooding)的方式查询:每个收到查询命令的节点向其所有其他邻居节点发送类似请求。并通过TTL 控制洪泛的区域。
Freenet 首先采用了DHT,每个对象(文件)都关联一个key,具有相似的key 的文件保存在相似的节点上,并通过一个基于key 的启发式的路由进行查询。
DHT 可以认为是由keyspace(key 空间)、keyspace partition(key 空间划分)、overlay network(覆盖网)组成。keyspace 很好理解,是所有定长字符串的空间。keyspace partition 方案将keyspace 上不同区域划分到不同的参与节点上。overlay network(覆盖网)将节点连接起来,使得网络中节点通过这个网络可以找到保存指定key 的节点。consistent hashing 对比DHT 更多的是提供了一种keyspace 的划分方法,各种consistent
hashing 的也用在了DHT 中进行空间划分。为了更好的理解overlay network 的组成,有这么一段话:
Each node maintains a set of links to other nodes, these links forms the overlay network.
【译】每个节点维持到其他节点的链接,这些链接形成了覆盖网。
可以看出overlay network 已经从物理层的网络抽象成逻辑层上链接各个节点、各个节点保存的路由信息以及路由协议的集合。在overlay network 有两个重要参数:邻居节点数/度数(Degree)和跳数/路由长度(Route length)。度数衡量每个节点保存邻居节点信息的多少,度数越大每个节点邻居越多,保存和维持的信息就更多,需要的路由长度就越短。跳数指的是从该节点到保存特定key 的对象的节点的平均路由长度
chord算是最为经典的实现。cassandra中的DHT,基本是chord的简化版。
dht 分布式hash 一致性hash区别的更多相关文章
- 分布式缓存一致性hash算法理解
今天阅读了一下大型网络技术架构这本苏中的分布式缓存一致性hash算法这一节,针对大型分布式系统来说,缓存在该系统中必不可少,分布式集群环境中,会出现添加缓存节点的需求,这样需要保障缓存服务器中对缓存的 ...
- 分布式缓存一致性hash算法
当服务器不多,并且不考虑扩容的时候,可直接使用简单的路由算法,用服务器数除缓存数据KEY的hash值,余数作为服务器下标即可. 但是当业务发展,网站缓存服务需要扩容时就会出现问题,比如3台缓存服务器要 ...
- 一致性hash在分布式系统中的应用
场景 如果要设计一套KV存储的系统,用户PUT一个key和value,存储到系统中,并且提供用户根据key来GET对应的value.要求随着用户规模变大,系统是可以水平扩展的,主要要解决以下几个问题. ...
- 分布式算法-一致性HASH
分布式算法 参考: https://blog.51cto.com/alanwu/1431397 https://blog.csdn.net/kojhliang/article/details/8120 ...
- 不会一致性hash算法,劝你简历别写搞过负载均衡
大家好,我是小富~ 个人公众号:程序员内点事,欢迎学习交流 这两天看到技术群里,有小伙伴在讨论一致性hash算法的问题,正愁没啥写的题目就来了,那就简单介绍下它的原理.下边我们以分布式缓存中经典场景举 ...
- 什么是一致性hash?
一致性hash 前言 说出来大家可能不相信,我昨天做梦梦到自己在面试,然后面试官问了我这个问题哈哈~然后我就打算按照自己的理解写一写.如果有写的不对的欢迎大家指正! 直接开始 普通hash算法 普通h ...
- 转载自lanceyan: 一致性hash和solr千万级数据分布式搜索引擎中的应用
一致性hash和solr千万级数据分布式搜索引擎中的应用 互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中获得 ...
- 一致性Hash算法在Redis分布式中的使用
由于redis是单点,但是项目中不可避免的会使用多台Redis缓存服务器,那么怎么把缓存的Key均匀的映射到多台Redis服务器上,且随着缓存服务器的增加或减少时做到最小化的减少缓存Key的命中率呢? ...
- 一致性hash和solr千万级数据分布式搜索引擎中的应用
互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中 获得成功,这个和当前的开源技术.海量数据架构有着必不可分的关 ...
随机推荐
- 以太坊开发教程(二) 利用truffle发布宠物商店 DAPP 到 以太坊测试环境Ropsten
1.环境安装 1) node安装 设置镜像地址: curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -下载安装 ...
- AcDbCurve of AcDbEntity
AcDb2dPolyline AcDb3dPolyline AcDbArc AcDbCircle AcDbEllipse AcDbLeader AcDbLine AcDbPolyline AcDbRa ...
- [Xcode 实际操作]六、媒体与动画-(13)使用UIImageView制作帧动画
目录:[Swift]Xcode实际操作 本文将演示如何将导入的序列图片,转换为帧动画. 在项目导航区打开资源文件夹[Assets.xcassets] [+]->[Import]->选择图片 ...
- 使用docker搭建项目环境
# 清屏 clear # 查看当前文件夹下的列表 ls # 跳目录 cd ~ 代表当前用户文件夹 cd / 代表根目录 cd..返回上一级目录 cd #sudo 使用超级管理员创建文件夹 不加sudo ...
- 剑指Offer的学习笔记(C#篇)-- 反转链表
题目描述 输入一个链表,反转链表后,输出新链表的表头. 一 . 概念普及 关于线性表等相关概念请点击这里. 二 . 实现方法 目前,可以有两种方法实现该要求. 方法一:借助外部空间实现.这里可以将单链 ...
- jQuery EasyUI/TopJUI基本的数字输入框(保留两位小数,带前缀后缀...)
jQuery EasyUI/TopJUI基本的数字输入框(保留两位小数,带前缀后缀...) numberbox(数值输入框) HTML required:必填字段,默认为false:prompt:显示 ...
- 黑马旅游网 解析url查询字符串
function getUrlParam(name) { let reg = new RegExp("(^|&)" + name + "=([^&]*)( ...
- 常见的div布局面试题
题目1:如何让一个子元素在父元素里水平垂直居中? 方法1 .box{width:400px;height:400px;background:#ccc;position:relative;} .chil ...
- UVaLive6443(线段树)
要点 题意--题意往往是个大坎Orz:输入操作 p 则在区间\([x_1,x_2]\)插入一个三次函数, t 则先查询区间\([x_1,x_2]\)的函数值的和,然后按题目要求得到新的\(x_1\). ...
- 讲明白combineByKey()算子,不是谈源码
简单介绍 combineByKey()是最通用的对key-value型rdd进行聚集操作的聚集函数(aggregation function).类似于aggregate(),combineByKey( ...