MongoDB多数据中心部署方案(四)

(草稿)

目录

第四章 MongoDB数据中心的Awareness

MongoDB提供了丰富的功能帮助部署高可用性和扩展性系统。在设计高可用性时,管理员必须在不同故障场景的上下文中评估读写操作。系统的性能和可用性SLAs(服务级别协议)在判定中发挥重要的作用:

1.数据库如何分片(分片策略在后面讨论)

2.数据的复制数(副本数)

3.在内部和多个数据中心之间的shards和复制集的物理位置

管理员能够配置MongoDB的shards和复制集的行为来使用数据中心awareness。配置可以基于不同的维度,包括跨区域的多数据中心部署的awareness,又或者是单个数据中心的机架,网络和电源电路。 。

使用MongoDB,管理员能:

1.确保写操作传至一个复制集的特定成员,在本地和远端数据中心部署。在数据中心完全宕机的情况下能够降低数据丢失的风险。或者配置复制集确保数据仅复制到特定地域的节点,以确保数据永远不会离开这个国家。

2.确保一个复制集的特定成员响应查询。例如,基于它的位置。这减少了地域时间的影响。

3.将特定数据放置于特定shards上,每个都可以部署在不同的数据中心。这能再一次用于减少地域延时和保持数据独立。

能对每个操作和每个集合的读写行为进行配置。基于具体应用需求它们一起使用户精确控制和扩展跨区域的数据库操作。

跨数据中心配置写操作

MongoDB允许用户使用名为write con·cern的选项指定写入可用性系统,每个操作能够指定合适的write concern,归类于从未确认到确认这些写操作致力于:

1.单复制(即主复制集成员)。这是一个默认write concern;

2.多个复制集;

3.大部分的复制集;

4.所有复制集;

也可以配置write concern,在具体条件满足后才确认写操作。诸如在一个数据中心至少写入两个复制集成员以及在第二个数据中心写入至少一个副本。如果是shards MongoDB集群,此选项使用户能并行写入多个数据中心。

跨数据中心配置Location-Aware读取

无论在何处为用户提供低延迟体验都是分布式系统关键的设计点。使用MongoDB的本地复制集,可以将数据库的备份(复制集)部署到更接近用户的地方,从而减少网络延迟的影响。

MongoDB读性能配置MongoDB客户端如何将读操作路由到复制集成员。默认是一个应用程序通过将所有读操作指向复制集中的主成员来确保强一致性,但可以在每个操作的基础上在驱动中控制操作行为。nearest读操作允许客户端从复制集最低延迟成员中读取而不是宗师读取主成员。这通常用于将查询路由到本地数据中心,以减少地域延迟的影响。也能够使用标签来确保读取总是路由到指定节点或节点的子集上。

跨数据中心配置Shards

如前所述,分片用于水平扩展一个跨多个节点的MongoDB。为了最大灵活性,MongoDB支持三种可由用户定义的分片策略,根据应用程序查询模式和部署需求进行优化伸缩:

基于范围分片

通过Shard键值对文档进行分片。分片键值相近的文档可能位于同一个分片上。这种方法非常适合需要优化基于范围的查询的应用程序,例如为给定用户的客户检索所有数据,或在诸如时间序列数据的范围内访问的数据。

基于哈希分片

使用一个MD5哈希的shard键值统一分发文档。具有“关闭”的分片键值的文档不太可能位于同一个分片上。这种方法可保证在分片之间均匀分配写入数据,但对于查询文档组的应用程序来说,这种方法不太适合。

MongoDB多数据中心部署方案(四)_第1张图片
表1:各城市间的网络延迟(毫秒)

区分片

为DBA和运维团队定义在一个分片集群里管理数据放置的具体规则的能力。区适合一系列部署场景。例如通过地理位置定位数据,通过分层存储架构的硬件配置,或通过应用程序功能。管理员能够通过修改分片键范围持续改进数据放置规则,MongoDB将自动将数据迁移到新的区域。了解更多信息,请参阅区域文档 戳。

下一章 MongoDB部署模式

本文译者:吴锦晟 R&D Director@MFG

原文链接:http://www.jianshu.com/p/bc010efd41cc

版权归译者所有,转载请注明出处

你可能感兴趣的:(MongoDB多数据中心部署方案(四))