cassandra权威指南读书笔记--Cassandra架构(1)
结构
集群-->数据中心-->机架-->节点。
cassandra尽可能将数据副本存在多个数据中心,然后读取(查询路由到)尽可能在本地数据中心。
为了去中心化和分区容错性,使用gossip协议。允许各个节点跟踪其他节点的状态信息。
cassandra gossip详情可以参考:
https://blog.csdn.net/weixin_38916872/article/details/81334014
https://zhaoyanblog.com/archives/1017.html
Gossip
gossip就像流行病一样,相互传输,最终达到一致。初始,每个节点都通过配置知道种子节点,和种子交互,然后还有选一个不可达的节点交互。每个节点都这么做,最终达成一致。每秒交互一次,每次交互全量的节点信息,一段时间后,获取全部集群节点信息。
故障检测
cassandra节点判断是否down的方案是使用Phi Accrual Failure Detection。不是传统的心跳,传统的心跳就是收到就认为活着,没收到就认为是死掉。
Phi的方式是使用累计故障的检测方式,具体可以参考:
https://www.cnblogs.com/yuhan-TB/p/4746510.html
Phi Accrual Failure Detection的论文。
简单来说,就是通过历史的心跳采样数据,制作泊松分布, 或者指数分布。带入上一次拿到那个节点的心跳时间,计算概率,再通过转换,如果算出来的值大于phi_convict_threshold,就是down,否则就是live。所以phi_convict_threshold越小越灵敏。
snitch(告密者)感应策略
snitch的任务是确定一个集群中各个节点的相对主机远近程度,这可以用来确定要读写哪些节点。snitch会收集网络拓扑的有关信息,使cassandra能够高效地路由请求。snitch可以确定节点相对其他节点的位置。
cassandra查询是先获取大多数副本的Hash摘要,如果Hash摘要一致,选择一个副本来获取整个对象。snitch的作用就是帮助识别能最快返回的副本,从而向这个副本查询完整数据。默认snitch与拓扑无关,不适合多数据中心部署。cassandra为不同的云环境提供多个snitch,可插拔,包括Amazon EC2,Google cloud,apache cloudstack。org.apache.cassandra.locator找到。
还有动态snitch,用来优化读写操作的路由。DynamicEndpointSnitch,从所选的snitch得到基本的拓扑信息,然后检测节点请求性能(包括合并数据),用来为每个查询提供最合适的副本。
动态snitch有个badness threshold配置,用来确定一个优先节点必须比表现最好的节点糟糕多少才会失去其优先地位。每个节点的表现会定期重置。
cassandra权威指南读书笔记--Cassandra架构(1)的更多相关文章
- cassandra权威指南读书笔记--Cassandra架构(3)
分阶段事件驱动架构 SEDASEDA(Staged Event-Driven Architecture)的核心思想是把一个请求处理过程分成几个Stage,不同资源消耗的Stage使用不同数量的线程来处 ...
- cassandra权威指南读书笔记--Cassandra架构(2)
环和令牌cassandra的数据管理是用一个环来表示.为环中的每个节点分配一or多个数据范围,用token描述.token由64位整数ID表示,范围-2^(63)~2^(63)-1.使用对分区键进行一 ...
- cassandra权威指南读书笔记--cassandra查询语言
cassandra使用一个特殊主键(复合键)表示宽行,宽行也叫分区.复合键由一个分区键和一组可选的集群列组成.分区键用于确定存储行的节点,分区键也可以包含多个列.集群键用于控制数据如何排序以及在分区中 ...
- cassandra权威指南读书笔记--cassandra概述
cassandra是一个开源的.分布式.去中心化.弹性可扩展.高可用.容错.可调一致性.面向行数据库,分布式设计基于Amazon Dynamo,数据模型基于Google BigTable.cassan ...
- cassandra权威指南读书笔记--安全
认证和授权driver,JMX和cassandra服务器支持SSL/TLS,cassandra节点间也支持SSL/TLS.密码认证器cassandra还支持自定义,可插拔的认证机制.默认的认证器:or ...
- cassandra权威指南读书笔记--客户端
DataStax驱动最成熟.默认,驱动程序会使用第一个连接的节点作为支持的版本协议.如果集群存在高低版本的节点(比如升级场景),如果驱动先连接不同不同版本的节点,可能会出现不兼容.驱动支持压缩客户端和 ...
- cassandra权威指南读书笔记--性能调优
cassandra自带测试工具cassandra-stress.nodetool proxyhistograms可以在多个节点运行,发现最慢的协调节点.nodetool tablehistograms ...
- cassandra权威指南读书笔记--监控&维护
cassandra SLF4J API记录日志,具体采用Logback实现.在终端启动cassandra时,可以向程序输入-f,就能在终端看到这个输出.Java Mangement Extension ...
- cassandra权威指南读书笔记--读写数据
写cassandra除了轻量级事务,不支持别的事务.cassandra是追加写,写的速度非常快.cassandra还有hint日志,这个数据库总是可写的,而且单个列的写操作是原子的.hint并不是一定 ...
随机推荐
- Spark的checkpoint源码讲解
一.Checkpoint相关源码分为四个部分 1.Checkpoint的基本使用:spark_core & spark_streaming 2.初始化的源码 3.Checkpoint的 ...
- 测试如何区分前后端bug
当我们测试到前后端分离的项目时,可能就会想这个bug我到底应该指给谁,是前端的问题还是后端的呢,为了让自己更专业,分清前后端问题还是很重要的. 1.如图商品详情中显示[件装:1,中包装:2 ]但是在后 ...
- Java 使用线程池执行若干任务
在执行一系列带有IO操作(例如下载文件),且互不相关的异步任务时,采用多线程可以很极大的提高运行效率.线程池包含了一系列的线程,并且可以管理这些线程.例如:创建线程,销毁线程等.本文将介绍如何使用Ja ...
- 使用vs code搭建Q#开发环境 (Mac)
Q# 是微软几年前发布的一门用于模拟量子编程的语言. 3年前我在当时风靡的博客网站 ITEYE 上发布过如何在windows上搭建其开发环境:Q#开发环境搭建.时过境迁,不但iteye不知何处去,连Q ...
- 【Problems】端口被占用 查看是被谁占用并关闭它
文章目录 Windows Linux 经常在Windows.Linux环境下运行JavaWeb项目,Tomcat的端口被占用了. 端口被占用就查看是被谁占用关闭它就行. Windows 在Window ...
- 【Linux】cron
每五分钟执行 */5 * * * * 每小时执行 0 * * * * 0 */1 * * * 效果相同 每天执行 0 0 * * * 每周执行 0 0 ...
- C语言目的概念(C语言学习笔记)
什么是目 目是针对操作符来说的,一个操作符影响两个操作数就表示该操作符为双目运算符 举个例子: 1+2 这里的加号影响了1和2两个操作数,所以"+"就是双目运算符 +1,-1 这里 ...
- ABAP 多表联合查询
inner join(等值连接) 只返回两个表中联结字段相等的行left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) 返回包括右表中的所有记录 ...
- 优化太多的if-else
来源java小当家 第1种方法:提前return,减少else判断 1 // 1.优化前 2 private int handlerPre1(boolean flag) { 3 if(flag){ 4 ...
- 面试官问我CAS,我一点都不慌
文章以纯面试的角度去讲解,所以有很多的细节是未铺垫的. 文章中写到的处理线程安全的思路每一项技术都可以写出一篇文章,AQS.Synchronized.Atomic...周末肝起来!下周再来给大家安排! ...