热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Cassandra1.2文档学习(15)——配置数据一致性

参考文档:http:www.datastax.comdocumentationcassandra1.2webhelpindex.html#cassandradmldml_confi

>参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_config_consistency_c.html

>  一致性指的是怎样更新到最新并且在所有副本节点上同步Cassandra的一行数据。Cassandra通过提供可以调节的数据一致性扩充了最终一致性的观点,对于任何读取或写入操作,客户端决定请求数据的一致性。

  除了可配置的一致性以外,Cassandra通过很多的built-in
repair mechanisms去保证数据在各个副本之间的一致性。

  提示:你可能觉得这个工具非常有用当决定一致性的级别时。

 

一、关于客户端请求的可调节的一致性

>  Cassandra中的一致性可以被配置去管理响应的时间和数据的准确性。你可以配置集群、数据中心或者个人I/O操作的一致性。

>  通过使用Cassandra驱动或者客户端库,在参与的节点中达到非常强的或最终的一致性是可以被全局设置和控制的。

 

二、写一致性

  一致性级别指定多少副本节点的数目应当在成功后返回一个响应给客户端。

 写一致性级别












































级别



描述



使用



ANY



一个写入必须被写入到至少一个节点中。如果给定行所有的副本都宕机了,写入仍然会返回成功当 >hint Heiti SC Light";‘>被写入了。如果在写入的时候所有的副本都宕机了,一个 >ANY写入不可读直到副本节点被发现。



提供了低的延迟和写入永远不会失败的保证。相比于其他级别,提供了最低的一致性和最高的可用性。



ONE



一个写入必须被写到至少一个副本节点的 >commit log Heiti SC Light";‘>文件和内存表中。



满足了大部分用户的需求因为一致性级别要求不严格。和协调者节点最近的副本节点接收到请求。



TWO



一个写入必须被写到至少两个副本节点的 >commit log Heiti SC Light";‘>文件和内存表中。



>ONE相似



THREE



一个写入必须被写到至少三个副本节点的 >commit log Heiti SC Light";‘>文件和内存表中。



>TWO相似



QUORUM



一个写入必须被写到规定数目副本节点的 >commit log Heiti SC Light";‘>文件和内存表中。



提供了强一致性如果你能忍受一定基本的错误



LOCAL_ONE



>Cassandra1.2.11 Heiti SC Light";‘>及之后可用。一个写入会被发送、成功接收到一个本地数据中心的副本节点。



在一个多数据中心的集群,一致性级别 >ONE经常能令人满意,但是不能跨越数据中心。 >LOCAL_ONE Heiti SC Light";‘>能够实现这个。为了安全和质量原因,当在线的节点宕机后,你可以使用这个一致性级别在一个脱机的数据中心以避免自动连接到其他的在线节点。



LOCAL_QUORUM



一个写入必须被写到和协调者同一个数据中心中规定数目副本节点的 >commit log Heiti SC Light";‘>文件和内存表中。避免了节点内通信的延迟。



使用在多数据中心集群配置策略为 >NetworkTopologyStrategy Heiti SC Light";‘>并且一个适当配置的 >snitch Heiti SC Light";‘>。当使用 >SimpleStrategy Heiti SC Light";‘>会失败。在维护本地的一致性(在一个数据中心)中使用。



EACH_QUORUM



一个写入必须被写到所有节点中规定数目副本节点的 >commit log Heiti SC Light";‘>文件和内存表中。



在多数据中心集群中使用,严格维护多个数据中心的具有相同的一致性。例如,在你需要读写失败当数据集群宕机并且数据中心不能达到 >QUORUM Heiti SC Light";‘>时可以使用这一级别。



ALL



一个写入必须被写到集群中所有的应当存储 >row的副本节点的 >commit log Heiti SC Light";‘>文件和内存表中。



相对于其他级别,提供了最高的一致性和最低的可用性。


>   即使一致性级别为ONE或者LOCAL_QUORUM,写入仍然会发送到所有的副本节点,即使副本节点在其他的数据中心。一致性级别决定了多少副本节点应当对接收到的写入做出反应。

 

三、读一致性

>  一致性级别决定了多少副本节点应当在返回数据给客户端之前响应一个读请求。为了满足读请求,Cassandra根据时间戳检查指定的数目的副本节点的数据去找到最新的数据。 

