结构

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

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. 为什么Elasticsearch不适合做数据存储?(转学习使用)

    一.问题描述 公司想尝试使用Elasticsearch来存一部分数据,以此缓解数据增长带来的对数据库的压力.在研究了一段时间后,发现Elasticsearch不适合作为数据存储使用. 二.理由如下 1 ...

  2. 数据仓库组件:HBase集群环境搭建和应用案例

    本文源码:GitHub || GitEE 一.Hbase简介 1.基础描述 Hadoop原生的特点是解决大规模数据的离线批量处理场景,HDFS具备强大存储能力,但是并没有提供很强的数据查询机制.HBa ...

  3. WPF TreeView Indent 减少节点的缩进

    www.swack.cn - 原文链接:WPF TreeView Indent 减少节点的缩进 问题 最近一个需求,需要在界面中实现Windows资源管理器TreeView的界面.但是我发现,我做出的 ...

  4. JVM-03

    目录 1.1 新生代垃圾收集器 1.1.1 Serial 垃圾收集器(单线程) 1.1.2 ParNew 垃圾收集器(多线程) 1.1.3 Parallel Scavenge 垃圾收集器(多线程) 2 ...

  5. 工具用的好,下班回家早!5分钟玩转iTerm2!

    同时打开多个终端窗口,来回切换太麻烦! 能不能像IDEA一样,能够查看历史粘贴记录? 有没有办法一键登陆服务器? 工欲善其事,必先利其器!无论工作还是学习,选择好用的工具真的太重要了.今天就给大家介绍 ...

  6. 【JavaWeb】JSTL 标签库

    JSTL 标签库 简介 JSTL(JSP Standard Tag Library),即 JSP 标准标签库.标签库是为了替换代码脚本,使得整个 jsp 页面变得更加简洁. JSTL 有五个功能不同的 ...

  7. 剑指offer 查找和排序的基本操作:查找排序算法大集合

    重点 查找算法着重掌握:顺序查找.二分查找.哈希表查找.二叉排序树查找. 排序算法着重掌握:冒泡排序.插入排序.归并排序.快速排序. 顺序查找 算法说明 顺序查找适合于存储结构为顺序存储或链接存储的线 ...

  8. LeetCode448-数组中消失的数字

    题目 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间没有出现在数组中的数字. 您能 ...

  9. Centos7安装Jenkins和目录迁移

    Centos7安装Jenkins和目录迁移 内容: 安装Jenkins和相关的配置 尝试目录迁移,模拟磁盘空间不足 1. 安装Jenkins和配置 安装 根据Jenkins的官方安装指引,安装步骤如下 ...

  10. 阿里云 RTC QoS 屏幕共享弱网优化之若干编码器相关优化

    屏幕共享是视频会议中使用频率最高的功能之一,但在实际场景中用户所处网络环境复杂,常遇到丢包或者拥塞的情况,所以如何优化弱网环境下的用户体验也成为了音视频通信中重要的一环.本文主要分享阿里云 RTC Q ...