27. ClustrixDB 分布式架构/一致性、容错和可用性
一致性
许多分布式数据库都采用最终一致性而不是强一致性来实现可伸缩性。但是,最终的一致性会增加应用程序开发人员的复杂性,他们必须针对可能出现的数据不一致的异常进行开发。
ClustrixDB提供了一个一致性模型,可以使用智能数据分布、多版本并发控制(MVCC)和Paxos的组合进行伸缩。我们的方法使ClustrixDB能够扩展写操作、在有写工作负载的情况下扩展读操作,并提供强大的ACID语义。
有关ClustrixDB如何扩展读写的详细说明,请参阅并发控制。
ClustrixDB采用以下方法来保持一致性:
- 集群内的同步复制。参与写操作的所有节点必须在写操作完成之前提供确认。写操作是并行执行的。
- Paxos协议用于分布式事务解析。
- ClustrixDB支持读提交和可重复读(快照)隔离级别,但对Serializable支持有限。
- 多版本并发控制(MVCC允许)无锁读,并确保写不会阻塞读。
容错
ClustrixDB通过维护跨集群的多个数据副本来提供容错功能。默认情况下,ClustrixDB可以处理单个节点故障并自动恢复,而不会丢失数据。容错程度(n弹性)是可配置的,可以设置ClustrixDB来处理多个节点故障和区域故障。
有关如何在ClustrixDB中调整容错的更多信息,请参见了解容错、max_failure和zone。
可用性
为了了解ClustrixDB的可用性模式和故障情况,有必要了解我们的组成员协议。
组成员和Quorum
ClustrixDB使用分布式组成员协议。协议维护两个基本集:
- 集群中所有已知节点的静态集合
- 当前可以彼此通信的节点集。
除非静态成员中的半数以上节点能够彼此通信(quorum),否则无法形成集群。
例如,如果一个六节点集群,只有两个三节点的集合经历了一个网络分区,ClustrixDB将无法形成一个集群。

但是,如果超过一半的节点能够通信,则ClustrixDB将形成一个集群。

出于性能原因,max_failure默认值为1,以提供一个节点或一个区域的丢失。
部分的可用性
在上面的例子中,ClustrixDB形成了一个集群,因为仍然保留了节点仲裁。但是,这样的集群只能提供部分可用性,因为集群可能无法访问完整的数据集。
在下面的示例中,ClustrixDB被配置为维护两个副本。但是,持有A的副本的两个节点无法参与集群(由于某些故障)。当事务试图访问片a上的数据时,数据库将生成一个错误,该错误将显示在应用程序中。

