【问题标题】:One database, supports multi-region application一个数据库,支持多区域应用
【发布时间】:2016-06-12 05:36:13
【问题描述】:

有没有办法让一个数据库 (MongoDB) 能够以最小的延迟支持多区域应用程序?

【问题讨论】:

    标签: node.js mongodb architecture


    【解决方案1】:

    这是使用具有 3 个成员(每个区域一个)的副本集的完美用例

    其中一个成为master - 这意味着它将接收所有写入并将它们传播给其他人。

    这也引入了额外的安全层,因为数据将位于多个位置,因此一个区域的网络中断不会停止整个应用程序。

    more here

    【讨论】:

    • 如果我有三个成员。这是否意味着我将有 3 个不同的单独连接字符串?或者 mongo 本身能够检测到哪个区域是最近的。
    • 不,副本集使用一个列出所有服务器的连接字符串。主节点只允许写入数据,但应用程序可以从辅助节点读取数据
    • 哦,我刚刚发现 mongoose 有一个叫做读取“最近”偏好的功能。此函数是否会根据我的客户端位置自动从最近的副本集中读取数据?
    • 谢谢@profesor79,最后一个问题。我非常渴望将其标记为正确。这解决了获取的延迟问题。写入和更新呢?由于我只能写入一个主节点(即新加坡作为主节点,从 SG 写入 SG 的延迟最小),理论上,其他区域将遇到写入和更新命令的延迟。我是否在这里做出了错误的假设,或者我们需要在该区域拥有其他具有主节点的集群来处理写入和更新。
    • 可能只有一个主节点,为了数据安全,我们需要使用writeConcernt:majority,这将对所有客户端产生影响,因为只有在两台服务器上写入时才会给出确认 - 所以我们可以假设所有客户端的写入延迟都是相似的,因为它会触及两个独立的数据中心
    猜你喜欢
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2012-07-21
    • 2012-02-10
    • 1970-01-01
    相关资源
    最近更新 更多