Database 写入MongoDB的多个副本
假设我有一个分布式应用程序,可以写入数据库。为了减少延迟,其中一个实例(app+数据库)位于澳大利亚,另一个位于欧洲。数据库的两个实例需要共享相同的数据 因此,我们在这里关注的是数据局部性。原因很明显:我们不希望澳大利亚的用户向我们在欧洲的数据库发送请求,因为这会增加延迟 自然的选择是在一个副本集中部署数据库的两个实例。但似乎使用MongoDB,您可以在副本集中写入Database 写入MongoDB的多个副本,database,mongodb,deployment,database-replication,replicaset,Database,Mongodb,Deployment,Database Replication,Replicaset,假设我有一个分布式应用程序,可以写入数据库。为了减少延迟,其中一个实例(app+数据库)位于澳大利亚,另一个位于欧洲。数据库的两个实例需要共享相同的数据 因此,我们在这里关注的是数据局部性。原因很明显:我们不希望澳大利亚的用户向我们在欧洲的数据库发送请求,因为这会增加延迟 自然的选择是在一个副本集中部署数据库的两个实例。但似乎使用MongoDB,您可以在副本集中写入 MongoDB有哪些策略可以让两个数据库实例共享相同的数据,您可以向其中写入数据?还是MongoDB只是对这个需求的一个错误选择?
MongoDB有哪些策略可以让两个数据库实例共享相同的数据,您可以向其中写入数据?还是MongoDB只是对这个需求的一个错误选择?这是一个巨大的主题,但我会尝试给你一个简短而简单的答案: 由于您的两个实例必须共享同一sata,因此无法使用。但可以是您的解决方案:
- 创建至少包含以下内容的副本集:
- “中立”区域中的服务器。它将是主服务器(设置更高的优先级)。只要此服务器仍然是主服务器,它将处理您的写操作
- 您现有的两台优先级较低的服务器
- 在应用程序中设置为“最近”。这样,您的读取操作将由具有割草机网络延迟的服务器处理,而不考虑服务器的主/辅角色
- 这个用例是一个罕见的用例,在这个用例中,最好从第二方读取。一般来说,您更喜欢从主服务器读取数据,因为复制集是为了高可用性而不是可伸缩性