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

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

发布时间:2021-01-04 21:32 所属栏目:53 来源:网络整理
导读:HDFS 通常能够可靠地存储 GB 级到 TB 级的海量文件,同时,HDFS 还可以调整复制配置以支持单文件级别的复制策略.默认情况下,HDFS 中的多数文件都拥有 3 个复制副本.这意味着组成这些文件的数据块将备份存储在 3 个不

HDFS 通常能够可靠地存储 GB 级到 TB 级的海量文件,同时,HDFS 还可以调整复制配置以支持单文件级别的复制策略.默认情况下,HDFS 中的多数文件都拥有 3 个复制副本.这意味着组成这些文件的数据块将备份存储在 3 个不同的节点上.一个简单的 HDFS shell 命令就可以更改任何 HDFS 文件或文件夹的备份数.有两个原因可能需要提高 HDFS 中文件的复制因子数配置.

  • 降低数据变得不可访问的可能——例如,如果依赖这个数据的数据服务要提供 5 个 9 的可用性保障,那么你可能会想把复制因子数从 3 提高到 4 或 5.
  • 提高读取并发——如果一个文件有大量的并发读请求,可以增大复制因子使更多的节点可以响应这些请求.

降低备份数的主要原因一般是磁盘空间将被耗尽或是不再要求需要高复制数的服务级别.如果担心磁盘空间将被耗尽,那么在数据不可访问造成的损失较低且读取需求不严格的情况下,可以减小复制因子.另一方面,让复制数随着数据存储日期的变长而减小也比较常见.例如,超过 2 年的数据可能只有 2 个备份,而超过 5 年的数据就只有 1 个备份.

HDFS 提供的较好特性之一就是机架感知.机架感知功能可以根据节点在物理机架上的放置方式以及在一个机架内部网络中的连接方式对 HDFS 节点进行逻辑分组.位于同一个物理机架的节点之间通常拥有更高的带宽连接,而且使用这种网络能够将数据和其他共享网络进行隔离.下图展示了这种结构.

HDFS 通常能够可靠地存储 GB 级到 TB 级的海量文件,而且使用这种网络能够将数据和其他共享网络进行隔离.下图展示了这种结构.

亚马逊的 DynamoDB 论文是 NoSQL 运动中最具影响力的论文之一.这篇论文详细地介绍了亚马逊抛弃关系型数据库管理系统设计转而使用自己定制的分布式计算系统来满足他们的网页购物车对横向扩展和高可用性需求的细节.

最初,亚马逊并没有开源 DynamoDB.然而,尽管缺少源代码,这篇 DynomaDB 论文还是对诸如 Cassandra、Redis 和 Riak 等其他 NoSQL 系统产生了深远影响.在 2012 年 2 月,亚马逊将 DynamoDB 开放为数据库服务供其他开发者使用.这个案例研究将回顾亚马逊的 DynamoDB 服务以及将它作为全托管、高可用、可扩展的数据库服务的方法.

让我们从介绍 DynamoDB 的高层特性开始.Dynamo 的关键革新点是它能够快速且精确地调整吞吐量.这项服务能够可靠地承载大量的读写事务,并且可以通过调整网页上的配置完成分钟级别的性能调整.下图展示了它的用户界面的一个示例.

亚马逊的 DynamoDB 数据表吞吐量预设.通过修改读容量单位或写容量单位,可以将数据库中的每张表调整到满足容量需求的合适值.亚马逊还提供了计算应用容量需求的工具

DynamoDB 管理着节点的使用数量和节点间负载均衡的策略.亚马逊也提供了 API 接口可以根据负载监控系统的结果进行编程调整预见到的吞吐量.整个过程均不需要运维人员的介入.而且每月的亚马逊账单会根据这些参数修改进行调整.

为了开发 DynamoDB 服务,亚马逊使用了许多复杂的算法在数万台服务器中实现均衡可靠地分发读写事务.另外,DynamoDB 的独特之处还在于它是完全部署在固态硬盘(SSD)上的最初几个系统之一,而使用 SSD 让 DynamoDB 有了一个可预测的服务级别.

DynamoDB 的目标之一是提供稳定在几毫秒延迟内的读取响应.全部使用 SSD 意味着 DynamoDB 根本不需要考虑磁盘读取延迟.最终结果就是用户的所有 GET 和 PUT 操作均能够得到稳定的响应,而使用基于 DynamoDB 中数据进行渲染的网页也会比其他基于磁盘数据库中数据的网页快.

DynamoDB 的 API 提供细粒度的读取一致性控制.开发人员可以选择从本地节点读取一个中间结果(称为最终一致性)的方式,或是较慢但确保一致性(guaranteed consisten)的数据读取方式.这种确保一致性的读取会花费稍长的时间来确保读取数据的节点保存有最新的数据副本.如果应用知道请求的数据没有改动,那么直接读取会比较快.

这种读取数据的细粒度控制是利用对一致性需求的理解来调整应用的绝好例子.需要重点强调的是,总是可以强制要求读取结果一致,但对基于 SQL 的数据服务来说,这一需求会是个挑战,因为在分布式系统上执行的 SQL 并没有“在查找之前保持数据一致”的功能.

DynamoDB 非常适合于有弹性需求的组织.只为用到的服务付费的策略是节省服务器管理开销的主要方法.然而,当确实需要扩展时,DynamoDB 也提供满足业务快速增长需求的扩展空间.DynamoDB 还提供了可扩展的转化弹性 MapReduce 支持.这就意味着在需要执行可扩展的提取、转化、装载(ETL)过程时,可以快速地将海量数据移进移出 DynamoDB.

到现在为止,我们已经介绍了 NoSQL 系统用来实现高可用性的多种策略.接下来,让我们了解两个有着高可用性方面良好口碑的 NoSQL 产品.

案例研究:使用 Apache Cassandra 作为高可用的列族存储

(编辑:ASP站长网)

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