写一致性级别








































级别



描述



使用



ONE



根据 >snitch Heiti SC Light";‘>,从最近的一个节点返回数据。默认地,一个读修复会在后台运行去保证其他副本的一致性。



提供了最高级别的可用性,如果你能忍受很高概率的情况下你获得的数据不是最新的。



TWO



从最近的两个节点中返回最新的数据



>ONE相似



THREE



从最近的三个节点中返回最新的数据



>TWO相似



QUORUM



从响应的规定数目的副本节点中返回最新时间戳的数据



提供了强一致性如果你能忍受一定基本的错误



LOCAL_ONE



>Cassandra1.2.11 Heiti SC Light";‘>及之后可用。根据 >snitch Heiti SC Light";‘>,从一个最近的副本节点获得相应,这个副本节点是在本地数据中心的。



和写一致性 >LOCAL_ONE Heiti SC Light";‘>级别的相同



LOCAL_QUORUM



从协调者所在的数据中心中从规定数目的节点响应中返回最新的数据。避免了节点内通信的延迟。



使用在多数据中心集群配置策略为 >NetworkTopologyStrategy Heiti SC Light";‘>并且一个适当配置的 >snitch Heiti SC Light";‘>。当使用 >SimpleStrategy Heiti SC Light";‘>会失败。



EACH_QUORUM



从集群的每一个数据中心中的规定数目的节点响应中返回最新的数据。



>LOCAL_QUORUM
相同



ALL



从所有的副本节点中返回最新的时间戳。如果一个副本节点没有响应,读取操作会失败。



相对于其他级别,提供了最高的一致性和最低的可用性。


 

四、QUORUM级别

>  QUORUM级别写入节点的数目成为了一个对顶。这个可以计算的,然后向下舍入到一个整数,如下:

  ( 复制因子 / 2 ) + 1

>  例如:使用复制因子为3,计算结果是2——集群可以忍受1个节点的宕机。使用复制因子为6,计算结果是4——集群可以忍受2个节点的宕机。

>  如果一致性是最重要的,你可以确保读总是会影响最新的写通过使用以下公式:

  ( 正在写入的节点 + 正在读取的节点 ) > 复制因子

>  例如,如果你的应用程序使用一致性级别为QUORUM的写和读,如果你的复制因子是3,这样确保了2个节点总是被写入并且2个节点总是在读取。

  读写节点组合(4)大于复制因子(3)保证读的强一致性。

 

五、配置客户端一致性级别

>  你可以使用一个新的cqlsh命令——keyspace,设置keyspace的一致性级别。

  在CQL 3版本中,WITH CONSISTENCY语句已经从CQL
3命令中移除。从编程上来说,可以在驱动级别上设置一致性级别。例如,通过二进制查询、压缩设置、一致性级别调用execute_cql3_query。默认的读和写一致性级别为ONE。

 

六、内置的一致性修复特性

>  你可以使用这些内置的修复特性去保证数据在副本中的一致性。


