Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB中的自定义平衡器_Mongodb - Fatal编程技术网

MongoDB中的自定义平衡器

MongoDB中的自定义平衡器,mongodb,Mongodb,您是否编写了自定义平衡器,用于在MongoDB中不使用平衡器的情况下进行分片以平衡数据块,请您解释一下为什么要这样做?我曾经处理过一些情况,其中自定义平衡脚本暂时有用,例如,对于某些碎片的数据有区域要求,或者某些收集不应平衡。在速度方面没有真正的优势(这主要受磁盘和内存中的数据分布的限制),事实上,进行自定义平衡的一个原因是使其速度变慢 然而,做对是很挑剔的,而且从我的经验来看,一般来说不值得长期这么做。有一个平衡器窗口可以用来进行基于时间的平衡,将来,块标记和将集合标记为“不平衡”的功能将使大

您是否编写了自定义平衡器,用于在MongoDB中不使用平衡器的情况下进行分片以平衡数据块,请您解释一下为什么要这样做?

我曾经处理过一些情况,其中自定义平衡脚本暂时有用,例如,对于某些碎片的数据有区域要求,或者某些收集不应平衡。在速度方面没有真正的优势(这主要受磁盘和内存中的数据分布的限制),事实上,进行自定义平衡的一个原因是使其速度变慢

然而,做对是很挑剔的,而且从我的经验来看,一般来说不值得长期这么做。有一个平衡器窗口可以用来进行基于时间的平衡,将来,块标记和将集合标记为“不平衡”的功能将使大多数其他任务不需要自定义脚本


https://jira.mongodb.org/browse/SERVER-4621

一个价格的两个答案:

  • 目标:较慢的平衡-可以编写一个自定义平衡器,使其运行得更慢,在每轮平衡之间增加时间延迟。在与其他(可能更重要)应用程序共享吞吐量的情况下,这可以用来降低IOPS/磁盘吞吐量。我可能建议您在守护进程上使用unix“nice”,或者设置平衡以使用时间表(请参阅Mongo文档)
  • 注意:对于MongoDB 2.4版,默认值更改为secondaryThrottle,以验证数据在继续块迁移之前是否写入了secondary。如果您只是禁用了辅助项,这将大大降低块迁移的速度。要解决此问题,请键入:

    use config
    db.settings.update({"_id":"balancer"},{$set:{"_secondaryThrottle":false}})
    
  • 目标:更快的平衡-我们都知道,平衡者可能会花费很长时间来平衡完全不同的块数,以天为单位。我还没有写过这种平衡器,但我可以很容易地看出它是如何实现的。假设一次只能移动一个块。如果我们假设我们有大量的碎片(比如48个),并且每个碎片都有自己的磁盘/设备,那么通过将要迁移的碎片/块配对并使其并行运行,肯定可以加快这种迁移概念
  • 我们不知道的是,这对配置服务器有什么影响。如果我们同时进行2次以上的移动,配置服务器的工作方式是否存在会导致其崩溃的假设?听起来是时候查看配置服务器代码了

    或者,我们中的一个人可以问10Gen,如果你/我/我们写了这样一个动物,它是否有用,或者只会导致痛苦和死亡,或者更糟糕的是,被迫生活在密西西比州