Мы используем набор реплик mongo из 4 членов и один арбитр. Есть 3 физические сайты, все серверы Mongo могут разговаривать друг с другом:Mongo replica set - нужен ли клиент, чтобы узнать обо всех них?
Site 1 (западное побережье) site1-mg01 site1-mg02
Site 2 (восточное побережье) site2-mg03 site2-mg04
сайт 3 (облако, арбитр только) site3-mgarbiter
у нас есть клиент Java. Я бы предпочел, чтобы клиент никогда не подключался к серверам Mongo на другом сайте, даже если один из их серверов станет основным (отставание убьет приложение). Или по-другому:
Сайт 1 Приложение Java подключается к site1-mg01 и site1-mg02
сайта 2 JavaApp подключается к site2-mg03 и site2-mg04
Является ли это приемлемо для клиента, чтобы только знать о части набора реплик? Так что, если веб-клиент может физически достичь только сайт 1, и я настраивал мой реплики устанавливается следующим образом:
Будет"site1-mg01: 270xx, site1-mg02: 270xx"
мой клиент негативно повлиять? То, как я предполагаю, что это работает, долгое время, когда один из этих серверов является первичным, он будет нормально подключаться? И если сайт 2 Mongo становится основным, я просто не могу подключиться?
Спасибо за отзыв. Звуки предпочтений звучат многообещающе, но могут ли они сказать, НЕ разговаривать с сайтом 2? Я опробовал свою настройку, и, как вы сказали, обнаруживает site2-mg03 и site2-mg04, а затем бросает вызов com.mongb.MongoSocketOpenException, когда он не может с ними разговаривать. Чтение вашей ссылки, это не похоже на то, что теги будут останавливать соединения? – javatestcase
@javatestcase трудно сказать, что пошло не так, как показано на рисунке. Если вы настроите элемент западного побережья надлежащим тегом и правильно настроили 'ReadPreference', он должен работать. Я не знаю, что вы подразумеваете под * Discover *. Удаленный сайт всегда доступен для приложения, но, используя подходящий «TagSet» для операции чтения, он должен читать данные от «локальных» членов сайта. –