可用性需求
ClustrixDB甚至可以在出现故障时提供可用性。为了提供完全可用性,ClustrixDB要求:
- 大多数节点能够形成集群(即quorum requirement)。
- 可用节点为每个数据集至少保存一个副本。
27. ClustrixDB 分布式架构/一致性、容错和可用性的更多相关文章
- 26. ClustrixDB 分布式架构/数据分片
数据分片 介绍 共享磁盘vs.无共享 分布式数据库系统可分为两大类数据存储架构:(1)共享磁盘和(2)无共享. Shared Disk Architecture Shared Nothing Arch ...
- 31. ClustrixDB 分布式架构/查询优化器
ClustrixDB查询优化器有何不同 ClustrixDB查询优化器的核心是能够执行一个具有最大并行性的查询和多个具有最大并发性的并发查询.这是通过分布式查询规划器和编译器以及分布式无共享执行引擎实 ...
- 29. ClustrixDB 分布式架构/并发控制
介绍 ClustrixDB使用多版本并发控制(MVCC)和2阶段锁(2PL)的组合来支持混合的读写工作负载.在我们的系统中,读取器享受无锁快照隔离,而写入器使用2PL来管理冲突.并发控制的组合意味着读 ...
- 28. ClustrixDB 分布式架构/评估模型
本节描述如何在数据库中计算查询.在ClustrixDB中,我们跨节点切片数据,然后将查询发送到数据.这是数据库的基本原则之一,它允许随着添加更多节点而几乎线性地扩展. 有关如何分布数据的概念,请参阅数 ...
- 30. ClustrixDB 分布式架构/Rebalancer
Rebalancer是一个自动化系统,用于维护集群中数据的健康分布.通过修改数据的分布和位置来响应“不健康”集群是Rebalancer的工作.Rebalancer是一个在线进程,它影响对集群的更改,对 ...
- 分布式理论(4):Leases 一种解决分布式缓存一致性的高效容错机制(转)
作者:Cary G.Gray and David R. Cheriton 1989 译者:phylips@bmy 2011-5-7 出处:http://duanple.blog.163.com/blo ...
- 分布式架构中一致性解决方案——Zookeeper集群搭建
当我们的项目在不知不觉中做大了之后,各种问题就出来了,真jb头疼,比如性能,业务系统的并行计算的一致性协调问题,比如分布式架构的事务问题, 我们需要多台机器共同commit事务,经典的案例当然是银行转 ...
- Elasticsearch由浅入深(二)ES基础分布式架构、横向扩容、容错机制
Elasticsearch的基础分布式架构 Elasticsearch对复杂分布式机制的透明隐藏特性 Elasticsearch是一套分布式系统,分布式是为了应对大数据量. Elasticsearch ...
- 不懂这些分布式架构、分布式系统的数据一致性解决方案,你如何能找到高新互联网工作呢?强势解析eBay BASE模式、去哪儿及蘑菇街分布式架构
互联网行业是大势所趋,从招聘工资水平即可看出,那么如何提升自我技能,满足互联网行业技能要求?需要以目标为导向,进行技能提升,本文主要针对招聘中高频提及的分布式系统设计.架构(数据一致性)做了分析,祝各 ...
随机推荐
- Linux基础训练题型(下)
8.在题3的基础上,使用命令调换passwd文件里root位置和/bin/bash位置?即将所有的第一列和最后一列位置调换? 例: 默认:root:x:0:0:root:/root:/bin/bash ...
- DDOS常见攻击类型和防御措施
DDOS 攻击类型: SYN Flood 攻击 ACK Flood 攻击 UDP Flood 攻击 ICMP Flood 攻击 Connection Flood 攻击 HTTP Get 攻击 UDP ...
- 设计模式:职责链模式(Chain of Responsibility)
去年参加校招要到长沙来,这个对于我来说不是特别喜欢(但又必须的来,谁叫咱不是985.211的娃呢),但是对于某些人来说就是福音了.大四还有课,而且学校抓的比较严,所以对于那些想翘课的人来说这个是最好不 ...
- Websocket 突破最大长连接
为了测试机器能够最大的长连接个数,故写了一个js脚本,需要用node进行执行 var WebSocketClient = require('websocket').client; var size = ...
- C++练习 | 类的继承与派生练习(1)
#include <iostream> #include <cmath> #include <cstring> #include <string> #i ...
- EXKMP模版
这道题目折腾了我好一会啊,出于尊重我要先放我们师兄的博客 1178: [视频]EXKMP模版:最长共同前缀长度 时间限制: 1 Sec 内存限制: 128 MB提交: 180 解决: 123[提交 ...
- Spring经典高频面试题,原来是长这个样子
Spring经典高频面试题,原来是长这个样子 2019年08月23日 15:01:32 博文视点 阅读数 719 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文 ...
- Object 对象(对象的分类、属性(属性名和属性值)、基本数据类型与引用数据类型区别)
Object——引用数据类型 基本数据类型的不足之处:基本数据类型是单一的值,不能表现出值与值之间的所属关系 object分为内建对象.宿主对象和自定义对象 a 内建对象:ES标准中定义的对象,在任何 ...
- web-CSS居中大全
居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...
- 精通shell编程--最后的总结
不得不说shell语法是丑陋的,操作是简单高效的,最后一次学习总结shell shell总结 字符串删除与替换等常见操作 ## 字符串长度 a=1234 echo "${#a}" ...