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模式、去哪儿及蘑菇街分布式架构
互联网行业是大势所趋,从招聘工资水平即可看出,那么如何提升自我技能,满足互联网行业技能要求?需要以目标为导向,进行技能提升,本文主要针对招聘中高频提及的分布式系统设计.架构(数据一致性)做了分析,祝各 ...
随机推荐
- PostgreSQL查询数据库中包含某种类型的表有哪些
and c.relnamespace = n.oid and nspname = 'public' and a.atttypid = t.oid and typname = 'TEXT' and c. ...
- 浅谈Linux du命令
**du(disk usage),顾名思义,查看目录/文件占用空间大小** 1.查看当前目录下的所有目录以及子目录的大小 du -h du -ah #-h:用K.M.G的人性化形式显示#-a:显示目 ...
- 从入门到自闭之Python内置函数
内置函数一 eval:执行字符串类型的代码 exac:执行字符串社类型的代码 eval与exac 禁止使用 hash()作用就是区分可变数据类型与不可变数据类型 # print(hash(" ...
- VMware 无法开机
无法打开磁盘 虚拟机无法打开磁盘 "或者某一个快照所依赖的磁盘 原因:未能锁定文件"的解决办法 很多人在使用虚拟机是都会遇到“无法打开磁盘" x:\*\*vmdk &qu ...
- CVE-2017-17558漏洞学习
简介 这是USB core中的一个拒绝服务漏洞.带有精心设计的描述符的恶意USB设备可以通过在配置描述符中设置过高的bNumInterfaces值来导致内核访问未分配的内存.虽然在解析期间调整了该值, ...
- Ruby Rails正式学习:Ruby on Rails 做个演示项目吧,逐渐完善
项目开始 一. 新建Rails项目 1. 修改一下Gemfile文件(简单修改一下) source 'https://rubygems.org' git_source(:github) { |repo ...
- JMX jconsole 的使用
JMX 1. JMX简单介绍 JMX的全称为Java Management Extensions. 顾名思义,是管理Java的一种扩展.这种机制可以方便的管理正在运行中的Java程序.常用于管理线程, ...
- 修改公司VS_UCOS工程BUG调试过程说明
说明:公司里的工程中,使用VS_UCOS来调试应用程序.业务逻辑.方法是嵌入式和VS分别建一个工程,把底层驱动部分分别添加各自需要的源文件,头文件使用同一个.也就是嵌入式的驱动函数名和参数和VS的函数 ...
- oa_mvc_easyui_删除(6)
1.删除列,添加a标签,绑定参数 <a href="javascript:void(0)" class="delete" ids="@newli ...
- thinkphp3.2.3 自定义路由实践
使用了很久的tp3,却没发现还有这么可玩性的功能. 官方文档:要使用路由功能,前提是你的URL支持PATH_INFO(或者兼容URL模式也可以,采用普通URL模式的情况下不支持路由功能),并且在应用( ...