我们使用一个4个成员的mongo副本集,以及一个仲裁器。有3个物理站点,所有蒙戈服务器可以互相交谈:Mongo副本集 - 客户需要了解所有这些吗?
网站1(西海岸)site1的-MG01 site1的-MG02
网站2(东海岸)站点2-mg03站点2-MG04
网站3(云,仲裁者只)site3-mgarbiter
我们有一个Java客户端。我宁愿客户端永远不会连接到服务器蒙戈在其他网站,即使他们的一台服务器变成主(滞后会终止该应用。)或者把不同的方式
网站1 Java应用程序所连接到site1的-MG01和site1的-MG02
网站2 JavaApp连接到站点2-mg03和站点2-MG04
是可以接受的客户端只知道一个副本集的一部分?因此,如果Web客户端可以实际只能达到现场1,我建立了我的副本设置如下:
请问“site1的-MG01:270xx,site1的-MG02:270xx”
我的客户受到负面影响?我认为它的工作方式,只要这些服务器之一是主要的,它会连接好吗?如果一个Site 2 Mongo成为主要的,我就不能连接?
感谢您的反馈意见。偏好标签听起来很有希望,但他们可以说不要与网站2交谈?我尝试了我的设置,并按照您的建议发现了site2-mg03和site2-mg04,然后在无法与它们交谈时抛出com.mongodb.MongoSocketOpenException。读取你的链接,它听起来不像标签会停止连接? – javatestcase
@javatestcase如果没有显示代码和rs配置,很难说出了什么问题。如果您使用适当的标签配置西海岸会员并正确设置了“ReadPreference”,它应该可以工作。我不知道你发现*的意思。应用程序总是可以访问远程站点,但是使用合适的TagSet进行读取操作时,它应该从“本地”站点成员读取数据。 –