一致性

许多分布式数据库都采用最终一致性而不是强一致性来实现可伸缩性。但是,最终的一致性会增加应用程序开发人员的复杂性,他们必须针对可能出现的数据不一致的异常进行开发。

ClustrixDB提供了一个一致性模型,可以使用智能数据分布、多版本并发控制(MVCC)和Paxos的组合进行伸缩。我们的方法使ClustrixDB能够扩展写操作、在有写工作负载的情况下扩展读操作,并提供强大的ACID语义。

有关ClustrixDB如何扩展读写的详细说明,请参阅并发控制。

ClustrixDB采用以下方法来保持一致性:

  • 集群内的同步复制。参与写操作的所有节点必须在写操作完成之前提供确认。写操作是并行执行的。
  • Paxos协议用于分布式事务解析。
  • ClustrixDB支持读提交和可重复读(快照)隔离级别,但对Serializable支持有限。
  • 多版本并发控制(MVCC允许)无锁读,并确保写不会阻塞读。

容错

ClustrixDB通过维护跨集群的多个数据副本来提供容错功能。默认情况下,ClustrixDB可以处理单个节点故障并自动恢复,而不会丢失数据。容错程度(n弹性)是可配置的,可以设置ClustrixDB来处理多个节点故障和区域故障。

有关如何在ClustrixDB中调整容错的更多信息,请参见了解容错、max_failure和zone。

可用性

为了了解ClustrixDB的可用性模式和故障情况,有必要了解我们的组成员协议。

组成员和Quorum

ClustrixDB使用分布式组成员协议。协议维护两个基本集:

  1. 集群中所有已知节点的静态集合
  2. 当前可以彼此通信的节点集。

除非静态成员中的半数以上节点能够彼此通信(quorum),否则无法形成集群。

例如,如果一个六节点集群,只有两个三节点的集合经历了一个网络分区,ClustrixDB将无法形成一个集群。

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

出于性能原因,max_failure默认值为1,以提供一个节点或一个区域的丢失。

部分的可用性

在上面的例子中,ClustrixDB形成了一个集群,因为仍然保留了节点仲裁。但是,这样的集群只能提供部分可用性,因为集群可能无法访问完整的数据集。

在下面的示例中,ClustrixDB被配置为维护两个副本。但是,持有A的副本的两个节点无法参与集群(由于某些故障)。当事务试图访问片a上的数据时,数据库将生成一个错误,该错误将显示在应用程序中。

可用性需求

ClustrixDB甚至可以在出现故障时提供可用性。为了提供完全可用性,ClustrixDB要求:

  • 大多数节点能够形成集群(即quorum requirement)。
  • 可用节点为每个数据集至少保存一个副本。

