cassandra的架构——Data distribution and replication(分布式存储和复制)

    本篇来回答上一篇的问题:cassandra选择了CAP中的AP,但没有撇下C,他是如何做到的?或者会出现下面的问答。

Q:原来只有一台服务器的时候,一旦当机,我们就只能等着了。。。现在我们有了分布式集群,妈妈再也不用担心我不能提供服务了吗?

A:当然,我们把数据分散在了不同的机器上,一台机器倒下了,千百个机器(前一台机器的复本)站出来。

Q:①如何均匀的分散数据到集群的不同机器上,以分担负载,避免热点(hot spot)?

       ②如何选择其他的机器作为我的复本机器呢?

       ③其中一台机器当机了,它存储的数据怎么办?我又新加了一台机器,怎么把数据分给它?


cassandra的架构是一个Peer-to-Peer(点对点)分布式模型,与现行的master-slave的主从结构不同处在于:

  • master-slave:master节点负责接收数据,slave节点从master节点处复制数据,会有潜在的单点故障(single point of failure)
  • Peer-to-Peer:所有的节点在结构上都是等同的,所有的节点都可以接收数据,并把数据分发给关联的节点去复制,从而避免了单点故障
    针对这些结构上对等的数据节点和它将要存储的数据,cassandra使用一致性哈希(consistent hashing)来解决上述几个问题(借鉴了Dynamo的设计),在cassandra1.2之前,没有引入virtual Node的结构,单纯的使用一致性哈希ring,1.2之后使用了virtual node的设计,这一点也许也是认可了Dynamo的设计。PS:下面的内容基于对一致性哈希的了解。

数据分布——一致性哈希

<
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 1、课程简介 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性,被等知名网站所采纳,成为了一种流行的分布式结构化数据存储方案。 Cassandra在2009年成为了Apache软件基金会的Incubator项目,并在2010年2月走出孵化器,成为正式的基金会项目。 2、适应人群 有一定的Java以及JavaWeb编程基础,了解关系型数据库,对NoSQL数据库有一定了解。 3、主讲内容 Cassandra是目前流行的NoSQL数据库,在企业中的应用广泛。 内容主要分为以下几部分: 一、Cassandra基础知识 二、Cassandra安装环境配置 三、Cassandra的基本使用 四、Cassandra的Java客户端使用 五、Cassandra的核心知识点 4、课程目录 第1节 - 01-数据存储和NoSQL概述 第2节 - 02-NoSQL数据库的分类 第3节 - 03-Cassandra的介绍和下载 第4节 - 04-Windows下Cassandra3.9的安装和环境变量设置 第5节 - 05-Windows下Cassandra的配置 第6节 - 06-Windows下cassandra的启动 第7节 - 07-Centos下安装配置启动Cassandra 第8节 - 08-Cassandra的端口和配置文件介绍 第9节 - 09-数据库模型-列-列族-键空间 第10节 - 10-数据模型-副本-节点-数据中心-集群 第11节 - 11-cassandra的数据类型 第12节 - 12-Cassandra的其他常用命令 第13节 - 13-CQL的介绍 第14节 - 14-创建键空间 第15节 - 15-键空间的使用-修改-删除 第16节 - 16-创建表-查看表 第17节 - 17-Cassandra的索引 第18节 - 18-Cassandra表修改-删除-清空 第19节 - 19-在普通列创建索引 第20节 - 20-插入数据-设置有效期 第21节 - 21-查询数据-在查询时的索引使用 第22节 - 22-更新列数据 第23节 - 23-删除和-批量操作
Python分布式存储通常是指使用Python编程语言来实现分布式存储系统。分布式存储系统是一种将数据分散存储在多个计算机节点上的系统,以提高数据的可靠性、可扩展性和性能。 在Python中,有几种常用的方法可以实现分布式存储: 1. 分布式文件系统(Distributed File System,DFS):DFS是一种通过网络连接多个计算机并将它们的存储资源组合在一起的文件系统。通过使用Python编写的分布式文件系统库,如PyFilesystem2或PyDFS,可以在Python应用程序中实现分布式文件存储。 2. 分布式键值存储(Distributed Key-Value Store):键值存储是一种以键值对形式存储数据的存储系统。一些流行的Python库,如Redis和Memcached,提供了分布式键值存储的功能,可以用于在分布式环境中存储和检索数据。 3. 分布式对象存储(Distributed Object Storage):对象存储是一种将数据作为对象进行管理和存储的方法。一些分布式对象存储系统,如Ceph和Swift,支持Python客户端库,可以用于实现分布式对象存储。 4. 分布式数据库(Distributed Database):分布式数据库系统将数据存储在多个节点上,并提供数据复制、分片和分布式事务等功能。一些流行的分布式数据库,如Apache Cassandra和MongoDB,提供了Python驱动程序,可以使用Python来访问和操作分布式数据库。 以上是一些常见的方法,用于在Python中实现分布式存储系统。具体选择哪种方法取决于应用的需求和情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值