结构

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

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. tep0.6.0更新聊聊pytest变量接口用例3个级别复用

    tep是一款测试工具,在pytest测试框架基础上集成了第三方包,提供项目脚手架,帮助以写Python代码方式,快速实现自动化项目落地.fixture是pytest核心技术,本文聊聊如何使用fixtu ...

  2. Kubernetes官方java客户端之五:proto基本操作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. NOIP初赛篇——07信息编码表示

    一.基本概念 编码 ​ 计算机要处理的数据除了数值数据以外,还有各类符号.图形.图像和声音等非数值数据.而计算机只能识别两个数字0,1.要使计算机能处理这些信息,首先必须要将各类信息转换成0与1表示的 ...

  4. LeetCode344 反转字符串

    编写一个函数,其作用是将输入的字符串反转过来. 示例 1: 输入: "hello" 输出: "olleh" 示例 2: 输入: "A man, a p ...

  5. mybatis入门教程之搭建一个简单的mybatis项目并启动它

    一.准备条件: 1.依赖jar包:mybatis核心包(必须).lombok插件包(非必须)以及MySQL数据库连接驱动包(必须) <dependency> <groupId> ...

  6. 2019 Eclipse的下载与安装教程

    Eclipse 是一个开放源代码的.基于Java的可扩展开发平台,可以免费下载使用. 首先我们先进入这个软件的官网:https://www.eclipse.org/ 点击这个网页download下载: ...

  7. 使用SimpleUpdater实现现有程序升级功能

    项目:https://github.com/iccfish/FSLib.App.SimpleUpdater C/S程式一般需要部署在多台机器上,如果程式有变动,需要一台一台重新安装,相当麻烦,如果我们 ...

  8. 使用ogg实现oracle到postgresql表的实时同步

    参考:https://docs.oracle.com/goldengate/c1221/gg-winux/index.html https://blog.51cto.com/hbxztc/188071 ...

  9. Cookie&Session&Jsp总结

    知识点梳理 Cookie&Session&Jsp 1 会话技术 1.1 会话管理概述 1.1.1 会话技术介绍 会话:浏览器和服务器之间的多次请求和响应 (一次对话) 为了实现一些功能 ...

  10. Nginx基础环境搭建

    1.下载docker toolbox https://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 2.选择好安装目录 一路nex ...