27. ClustrixDB 分布式架构/一致性、容错和可用性的更多相关文章

  1. 26. ClustrixDB 分布式架构/数据分片

    数据分片 介绍 共享磁盘vs.无共享 分布式数据库系统可分为两大类数据存储架构:(1)共享磁盘和(2)无共享. Shared Disk Architecture Shared Nothing Arch ...

  2. 31. ClustrixDB 分布式架构/查询优化器

    ClustrixDB查询优化器有何不同 ClustrixDB查询优化器的核心是能够执行一个具有最大并行性的查询和多个具有最大并发性的并发查询.这是通过分布式查询规划器和编译器以及分布式无共享执行引擎实 ...

  3. 29. ClustrixDB 分布式架构/并发控制

    介绍 ClustrixDB使用多版本并发控制(MVCC)和2阶段锁(2PL)的组合来支持混合的读写工作负载.在我们的系统中,读取器享受无锁快照隔离,而写入器使用2PL来管理冲突.并发控制的组合意味着读 ...

  4. 28. ClustrixDB 分布式架构/评估模型

    本节描述如何在数据库中计算查询.在ClustrixDB中,我们跨节点切片数据,然后将查询发送到数据.这是数据库的基本原则之一,它允许随着添加更多节点而几乎线性地扩展. 有关如何分布数据的概念,请参阅数 ...

  5. 30. ClustrixDB 分布式架构/Rebalancer

    Rebalancer是一个自动化系统,用于维护集群中数据的健康分布.通过修改数据的分布和位置来响应“不健康”集群是Rebalancer的工作.Rebalancer是一个在线进程,它影响对集群的更改,对 ...

  6. 分布式理论(4):Leases 一种解决分布式缓存一致性的高效容错机制(转)

    作者:Cary G.Gray and David R. Cheriton 1989 译者:phylips@bmy 2011-5-7 出处:http://duanple.blog.163.com/blo ...

  7. 分布式架构中一致性解决方案——Zookeeper集群搭建

    当我们的项目在不知不觉中做大了之后,各种问题就出来了,真jb头疼,比如性能,业务系统的并行计算的一致性协调问题,比如分布式架构的事务问题, 我们需要多台机器共同commit事务,经典的案例当然是银行转 ...

  8. Elasticsearch由浅入深(二)ES基础分布式架构、横向扩容、容错机制

    Elasticsearch的基础分布式架构 Elasticsearch对复杂分布式机制的透明隐藏特性 Elasticsearch是一套分布式系统,分布式是为了应对大数据量. Elasticsearch ...

  9. 不懂这些分布式架构、分布式系统的数据一致性解决方案,你如何能找到高新互联网工作呢?强势解析eBay BASE模式、去哪儿及蘑菇街分布式架构

    互联网行业是大势所趋,从招聘工资水平即可看出,那么如何提升自我技能,满足互联网行业技能要求?需要以目标为导向,进行技能提升,本文主要针对招聘中高频提及的分布式系统设计.架构(数据一致性)做了分析,祝各 ...

随机推荐

  1. 蓝鲸-监控 排错思路 - 原理push - bkdata报错 - saas的日志

    1.现象和报错 .[10.253.124.21] paas_agent() paas_agent FATAL Exited too quickly (process log may have deta ...

  2. 旗舰版win7系统中GraphEdit执行Loading a Graph From an External Process失败对策

    操作系统:旗舰版win7 DirectShow SDK: 9.0 IDE环境:VS2008 以下代码参考MSDN: HRESULT AddToRot(IUnknown *pUnkGraph, DWOR ...

  3. (5.6)mysql高可用系列——MySQL Utilities 管理工具

    关键词:mysql工具集,mysql管理工具,mysql utilities [1]安装mysql utilities cd /download wget https://cdn.mysql.com/ ...

  4. Ubuntu - Ubuntu应用记录(1)

    1.发生dpkg status database is locked by another process 原因是包管理器没有正确关闭.需要重启计算机或者重新打开终端 输入: sudo rm /var ...

  5. 小记---------sparkRDD的Transformation 和 Action 及案例 原理解释

    RDD :弹性分布式数据集:是一个容错的.并行的数据结构,可以让用户显式地将数据存储到磁盘或内存中,并控制数据的分区   RDD是Spark的核心数据结构,通过RDD的依赖关系形成Spark的调度顺序 ...

  6. MYSQL join 优化 --JOIN优化实践之快速匹配

    MySQL的JOIN(四):JOIN优化实践之快速匹配 优化原则:小表驱动大表,被驱动表建立索引有效,驱动表建立索引基本无效果.A left join B :A是驱动表,B是被驱动表:A right ...

  7. Java白皮书学习笔记+Head First Java--用于自我复习 基础知识篇

    本笔记是摘与Hava白皮书上面的内容,用来给自己做提醒的,因此大概并不适合Java的学习者作为笔记参考使用. 以我的水平现在还看不懂这个... 一.基础知识篇 1.常量 final关键字指示常量,只能 ...

  8. Laravel5.5 实现session配置

    \Illuminate\Session\Middleware\StartSession::class,\Illuminate\View\Middleware\ShareErrorsFromSessio ...

  9. python_0基础开始_day10

    第十节 一.函数进阶 动态参数 *a r g s —— 聚合位置参数,动态位置参数 默认返回的是tuple元组 def eat(*args):  # 函数的定义阶段 *聚合(打包)    print( ...

  10. idea-代码格式化快捷键设置(2019.1版)

    idea默认格式化快捷键是:Ctrl+Alt+L,有时会因其它软件快捷键的冲突导致失灵. 设置方法如下: 1.File -->  Settings... 2. Keymap -> Code ...