设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 服务器 > 安全 > 正文

案例|S3、Cassandra、HDFS设计中隐藏的高可用法(4)

发布时间:2021-01-04 21:32 所属栏目:53 来源:网络整理
导读:这个案例研究将介绍 Apache Cassandra 数据库.它是一个在可扩展性和高可用性两方面均有良好口碑的 NoSQL 列族存储.即使在写入高负载的情况下,它也能为用户保证数据服务的高可用性.Cassandra 是纯对等分布式模型的早

这个案例研究将介绍 Apache Cassandra 数据库.它是一个在可扩展性和高可用性两方面均有良好口碑的 NoSQL 列族存储.即使在写入高负载的情况下,它也能为用户保证数据服务的高可用性.Cassandra 是纯对等分布式模型的早期实现者.它的集群中的所有节点均具有完全一致的功能,且客户端可以在任意时间点向任意一个节点写入数据.因为 Cassandra 集群中不存在任何单独的主节点,所以它的集群也就没有所谓的单点故障,因此也就不需要再去部署测试额外的故障转移节点.Apache Cassandra 本身是一个 NoSQL 技术的有趣结合体,所以有时也将它称为受 Dynamo 灵感启发的 BigTable 实现.

除了它健壮的对等模型,Cassandra 还将大量心思放在了集群的易部署性和读写一致性级别的易配置性上.下表展示了完成复制级别配置后,它所能提供的多种写入一致性级别设置.

用于指定 Cassandra 表写入一致性的代码.Cassandra 中的每张表在创建时就需要设置好满足一致性级别需求的配置.而且还能随时修改这些配置,Cassandra 也会根据修改自动地更新配置.读取一致性方面也有类似的配置.

接下来,需要考虑的是一个读取事务中某个节点变得不可用时的策略.怎样指定返回新数据前需要检查的节点数?只检查一个节点可以使请求快速返回,但得到的数据可能已经过期.而检查多个节点可能会多花费数毫秒,但能确保获取到数据的最新版本.最好的方法是让客户端指定和前面介绍的写入一致性代码类似的读取一致性代码.在读取数据时,Cassandra 客户端可以根据需求从 ONETWOTHREEQUORUMLOCAL_QUORUMEACH_QUORUMALL 中选择合适的代码.甚至可以使用 EACH_QUORUM 在返回数据前检查位于世界各地的多个数据中心.

接下来,将介绍部署配置 Cassandra 集群之前需要理解的具体配置项.

在 Cassandra 中配置数据和节点间的映射

在关于一致性散列的讨论中,我们介绍了在集群中使用散列来均匀分发数据的技术.Cassandra 使用了相同的技术来完成数据的均匀分发.在深入理解 Cassandra 的实现方式之前,让我们先介绍一些 Cassandra 中的关键术语和定义.

1) 行键

行键(rowkey)是一个数据行的标识符.Cassandra 会对这个值进行散列并根据得到的散列值将数据存放到一个或多个节点上.行键是用来决定数据存放节点的唯一数据结构,这个过程将不会用到任何列数据.设计好行键结构是保证相似数据聚合在一起以提供高速读取的关键步骤.

2) 分区

分区(partitioner)是根据键指定一行数据存放节点的策略.默认策略是随机选择一个节点.Cassandra 使用键的 MD5 散列值作为数据行的一致性散列值,这样就使得数据能够随机但均匀地分发到所有节点上.另一个选择则是使用行键中实际的字节(而非行键的散列值)来决定数据存放的节点.

3) 键空间

键空间(keyspace)是决定一个键如何在节点上复制的数据结构.默认情况下,可能会将需要更高级别可用性的数据的复制数设置为 3.

Cassandra 键空间通常可以看作一个环的形式,如下图所示.

使用 SimpleStrategy 配置复制 Cassandra 键空间的示例.数据项 A1、B1、C1 和 D1 被写入了一个复制因子设为 3、由 4 个节点组成的集群里.每个数据项都被写到 3 个不同节点上.在某个数据项完成第一个节点写入后,Cassandra 将按顺时针方向顺序寻找 2 个额外的节点继续写入该数据项.

Cassandra 允许根据键空间的属性对复制策略进行微调.在向 Cassandra 系统中添加任意一行数据时,必须将这行数据和键空间关联起来.每个键空间都允许配置修改该行的复制因子.下图展示了一个键空间定义的示例.

Cassandra 配置复制策略的示例.复制策略是键的一个属性,指明了所在网络类型和对应键复制数.

使用这个策略能够均匀地将数据行分发到集群的所有节点上,从而消除系统瓶颈.虽然可以使用键中特定的几位来关联键空间,但我们强烈建议不使用这种方式.因为它可能导致集群中出现热点节点并使集群管理复杂化.而这种方式最主要的局限是如果更改了分区算法,就不得不重新保存并恢复整个数据集.

当拥有多个机架或多个数据中心时,也许需要更改这个算法来保证在返回写入确认消息前,数据已经写入了多个机架甚至是多个数据中心中.如果将分发策略从 SimpleStrategy 改为 NetworkTopologyStrategy,Cassandra 将会遍历键空间环直到找到位于不同机架或数据中心的节点.

因为 Cassandra 拥有一个完整的对等部署模型,所以它看起来很适合那些期望使用同时具有高可用性和可扩展性的列族系统的组织.下一个案例研究将探讨 Couchbase 2.0 使用 JSON 文档存储实现对等模型的方法.

案例研究:使用 Couchbase 作为高可用文档数据库

Couchbase 2.0 是一个使用了和其他 NoSQL 系统相同复制模式的 JSON 文档数据库.

Couchbase 与 CouchDB

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读