Das hat für mich funktioniert
Ich habe einen Replikatsatz implementiert, den ich global verwende. Ich habe meinen Master in Oregon, USA und 4 Secondaries. Kalifornien und Virginia, Frankfurt und Sydney. Ich habe auch Webserver in diesen Regionen. Diese Webserver verbinden sich mit Mungo mit Mongo:
%Vor%Mein Problem ist, dass mein Client eine höhere Latenz in der Datenbank hat, je nachdem wie weit er vom Master entfernt ist. Kalifornien bekommt 40ms, während Sydney 400ms bekommt. Ich verstehe nicht, warum dies geschieht, da sie die Sekundärdatenbank in ihrer Region ablesen sollten.
Ich verstehe, dass Schreibvorgänge mit dem primären durchgeführt werden müssen, aber selbst wenn ich einen Fund ausführe, sollte es dann nicht auf der sekundären Region durchgeführt werden und ziemlich schnell zurückkehren?
Mir ist klar, dass es einige redundante Optionen in dieser Konfiguration gibt, aber ich bin verzweifelt. Ich habe auch die Option %code% ohne Erfolg versucht.
Bearbeiten
Versuchen Sie, die Leseeinstellung für die Verbindungszeichenfolge selbst mit %code% und nicht in den dbOptions einzustellen. Ich kann nichts in der node-mongodb-native finden, die besagt, dass eine Lesevoreinstellung zur replset-Konfiguration hinzugefügt werden kann. Ссылка
Alte Antwort
Sie müssen die Einstellung möglicherweise auf den nächsten und nicht auf den zweiten bevorzugten Wert festlegen. Ссылка
Versuchen Sie es mit den folgenden Optionen:
%Vor%Obwohl in der Dokumentation %code% als Standardstrategie angegeben ist, scheint es Mongoose-Mandaten zu geben, dass Sie eine angeben, wenn Sie %code% verwenden.
Beachten Sie auch, dass %code% nicht dasselbe ist wie %code% . %code% liest unabhängig von der Netzwerklatenz sekundäre Mitglieder aus (wie der Name schon sagt), wobei %code% die Lesevorgänge für das Mitglied mit der geringsten Netzwerklatenz priorisiert.
Stellen Sie vor einer Fehlkonfiguration in Ihrer Replikatgruppe sicher, dass Ihre Primärdatenbank online und erreichbar ist. Standardmäßig wird Mongoose die Verwendung einer Sekundärdatenbank verweigern, wenn die Primärdatenbank offline ist.