文档章节

走进cassandra 之一 CAP和分布式

chenkangyao
 chenkangyao
发布于 2016/07/19 13:11
字数 1262
阅读 24
收藏 0
点赞 0
评论 0

决定share一下我的cassandra学习成果,写一些博客,跟大家共同分享一下,准备写10篇文章,内容分别涉及


分布式存储概述及CAP,
数据模型,
分区器,
副本机制,
存储机制,
数据读写删,
最终一致性,
gossip,
cassandra的实际应用,
学习总结。

先写第一篇,先说咋理解分布式。

这术语解释起来拗口,举个例子就比较好理解了。
比如说参与cloudtask这个项目的人,有好几拨,有王薇 team,有徐超 team, 有韶涵 team, 有田萌 team, 有红艳 team.
为啥分成几拨人来做呢?
为啥不是james大侠(CTO)一力承担?

因为james智慧再高超,本领再强大,也没有办法一个人处理所有事情。
计算机里有两个词,一个叫纵向扩展,一个叫横向扩展,james加班加点看代码,这个是纵向扩展,这个扩展是有限的,扩展到24个小时,就到头了。
因为此,较为可行的办法是横向扩展,就是如前所说的,分成几拨人来做,这就是分布式了。

分布式的优点是大大的,最明显的就是可以同时处理很多事情,可以同时响应很多请求。
分布式万岁!

且慢!
啥东西也不是光有优点,分布式的缺点也是大大的。
这缺点,其实很容易想到,刚才的例子中,工作分了几拨人来做,每人都是James吗? NO。每人都会有自己的认知,每人的认知都不同,分成5波人来做,5波人就有5个认知,所以要怎么办呢?

沟通。

需要花费不少时间精力来沟通,这就是分布式的缺点。

沟通到大家认识在一个水平,这叫同步。
沟通的时候有部分人没有完全理解,这叫信号丢失。
沟通的时候,发现开发组和测试组思路完全不一样,这就等同于俩数据中心。

如上所述,分布式的优点大大的,缺点也是大大的,下面就是你如何取舍了。
想要鱼还是想要熊掌。

为了让你取舍有个标准,有位大师研究出一个理论,CAP理论。

这位大师就是EricBrewer教授,他提出,在设计和部署分布式应用的时候,存在三个核心的系统需求:

C: Consistency 一致性

A: Availability 可用性

P:Partition Tolerance分区容错性

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

总而言之,三个只能取其二。

对应的业界的名言就是 一个软件,可以很好,也可以很快,也可以很便宜,但是这三个,你永远只能要求两个。

那么CAP到底是咋个回事呢?
● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。
● 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(可用性不仅包括读,还有写)
● 分区容忍性(P):集群中的某些节点在无法联系后,集群整体是否还能继续进行服务.
对比我们上面的例子,比如james写了一个push的需求,你不管去问王薇还是韶涵,结果必须是一样的。
可用性就是,即使今天徐超请假了,工作仍不能耽误,项目继续进行。
分区容忍性,典型的例子就是,如果中美之间海底电缆断了,北京和总部已经不能沟通,你这项目还能继续往下做。
就像我们说过的,这三个特性,你只能要俩。


在数据库的世界里面,关系型数据库讲究的是 ACID,什么意思呢?
原子性(Atomicity).
事务中的所有操作,要么全部成功,要么全部不做.
一致性(Consistency)
在事务开始与结束时,数据库处于一致状态.
隔离性(Isolation).
事务如同只有这一个操作在被数据库所执行一样.
持久性(Durability).
在事务结束时,此操作将不可逆转.

在分布式领域,有一个对应的模型叫 BASE.

Basically Available(基本可用)
Soft state(柔性状态)
状态可以有一段时间不同步,异步
Eventually consistent(最终一致)
最终数据是一致的就可以了,而不是时时一致

我们使用的 MySQL, 遵循的是 ACID, 现在使用的  cassandra,遵循的是BASE。
BASE的基础,就是CAP理论。
cassandra在CAP里面,取的是AP,舍的是C,注意:并不是完全不要C,而是要了一个弱化的C。
也就是最终一致,不是时时一致。

© 著作权归作者所有

共有 人打赏支持
chenkangyao
粉丝 4
博文 29
码字总数 36163
作品 0
广州
高级程序员
"一言蔽之系列"--简说SQL与NoSQL那些事

一言蔽之,NoSQL ==Not Only SQL ,字面意思是“不仅仅是SQL”,是一类非关系型存储的数据库的统称 文章结构: 1、关系型数据库:ACID理论 2、非关型系数据库:分布式存储理论、CAP理论、BAS...

