Почему не задокументирована опция «connect» в строке подключения mon go? - PullRequest
0 голосов
/ 20 марта 2020

Проблема заключалась в том, что даже если я нацеливался только на один узел моей реплики, заданной в строке подключения, mongo-go-driver всегда хотел бы обнаружить и подключить другие узлы.

Я нашел решение здесь , которое в основном говорит, что я должен добавить опцию connect в строку подключения.

mongodb://host:27017/authDb?connect=direct

Мой вопрос: насколько это хорошая или плохая практика и почему mon go не задокументированы, есть ли другие доступные значения, которые может иметь эта опция?

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Эта опция существует только для драйвера Go. Для всех остальных драйверов он не распознается, поэтому он не задокументирован как опция общей строки подключения.

Он задокументирован для драйвера Go в https://godoc.org/go.mongodb.org/mongo-driver/mongo#example -Connect - Direct

0 голосов
/ 20 марта 2020

Насколько это хорошо или плохо, и почему mon go не задокументировано, есть ли другие доступные значения, которые может иметь эта опция?

Как указано в принят ответ, что это задокументировано в документации к драйверу. Теперь о другой части вопроса.

Вообще говоря, в контексте набора реплик вы хотели бы подключиться к топологии, а не напрямую к конкретному c члену набора реплик, за исключением административных целей. , Репликация предназначена для обеспечения избыточности и подключения непосредственно к одному элементу, т. Е. Первичный не рекомендуется в случае аварийного переключения.

Все официальные драйверы MongoDB следуют Технические характеристики MongoDB . Что касается прямых соединений, требование в настоящее время равно server-discovery-and-Monitoring.rst # general-needs :

Прямые соединения : клиент ДОЛЖЕН иметь возможность подключаться к одному серверу любого типа. Это включает в себя запрос скрытых членов набора реплик и подключение к неинициализированным членам (см. RSGhost) для запуска «replSetInitiate». Установка предпочтения чтения НЕ ДОЛЖНА быть необходимой для подключения к вторичному устройству. Конечно, вторичный сервер отклонит все операции, выполненные с предпочтением чтения PRIMARY, поскольку бит slaveOk не установлен, но само исходное соединение успешно. Драйверы МОГУТ разрешать прямые соединения с арбитрами (например, для запуска административных команд).

Указывает, что он ДОЛЖЕН быть в состоянии сделать это, но не как. Драйвер MongoDB Go - не единственный драйвер, который в настоящее время поддерживает опцию direct, есть также .NET / C# и Ruby.

В настоящее время существует открытый PR для спецификаций, унифицирующих поведение. В будущем все драйверы будут иметь одинаковый способ установления прямого соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...