`
yongjiebai
  • 浏览: 12244 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Cassandra 分布式hashtable(DHT) 和 Locator

 
阅读更多

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分布式模型与源代码分析

    总之,Cassandra 是一个针对大规模分布式数据存储的优秀解决方案,其独特的数据模型和分布式架构使其在高可用性、可扩展性和灵活性方面表现出色。理解和分析其源代码能进一步挖掘其潜力,以满足不同场景下的数据管理...

    Cassandra分布式模型与源代码分析中文最新版本

    其主要功能比 Dynomite(分布式的Key-Value存 储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库 的。感兴趣的朋友可以...

    Cassandra分布式架构与源代码分析

    Cassandra分布式架构与源代码分析 Cassandra是一个开源的分布式数据库,结合了Dynamo的Key/Value与Bigtable的面向列的特点。本文档对Cassandra源代码作了详细的分析,可以了解整个集群的运作细节。 1. Cassandra的...

    Cassandra 分布式数据库详解

    Cassandra 是一种分布式数据库系统,特别设计用于处理大规模数据,具备高可用性和可扩展性。在深入了解 Cassandra 之前,理解其配置文件 `storage-config.xml` 中的参数至关重要,因为这些参数直接影响到系统的性能...

    NoSQL数据库系统-Cassandra分布式结构化数据存储视频教程

    它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性,被等知名网站所...

    CASSANDRA分布式模型与源代码分析文茂V0.7 - CASSANDRA-SHAWN.doc

    总的来说,Cassandra是一个强大的分布式数据库解决方案,特别适合需要高可用性、水平扩展性和处理大量非结构化数据的云环境。其核心优势在于其分布式架构和灵活的数据模型,能够适应不断变化的业务需求和大规模的...

    apache-cassandra-0.8.4-bin.tar.gz 分布式数据库

    1. **分布式架构**:Cassandra采用了无中心节点的分布式架构,每个节点都与其他节点对等通信,允许数据复制和负载均衡。这种设计使得系统能够容忍节点故障,保证服务的高可用性。 2. **一致性与可用性**:Cassandra...

    ApacheCassandra 分布式数据库 v3.11.7官方版

    为您提供ApacheCassandra 分布式数据库下载,Apache Cassandra是一个混合型的非关系的数据库,开源分布式Key-Value存储系统,主要特性有分布式、基于column的结构化、高伸展性!软件介绍 当您需要可扩展性和高可用...

    基于Cassandra的实时气象数据分布式存储系统.pdf

    本文主要介绍了基于Cassandra的实时气象数据分布式存储系统的设计和实现。该系统采用Cassandra作为分布式存储解决方案,旨在满足气象数据存储的高可用性和性能要求。 1. Cassandra关键技术点 Cassandra是一种开源...

    java8源码-cassandra-dtest:Cassandra分布式测试

    分布式测试 集群测试。 先决条件 应安装 ccm 的最新副本以启动和停止 Cassandra。 测试是使用鼻子测试运行的。 这些测试需要 datastax python 驱动程序。 一些测试仍然需要已弃用的 python CQL over thrift 驱动程序...

    基于Cassandra的可扩展分布式反向索引的构建.pdf

    NoSQL数据库正是在这样的背景下迅速发展起来的一种新型数据库,它不仅能够适应大规模数据和高并发的处理需求,还能够提供高可用性和易扩展性的特点,它与传统的关系型数据库(RDBMS)相比,在分布式和可扩展性方面...

    分布式数据库Cassandra 一致性详解.zip

    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应⽤用场景 ...

    一个spark streaming+Cassandra、分布式作业调度系统总结

    1、分布式作业管理、调度、监控; 2、基于spark streaming+Cassandra的实时分析和监控,包括性能分析、账号安全主动防御。 web部分采用spring boot开发,前端采用angularJS组织页面相关的各个部分,系统的技术和效果...

    大型分布式应用技术资料合集(涵盖Hadoop Cassandra HBase NoSQL)

    这个合集涵盖了四个关键的技术:Hadoop、Cassandra、HBase和NoSQL,这些都是构建大规模分布式数据存储和处理系统的基础。 **Hadoop** 是一个开源的框架,主要用于处理和存储大量数据。《Hadoop权威指南》是了解...

Global site tag (gtag.js) - Google Analytics