结构

集群-->数据中心-->机架-->节点。

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)的更多相关文章

  1. cassandra权威指南读书笔记--Cassandra架构(3)

    分阶段事件驱动架构 SEDASEDA(Staged Event-Driven Architecture)的核心思想是把一个请求处理过程分成几个Stage,不同资源消耗的Stage使用不同数量的线程来处 ...

  2. cassandra权威指南读书笔记--Cassandra架构(2)

    环和令牌cassandra的数据管理是用一个环来表示.为环中的每个节点分配一or多个数据范围,用token描述.token由64位整数ID表示,范围-2^(63)~2^(63)-1.使用对分区键进行一 ...

  3. cassandra权威指南读书笔记--cassandra查询语言

    cassandra使用一个特殊主键(复合键)表示宽行,宽行也叫分区.复合键由一个分区键和一组可选的集群列组成.分区键用于确定存储行的节点,分区键也可以包含多个列.集群键用于控制数据如何排序以及在分区中 ...

  4. cassandra权威指南读书笔记--cassandra概述

    cassandra是一个开源的.分布式.去中心化.弹性可扩展.高可用.容错.可调一致性.面向行数据库,分布式设计基于Amazon Dynamo,数据模型基于Google BigTable.cassan ...

  5. cassandra权威指南读书笔记--安全

    认证和授权driver,JMX和cassandra服务器支持SSL/TLS,cassandra节点间也支持SSL/TLS.密码认证器cassandra还支持自定义,可插拔的认证机制.默认的认证器:or ...

  6. cassandra权威指南读书笔记--客户端

    DataStax驱动最成熟.默认,驱动程序会使用第一个连接的节点作为支持的版本协议.如果集群存在高低版本的节点(比如升级场景),如果驱动先连接不同不同版本的节点,可能会出现不兼容.驱动支持压缩客户端和 ...

  7. cassandra权威指南读书笔记--性能调优

    cassandra自带测试工具cassandra-stress.nodetool proxyhistograms可以在多个节点运行,发现最慢的协调节点.nodetool tablehistograms ...

  8. cassandra权威指南读书笔记--监控&维护

    cassandra SLF4J API记录日志,具体采用Logback实现.在终端启动cassandra时,可以向程序输入-f,就能在终端看到这个输出.Java Mangement Extension ...

  9. cassandra权威指南读书笔记--读写数据

    写cassandra除了轻量级事务,不支持别的事务.cassandra是追加写,写的速度非常快.cassandra还有hint日志,这个数据库总是可写的,而且单个列的写操作是原子的.hint并不是一定 ...

随机推荐

  1. hive优化之小文件合并

    文件数目过多,会给HDFS带来压力,并且会影响处理效率,可以通过合并Map和Reduce的结果文件来消除这样的影响: set hive.merge.mapfiles = true ##在 map on ...

  2. ES6+Webpack+Babel基本环境搭建

    ### 本文基本是流水文,记录学习中步骤,希望对看到的你有用,蟹蟹. 基本环境搭建 技术栈 Webpack ES6 Babel 开发环境 VS Code Node 搭建环境过程 新建项目文件夹

  3. 你还不知道mysql中空值和null值的区别吗?

    前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...

  4. Linux 入门教程:基础操作 01

    1.1 实验内容 实验楼环境介绍 常用 Shell 命令及快捷键 Linux 使用小技巧 1.2 实验知识点 Linux 基本命令 通配符的使用 查看帮助文档 终端的概念 通常我们在使用 Linux ...

  5. TCP/IP协议栈在Linux内核中的运行时序分析

    网络程序设计调研报告 TCP/IP协议栈在Linux内核中的运行时序分析 姓名:柴浩宇 学号:SA20225105 班级:软设1班 2021年1月 调研要求 在深入理解Linux内核任务调度(中断处理 ...

  6. 终于可以愉快的撸Java异步代码了!

      异步响应式编程可以极大的提高系统的并发呑吐量,但由于Java没有类似于其他语言的Async/Await机制,所以只能通过CompletableFuture.thenXXX()来串联各个异步任务,这 ...

  7. MySQL常用字符串函数和日期函数

    数据函数 SELECT ABS(-8); /*绝对值*/ SELECT CEILING(9.4); /*向上取整*/ SELECT FLOOR(9.4); /*向下取整*/ SELECT RAND() ...

  8. 串口使用Pipeline时诡异的ReadOnlySequence问题

    借鉴之前的Pipeline的操作方式,现在目标是给串口读取操作也使用上Pipeline.稍微改造一下,以下代码可以直接运行. 协议为使用连续的4个0XFF作为结尾,没有头标志.数据总长为68位定长. ...

  9. 【EXP】exp-00091解决办法

    如果遇到exp的话一般都是因为字符集的问题 解决办法: 1.在oracle中查看数据库的字符集 SQL> select userenv('language') from dual; USEREN ...

  10. CTFHub - Web(一)

    请求方法: 1.进入页面,提示:HTTP 请求方法, HTTP/1.1协议中共定义了八种方法(也叫动作)来以不同方式操作指定的资源. 2.当前http的请求方式是get请求,当你使用CTFHUB为请求 ...