cassandra 系统分析 架构
cassandra
cassandra是无中心节点的列式数据库
集群管理:
使用gossip算法,最终每个节点都知道集群中的所有节点信息,新增一个节点,新节点发送上线消息,
其他节点之后后,向邻居节点传播这个消息,邻居又向他的邻居传递,最终大家都知道了
数据路由:
使用一致性hash算法,每一条数据和节点都有一个hash值,都处于一个hash环上
写数据:
客户端连接到任意一个节点,这个节点就是这次写请求的协调者,协调者计算数据的hash,看这个hash值属于哪个节点管辖,把这个数据转发给这个节点(这个是数据的第一副本),协调者还会根据副本策略把数据同步到多个其他节点(这个是第二、第三 ...第N 副本了)
读数据:
客户端连接到任意一个节点,这个节点就是这次读请求的协调者,协调者计算数据的hash,看这个hash值属于哪个节点管辖,向这个主机发送读数据请求,不同的备份策略下,协调者也可能会向备份节点发送读数据请求,获取结果返回给客户端
数据存储模型:
使用列式存储,和hbase类似
写入、删除、修改数据时,是在文件后追加数据操作,并不真正(或者在内存中写入了)写入、删除、修改数据,是顺序IO ,效率很高
系统可用性:
数据会被备份,除非副本机器全部宕机,不然总能找到数据
任意节点知道系统所有节点,能完成任意的数据路由,所以有节点宕机,对系统可用性没影响(除非大规模宕机,导致存活的节点压力剧增)
数据一致性:
多副本之间一致性,使用NRW模型
W:写成功的节点数
R:读成功的节点数
N: 副本数量
满足W + R > N 这个要求,就能保证数据强一致性
系统性能:
写、修改性能较好
因为写数据都是顺序IO,性能较高
读性能正常
因为要读多个副本,导致性能稍低
以上这些性能描述都不是定量的结论,只是和其他NOSQL相比较的相对性能
最新文章
- 客服小妹是如何泡到手的——C#定时提醒·语音录制·语音播放·文件转录Demo源码——倾情奉献!
- linux防火墙开启端口
- 背水一战 Windows 10 (27) - 控件(文本类): TextBlock
- OC中的内存管理
- Code First开发系列之管理并发和事务(转)
- C语言,不是从hello world开始
- java多线程一览
- What is the difference for delete/truncate/drop
- Java面试准备之JVM
- python(Django之Logging、API认证)
- 绝对精品推荐做前端的看下:Web前端开发体会十日谈
- Linux里的2>;&;1究竟是什么
- El表达式对照表
- DataGrip 连接数据库查询出来的结果乱码的问题
- 20155326 2006-2007-2 《Java程序设计》第4周学习总结
- django表单字段
- Selenium Webdriver 的 PageObject 改造
- .NET 4.5 Task异步编程学习资料
- Maven结构下 properties 读取
- LeetCode OJ:Range Sum Query 2D - Immutable(区域和2D版本)
热门文章
- 一、VIP课程:互联网工程专题 03-Maven基本概念与核心配置
- # vim ~/.vimrc vim配色
- SpringCloud学习之Sleuth服务链路跟踪(十二)
- JAVAEE 和项目开发(第二课:HTTP协议的特点和交互流程)
- React + umi +antd+antv/g6 实现力图
- 文献阅读报告 - Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks
- 将本地项目映射到外网(tomcat web项目)
- 新手转行必知!Python和Java到底有啥区别?
- 碎碎念(DP)
- 电脑连接了HDMI线,电脑没有声音了,原因和解决办法