cassandra 3.x官方文档(3)---gossip通信协议及故障检测与恢复
写在前面
cassandra3.x官方文档的非官方翻译。翻译内容水平全依赖本人英文水平和对cassandra的理解。所以强烈建议阅读英文版cassandra 3.x 官方文档。此文档一半是翻译,一半是个人对cassandra的认知。尽量将我的理解通过引用的方式标注,以示区别。另外文档翻译是项长期并有挑战的工作,如果你愿意加入cassandra git book,可以发信给我。当然你也可以加入我们的QQ群,104822562。一起学习探讨cassandra.
Gossip
Gossip 是一个对等网络通信协议,节点间断性的交换他们自身的状态信息以及其他它们知道的节点信息。gossip 每秒中和集群中最多三个节点交换信息。不仅交换他们自身信息,而且还交换通过之前的gossip通信了解的其他节点信息,所以所有的节点能够很快的了解集群中的其他节点状况。一条gossip 信息会有一个相关联的版本号,因此当进行gossip交换的时候,对于一个特定的节点,它的老信息就会被最近的状态所覆盖。
为了阻止gossip通信可能出现的问题,集群中所有的节点都有相同的seed nodes列表。这一点在一个节点第一次启动的时候尤其重要。默认情况下,一个节点在随后的重启过程中会记住已经gossip的其他节点。seed node就是为了新节点加入到集群中,bootstrap过程中使用的。不是为了单点失败,也没有其他特别的目的。
注意:
在多数据中心集群环境,确保每个数据中心至少有一个节点在seed list中。为了容错建议每个数据中心指派多个seed node,否则当一个节点bootstrap时,需要同其他数据中心gossip。
不建议把每个节点都设置为seed node,因为会增加维护的成本以及降低了gossip的性能。gossip优化并不是特别重要,但是建议使用一个小的seed 列表(每个数据中心3个节点最佳)
失败检测和恢复
失败检测是一种为本地决策提供信息的方法,从gossip的状态和历史获取信息,判断系统中的一个节点是否down了或者已经恢复了。Cassandra 利用这个信息避免将客户端的请求路由到任何时候有可能不可到达的节点。(cassandra 同样能够通过Dynamic Snitch)避免将客户端请求路由到那些存活的但是性能比较差的节点上。
gossip过程能够跟踪其他节点的状态,通过直接(直接与某个节点gossip)或非直接(通过二手,三手等)方式。相比于一个固定的阈值来标记一个节点为fail,Cassandra 采用一个自然增长的检测机制来计算每个节点的阈值,考虑到了网络、负载、历史状况等因素。当进行gossip交换时,每个节点维护了一个其他节点gossip信息到达的滑动窗口时间。可以通过配置phi_convict_threshold属性来调节失败检测的敏感性。值越低,一个没有应答的节点更有可能被标记为down,值越高,短暂的失败更低可能的被标记为失败。大部分情况下,默认值就可以了。但是在Amazon EC2上需要增加到10或者12.(因为常常会遇到网络拥堵),在不稳定的网络环境中(比如EC2),提高值到10或者12可以帮助避免错误的失败检测。不建议使用高于12,或者低于5的值。
节点失败可能有各种各样的原因造成的,比如硬件失败,网络电力供应中断。节点中断经常是短暂的但是有可能持续很长时间的。因为一个节点中断很少意味着永久离开集群,不会自动从集群ring中移除。其他的节点会周期性的尝试和失败的节点重新建立联系,看它们是否已经回归。想要永久的改变集群节点的成员关系,需要管理员通过notetool明确的将节点添加进来或者移除出集群。
当一个节点经过down到重新回归的,可能会丢失掉它需要维护的副本数据。repair可以帮助恢复这些数据,比如hinted handoffs以及手动repair.节点down掉的时间决定了通过哪种机制来保持数据的一致性。
注:
hintedhandoff有时间限制,默认三小时,超过此时间前面的数据会不断的被覆盖掉。必须要手动repair
cassandra 3.x官方文档(3)---gossip通信协议及故障检测与恢复的更多相关文章
- cassandra 3.x官方文档(5)---探测器
写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...
- cassandra 3.x官方文档(2)---架构解析
写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...
- cassandra 3.x官方文档(6)---内部原理之存储引擎
写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...
- cassandra 3.x官方文档(4)---分区器
写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...
- Cassandra 3.x官方文档(1)---关于Cassandra
写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...
- cassandra 3.x官方文档(7)---内部原理之如何读写数据
写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...
- Spark官方文档 - 中文翻译
Spark官方文档 - 中文翻译 Spark版本:1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linki ...
- 《Spring 5官方文档》 Spring AOP的经典用法
原文链接 在本附录中,我们会讨论一些初级的Spring AOP接口,以及在Spring 1.2应用中所使用的AOP支持. 对于新的应用,我们推荐使用 Spring AOP 2.0来支持,在AOP章节有 ...
- Lagom 官方文档之随手记
引言 Lagom是出品Akka的Lightbend公司推出的一个微服务框架,目前最新版本为1.6.2.Lagom一词出自瑞典语,意为"适量". https://www.lagomf ...
随机推荐
- 【Java入门提高篇】Day15 Java泛型再探——泛型通配符及上下边界
上篇文章中介绍了泛型是什么,为什么要使用泛型以及如何使用泛型,相信大家对泛型有了一个基本的了解,本篇将继续讲解泛型的使用,让你对泛型有一个更好的掌握和更深入的认识. 上篇中介绍完泛型之后,是不是觉得泛 ...
- 【转】如何使用slave_exec_mode优雅的跳过1032 1062的复制错误
今天线上的主从复制发生1062的错误,使用sql_slave_skip_counter跳过之后,由于后面的事务需要对刚刚的数据进行update,后续造成了新的1032的错误. 后来,无意中发现还有更好 ...
- 简述SharePoint designer 工作流实现用户撤回申请得解决方案,how to revoke/recall application in SharePoint designer workflow
在工作中很容易碰到用户提出,需要可以撤回申请得需求.有这么几种实现方法. 方案一:designer中加一个parallel(平行)得anction, 然后在里面添加两个平行运行得审批 第一个是给真正得 ...
- JS随机数不重复
方法一 思路:首先创建一个1到3000的数组,每次取一个数,然后去除数组中取出的这个数, 这样就可以实现永不重复. var count=3000; var originalArray=new Arra ...
- 基于webpack的React项目搭建(一)
前言 工欲善其事,必先利其器.为了更好的学习React,我们先简要的把开发环境搭建起来.本文主要介绍使用webpack搭建React项目,如果你对React或es6的基础语法还不了解,建议先去学习学习 ...
- 【luogu P4005 清华集训2017】小Y和地铁
题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...
- ●HDU 3507 Print Article
题链: http://acm.hdu.edu.cn/showproblem.php?pid=3507 题解: 斜率优化DP 一个入门题,就不给题解了,网上的好讲解很多的. 这里就只提一个小问题吧( ...
- 中断下半部处理之tasklet
1.tasklet概述 下半部和退后执行的工作,软中断的使用只在那些执行频率很高和连续性要求很高的情况下才需要.在大多数情况下,为了控制一个寻常的硬件设备,tasklet机制都是实现自己下半部的最佳选 ...
- 例10-2 uva12169(扩展欧几里得)
题意:已知xi=(a*xi-1+b) mod 10001,且告诉你x1,x3.........x2*t-1,让你求出其偶数列 思路: 枚举a,然后通过x1,x3求出b,再验证是否合适 1.设a, b, ...
- [Educational Codeforces Round#22]
来自FallDream的博客,未经允许,请勿转载,谢谢. 晚上去clj博客逛来逛去很开心,突然同学提醒了一下,发现cf已经开始40分钟了,慌的一B,从B题开始写,写完了B到E最后收掉了A,结果太着急B ...