我使用mongodb作为我的游戏服务器的数据库。当我启动它们时,它们只被绑定到一个区域,我在该地区使用了Mongodb地图集的免费层,即使在高负载时,它也能很好地工作在20 on左右的延迟中。
现在,当我试图扩大我的服务器并到达像美国东部这样的其他地区时,延迟高达500毫秒。
有没有办法在我的印度和美国实例中打开两个mongodb服务器,它们总是完全同步,而游戏服务器进程只使用本地主机连接到特定的副本。我在用pyMongo。
玩家与数据库没有连接,管理数据库的是游戏服务器进程
发布于 2020-06-14 08:43:18
是一种在印度和美国实例上打开两个mongodb服务器的方法,它们总是完全同步的,而游戏服务器进程只使用本地主机连接到特定的副本。
假设您使用的是副本集,我相信您最接近于达到声明的读取要求的方法是:
使用写关注点(部署中节点的#)执行所有写入,如果您有两个服务器,则使用w=2.
我之所以说“最近”,是因为我怀疑在二级上读取concern=majority可能会返回陈旧的数据,即使使用w=(部署中节点的#),因为我认为大多数提交点必然会落后于每个辅助提交每个文档的时间点。若要确保正在读取当前数据,必须从主数据读取。
请注意,这样的设置(至少)还有另外两个主要缺点:
如果有任何服务器不可用,您的应用程序将无法向database.
实现相同的读写要求在物理上是不可能的。(你基本上想要在20毫秒内用印度写一份文件,并让它在美国“立即”获得,也就是说,在20毫秒后才能检索到它,但从印度到美国的数据至少需要500毫秒。)
https://stackoverflow.com/questions/62368273
复制相似问题