推荐阅读
  • 虚拟机网络设置与数据库远程连接优化指南
    本文针对个人计算机上虚拟机网络配置与数据库远程连接的问题,提供了一套详细的优化指南。在探讨远程数据库访问前,需确保网络配置正确,特别是桥接模式的设置。通过合理的网络配置,可以有效解决因虚拟机或网络问题导致的连接失败,提升远程访问的稳定性和效率。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 在HDU 1166敌军布阵问题中,通过运用线段树数据结构,可以高效地计算指定区间的敌军数量。该算法不仅能够在限定的时间和内存条件下快速求解,还能够灵活应对动态变化的战场局势,为实时决策提供支持。 ... [详细]
  • 捕获并处理用户输入数字时的异常,提供详细的错误提示与指导
    在用户输入数字时,程序能够有效捕获并处理各种异常情况,如非法字符或格式错误,并提供详尽的错误提示和操作指导,确保用户能够准确输入有效的数字数据。通过这种方式,不仅提高了程序的健壮性和用户体验,还减少了因输入错误导致的系统故障。具体实现中,使用了Java的异常处理机制,结合Scanner类进行输入读取和验证,确保了输入的合法性和准确性。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • HDU1176:免费馅饼问题的动态规划解法分析
    题目“免费馅饼”通过动态规划方法进行了解析。该问题的时间限制为 Java 2000ms 和其他语言 1000ms,内存限制为 Java 65536K 和其他语言 32768K。本文详细探讨了如何利用动态规划算法高效求解此问题,并对算法的时间复杂度和空间复杂度进行了深入分析。此外,还提供了具体的实现步骤和代码示例,帮助读者更好地理解和应用这一方法。 ... [详细]
  • 在遍历集合的过程中,若需根据特定条件对集合进行修改操作,如添加或删除元素,应特别注意避免引发 `ConcurrentModificationException` 异常。例如,在当前场景中,当集合中的对象ID与另一个集合中的对象ID不匹配时,需要向集合中添加新元素。为了避免这一异常,建议使用迭代器的 `remove` 方法或采用线程安全的集合类型,如 `CopyOnWriteArrayList`,以确保操作的安全性和一致性。 ... [详细]
  • CAS 机制下的无锁队列设计与实现 ... [详细]
  • 【Linux进阶指南】第一阶段第三课:体验与部署Ubuntu系统
    在正式踏上Linux学习之旅之前,本课程将引导你深入体验和部署Ubuntu系统。通过详细的操作步骤和实践演练,你将掌握Ubuntu的基本安装、配置及常用命令,为后续的进阶学习打下坚实的基础。此外,课程还将介绍如何解决常见问题和优化系统性能,帮助你更加高效地使用Ubuntu。 ... [详细]
  • 通过 NuGet 获取最新版本的 Rafy 框架及其详细文档
    为了帮助开发者更便捷地使用Rafy领域实体框架,我们已将最新版的Rafy框架程序集上传至nuget.org,并同步发布了最新版本的Rafy SDK至Visual Studio。此外,我们还提供了详尽的文档和示例,以确保开发者能够快速上手并充分利用该框架的强大功能。 ... [详细]
  • 1. 设置用户密码:使用 `slappasswd` 工具生成加密密码,确保账户安全。具体步骤如下:输入命令 `slappasswd -s NewPassword`,系统将提示重新输入新密码,并生成加密后的哈希值 {SSHA}xxxxxxxxxxxxxxxxx。2. 编写配置文件:编辑 `vildapus` 配置文件,添加必要的用户账户信息,以确保新用户能够顺利登录系统。 ... [详细]
  • 本文详细介绍了 Windows API 中的按钮控件及其应用实例。主要功能包括:1. `CheckDlgButton` 用于更改对话框中按钮的选中状态;2. `CheckRadioButton` 用于设置单选按钮的选中状态。此外,还探讨了按钮控件在实际开发中的多种应用场景,帮助开发者更好地理解和使用这些功能。 ... [详细]
  • 在处理大图片时,PHP 常常会遇到内存溢出的问题。为了避免这种情况,建议避免使用 `setImageBitmap`、`setImageResource` 或 `BitmapFactory.decodeResource` 等方法直接加载大图。这些函数在处理大图片时会消耗大量内存,导致应用崩溃。推荐采用分块处理、图像压缩和缓存机制等策略,以优化内存使用并提高处理效率。此外,可以考虑使用第三方库如 ImageMagick 或 GD 库来处理大图片,这些库提供了更高效的内存管理和图像处理功能。 ... [详细]
  • 掌握Linux Shell核心概念与基础技能,本文详细介绍了文件系统和安全管理中的`chmod`命令。`chmod`命令支持两种模式:符号模式和绝对模式。符号模式使用`ugo`表示用户类别,`rwx`表示权限类型;而绝对模式则通过八进制数值来精确设置不同用户的权限。此外,文章还探讨了其他重要的Shell命令和技巧,帮助读者全面理解和应用Linux环境下的文件管理和安全控制。 ... [详细]
  • 理解和应用HTTP请求中的转发与重定向机制
    在HTTP请求处理过程中,客户端发送请求(通常简称为req),服务器进行相应处理后返回响应(通常简称为res)。理解和应用客户端的转发与重定向机制是前端开发的重要内容。这两种机制在Web开发中具有关键作用,能够有效管理和优化用户请求的处理流程。转发机制允许服务器内部将请求传递给另一个资源,而重定向则指示客户端向新的URL发起新的请求,从而实现页面跳转或资源更新。掌握这些技术有助于提升应用的性能和用户体验。 ... [详细]
author-avatar
戒得掉既烟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有