DHT是什么?
DHT(Distributed Hash Table,分布式哈希表)类似Tracker的根据种子特征码返回种子信息的网络.DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。
为什么分布式存储需要DHT呢?
举个例子,有10亿条数据,分别存储在10台不同的NOSql服务器中,那么用户请求一个Key的时候如何找到相应的Value呢?最笨的方法就是在每台服务器上都做查询,最后得出一条用户查询的value。但这无形中增加了服务器的压力。如果只用一台服务器去找是不是更好呢?当然如此。DHT就是它的一种解决方案,DHT是通过将key进行散列(Hash)后,快速定位到定位到其所在的如服务器的做法;在 DHT 里面,负责存储的节点以及数据对象都被分配一个 token。token 只能在一定的范围内取值,比如说如果用 MD5 作为 token
的话,那么取值范围就是 [0, 2^128-1]。存储节点以及对象根据 token 的大小排列成一个环,即最大的 token 后面紧跟着最小的
token,比如对 MD5 而言,token 2^128-1 的下一个 token 就是 0。下面我们对Cassandra进行分析。
Cassandra 使用以下算法来分布数据
首先,每个存储节点被分配一个随机的 token(涉及数据分区策略),该 token 代表它在 DHT 环上的位置;
然后,用户为数据对象指定一个 key(即 row-key),Cassandra 根据这个 key 计算一个哈希值作为 token,再根据 token 确定对象在 DHT 环上的位置;
最后,该数据对象由环上拥有比该对象的 token 大的最小的 token 的节点来负责存储;
根据用户在配置时指定的备份策略(涉及网络拓扑策略),将该数据对象备份到另外的 N-1 个节点上。网络中总共存在该对象的 N 个副本。
因此,每个存储节点最起码需要负责存储在环上位于它与它的前一个存储节点之间的那些数据对象,而且这些对象都会被备份到相同的节点上。我们把 DHT 环上任何两点之间的区域称为一个 range,那么每个存储节点需要存储它与前一个存储节点之间的 range。
因为 Cassandra 以 range 为单位进行备份,所以每个节点需要定期检查与它保存了相同的 range 的节点,看是否有不一致的情况,这涉及到数据一致性策略。
另外,Cassandra的一个特点是写速度大于读速度,这都归功于它的存储策略。
本文总结了Cassandra中使用的各种策略,包括数据分局策略,数据备份策略,网络拓扑策略,数据一致性策略和存储策略等。
这一部分的代码在org.apache.cassandra.dht包下。
具体代码分析日后更新。
分享到:
相关推荐
Cassandra是一个开源的分布式数据库,结合了Dynamo的Key/Value与Bigtable的面向列的特点。
cassandra 分布式数据库
CASSANDRA分布式模型与源代码分析文茂V0.7 - CASSANDRA-SHAWN.doc
了解一个软件的配置项的意义是使用这个软件的前提,这里介绍 Cassandra 的配置文件(storage-config.xml)中各个配置项的意义,这其中包含有很多配置参数,我们可以对其进行调整以达到理想的性能。
它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性,被等知名网站所...
Cassandra是一个开源的分布式数据库,结合了Dynamo的Key/Value与Bigtable的面向列的特点,本文档对Cassandra源代码作了详细的分析,可以了解整个集群的运作细节。
为您提供ApacheCassandra 分布式数据库下载,Apache Cassandra是一个混合型的非关系的数据库,开源分布式Key-Value存储系统,主要特性有分布式、基于column的结构化、高伸展性!软件介绍 当您需要可扩展性和高可用...
分布式测试 集群测试。 先决条件 应安装 ccm 的最新副本以启动和停止 Cassandra。 测试是使用鼻子测试运行的。 这些测试需要 datastax python 驱动程序。 一些测试仍然需要已弃用的 python CQL over thrift 驱动程序...
Cassandra分布式数据库架构与应用
1.CAP定理理与Cassandra 1.1 Cassandra优势 2.Cassandra ⼀一致性实现 2.1 CAS 2.2 Quorum读写 2.3 不不⼀一致产⽣生原因 2.4 Hinted handoff 2.5 Read repair 2.6 Manual repair 3.Cassandra应⽤用场景 ...
1、分布式作业管理、调度、监控; 2、基于spark streaming+Cassandra的实时分析和监控,包括性能分析、账号安全主动防御。 web部分采用spring boot开发,前端采用angularJS组织页面相关的各个部分,系统的技术和效果...
cassandra分布式数据库 压缩包,只需解压简单配置下便可以用
Apache Cassandra是一套开源分布式Key-Value存储系统
Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,此后,由于Cassandra良好的可扩展性,逐渐发展成为了一种流行的分布式结构化数据存储方案。 2、特点分析 弹性可...