首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同步两个Mongodb数据库,并让客户端连接到最近的数据库

同步两个Mongodb数据库,并让客户端连接到最近的数据库
EN

Stack Overflow用户
提问于 2020-06-14 04:14:27
回答 1查看 43关注 0票数 0

我使用mongodb作为我的游戏服务器的数据库。当我启动它们时,它们只被绑定到一个区域,我在该地区使用了Mongodb地图集的免费层,即使在高负载时,它也能很好地工作在20 on左右的延迟中。

现在,当我试图扩大我的服务器并到达像美国东部这样的其他地区时,延迟高达500毫秒。

有没有办法在我的印度和美国实例中打开两个mongodb服务器,它们总是完全同步,而游戏服务器进程只使用本地主机连接到特定的副本。我在用pyMongo。

玩家与数据库没有连接,管理数据库的是游戏服务器进程

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-14 08:43:18

是一种在印度和美国实例上打开两个mongodb服务器的方法,它们总是完全同步的,而游戏服务器进程只使用本地主机连接到特定的副本。

假设您使用的是副本集,我相信您最接近于达到声明的读取要求的方法是:

使用写关注点(部署中节点的#)执行所有写入,如果您有两个服务器,则使用w=2.

  • Performing reads preference=nearest和read concern=majority.

我之所以说“最近”,是因为我怀疑在二级上读取concern=majority可能会返回陈旧的数据,即使使用w=(部署中节点的#),因为我认为大多数提交点必然会落后于每个辅助提交每个文档的时间点。若要确保正在读取当前数据,必须从主数据读取。

请注意,这样的设置(至少)还有另外两个主要缺点:

如果有任何服务器不可用,您的应用程序将无法向database.

  • Each写入任何数据,将等待部署中的所有服务器存储数据,因此所有写入都将是缓慢的。

实现相同的读写要求在物理上是不可能的。(你基本上想要在20毫秒内用印度写一份文件,并让它在美国“立即”获得,也就是说,在20毫秒后才能检索到它,但从印度到美国的数据至少需要500毫秒。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62368273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档