流川枫AI ⋅ 2017/04/19 ⋅ 0

Cassandra – 理解关键概念和数据模型

Cassandra的设计理论倾向于实现CAP原则中的AP(Availability and Partition Tolerance)——高可用性和分布式,它的分布式是基于一致性哈希环(Consistent Hash Ring)算法实现的。 面向行(...

Justina_Chen ⋅ 2013/12/09 ⋅ 0

关于分布式系统的思考

谈及一些分布式系统的理论和思想,包括CAP、BASE、NWR等。并简单分析一些主流数据库分布式方案的利弊,以便我们在开发时更深入全面地进行思考、选择和设计。 在讨论常见架构前,先简单了解下...

力谱宿云 ⋅ 2016/08/25 ⋅ 1

如果你对NoSQL技术感兴趣的话,这里有一个很好的培训和认证的机会(免费)

http://www.datastax.com/what-we-offer/products-services/training/virtual-training Cassandra是NoSQL市场现在最热门的产品之一。它是一个跨平台的分布式,高性能,高可靠性的开源数据库,...

David12345 ⋅ 2013/11/23 ⋅ 0

cassandra architecture

Apache Cassandra是一个开源的、分布式、无中心、弹性可扩展、高可用、容错、一致性可调、面向列的数据库,它基于Amazon Dynamo的分布式设计和Google BigTable的数据模型。 分布式无中心 可以...

Jun_Wong ⋅ 01/10 ⋅ 0

后Hadoop时代的大数据架构(转)

原文:http://zhuanlan.zhihu.com/donglaoshi/19962491 作者: 董飞 提到大数据分析平台,不得不说Hadoop系统,Hadoop到现在也超过10年的历史了,很多东西发生了变化,版本也从0.x 进化到目前...

长征2号 ⋅ 2017/11/01 ⋅ 0

分布式系统及NoSQLl简介

分布式系统及NoSQL简介 ============================================================================== 数据存储 1.数据存储 ★数据模型: 层次模型; 网状模型; 关系模型; 对象关系模...

逐梦小涛 ⋅ 2017/03/24 ⋅ 0

2011年度最佳十大开源软件盘点

【IT168 评论】2011年是一个开源项目标志性的一年。正因如此,挑选 10 个最重要的是相当困难的。要判断的重要性,应该是影响深远,并且日益普及的项目,或在新领域中的技术佼佼者。   Had...

伯乐在线 ⋅ 2011/12/16 ⋅ 0

后Hadoop时代的大数据架构

背景篇 Hadoop: 开源的数据分析平台,解决了大数据(大到一台计算机无法进行存储,一台计算机无法在要求的时间内进行处理)的可靠存储和处理。适合处理非结构化数据,包括HDFS,MapReduce基本...

莫问viva ⋅ 2016/09/08 ⋅ 0

分布式存储系统设计的若干原则

1、CAP理论 2000年Eric Brewer教授提出了著名的CAP理论,即:一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。2002年MIT的Seth Gilbert 和 Nancy ly...

红薯 ⋅ 2011/08/10 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

iExec Blockchain Marketplace for Cloud

iExec Releases the First-Ever Blockchain Marketplace for Trading Cloud Computing Berlin, Germany, May 29, 2018. iExec has released its blockchain-based decentralized cloud marke......

openthings ⋅ 16分钟前 ⋅ 0

OSChina 周二乱弹 —— 加班的代码不要枉费了我的童子功

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《29》- 未完成乐队 《29》- 未完成乐队 手机党少年们想听歌,请使劲儿戳(这里) @FalconChen :#看球提醒# 02:00 巴西v...

小小编辑 ⋅ 35分钟前 ⋅ 11

Docker Swarm的前世今生

概述 在我的《Docker Swarm集群初探》一文中,我们实际体验了Docker Swarm容器集群技术的魅力,与《Kubernetes实践录》一文中提到的Kubernetes集群技术相比,Docker Swarm没有Kubernetes显得...

CodeSheep ⋅ 今天 ⋅ 0

骰子游戏代码开源地址

因为阿里云现在服务器已经停用了,所以上面的配置已经失效。 服务端开源地址:https://gitee.com/goalya/chat4.git 客户端开源地址:https://gitee.com/goalya/client4.git 具体运行界面请参考...

算法之名 ⋅ 今天 ⋅ 0

设计模式--装饰者模式

装饰者模式 定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 通用类图 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比...

gaob2001 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部