关于节点js和mongodb中与流程相关的问题

时间:2014-08-01 10:06:24

标签: node.js mongodb mongoose

我是Node JS的新手程序员。我对Node JS和Mongo DB中的锁定和竞争条件等与流程相关的问题有一些疑问。

我的代码在本地环境中运行良好,但是当我转向生产并遇到大量请求时,我可能会遇到某些问题。

  1. 我们如何避免位于不同地区的蒙古奴隶的写级别竞争条件?也就是说,一个数据是在本地写入的,但它的真正价值是远程写入延迟
  2. 考虑我们有区域定位的节点进程是否需要命中位于另一个区域的mongo master,然后将该请求路由到区域从站?这大大增加了每次写入的延迟 - 我们如何避免这种情况?我们是否可以从本地进程直接写入区域从属服务器以及某种类型的复制来保持数据一致性?
  3. 我使用Node REST api并使用mongoose作为Mongo DB驱动程序。非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

MongoDB的自动故障转移和高可用性功能由所谓的replication提供。标准的MongoDB术语对于主机是“主要”,对于从机是“辅助”,因此我将使用这些术语与文档和用户群一致。我认为你的两个问题都是由一个事实来回答的:在副本集中,主要是唯一接受客户写入的成员。辅助设备会在短时间内异步地将数据复制到它们。直接回答问题:

  1. 除了从主服务器写入内部复制外,不会写入从服务器,因此不会出现写入的“竞争条件”。

  2. 所有写入都必须转到主要。复制系统将异步分发到辅助节点的数据。您可以阅读辅助语言,但它不是最佳实践,尽管它偶尔会有效。在决定阅读辅助副本之前,我建议阅读有关副本集read preference和阅读Asya Kamsky's blog post关于使用副本集进行缩放的内容。