Herstellen einer Verbindung mit Amazon DocumentDB als Replikatsatz - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Herstellen einer Verbindung mit Amazon DocumentDB als Replikatsatz

Wenn Sie gegen Amazon DocumentDB entwickeln (mit MongoDB-Kompatibilität), sollten Sie Verbindungen mit Ihrem -Cluster als Replikatsatz herstellen und Lesevorgänge mithilfe der integrierten Leseeinstellungen Ihres Treibers an Replikat-Instances verteilen. In diesem Abschnitt wird eingehender beschrieben, was das bedeutet und wie Sie beispielsweise eine Verbindung mit Ihrem Amazon DocumentDB DocumentDB-Cluster als Replikatsatz unter Verwendung des SDK für Python herstellen können.

Amazon DocumentDB verfügt über drei Endpunkte, die Sie zum Herstellen von Verbindungen mit Ihrem Cluster verwenden können:

  • Cluster-Endpunkt

  • Leser-Endpunkt

  • Instance-Endpunkte

In den meisten Fällen sollten Sie beim Herstellen von Verbindungen mit Amazon DocumentDB verwenden Sie den Cluster-Endpunkt verwenden. Dies ist ein CNAME, der auf die primäre Instance in Ihrem Cluster verweist wie im folgenden Diagramm gezeigt.

Wenn Sie einen SSH-Tunnel verwenden, empfehlen wir, dass Sie über den Clusterendpunkt eine Verbindung mit Ihrem Cluster herstellen und nicht versuchen, eine Verbindung im Replikatsatzmodus herzustellen (d. h. replicaSet=rs0 in der Verbindungszeichenfolge anzugeben), da dies zu einem Fehler führt.

Anmerkung

Weitere Informationen zu Amazon DocumentDB DocumentDB-Endpunkten finden Sie unterAmazon DocumentDB DocumentDB-Endpunkteaus.

Diagramm mit Amazon DocumentDB DocumentDB-Endpunkten einschließlich Cluster-, Reader- und Instance-Endpunkten.

Mithilfe des Cluster-Endpunkts können Sie im Replikatsatzmodus eine Verbindung zu Ihrem Cluster herstellen. Anschließend können Sie die integrierten Treiberfunktionen für Leseeinstellungen verwenden. Im folgenden Beispiel signalisiert die Angabe von /?replicaSet=rs0 dem SDK, das Sie eine Verbindung als Replikatsatz herstellen möchten. Wenn Sie /?replicaSet=rs0' auslassen, leitet der Client alle Anfragen an den Cluster-Endpunkt weiter, d. h. Ihre primäre Instance.

## Create a MongoDB client, open a connection to Amazon DocumentDB as a ## replica set and specify the read preference as secondary preferred client = pymongo.MongoClient('mongodb://<user-name>:<password>@mycluster.node.us-east-1.docdb.amazonaws.com:27017/?replicaSet=rs0')

Der Vorteil der Verbindung als Replikatsatz besteht darin, dass Ihr SDK die Cluster-Topographie automatisch erkennt, auch wenn Instances dem Cluster hinzugefügt oder aus dem Cluster entfernt werden. Anschließend können Sie den Cluster effizienter nutzen, indem Sie Leseanforderungen an Ihre Replikat-Instances weiterleiten.

Wenn Sie eine Verbindung als Replikatsatz herstellen, können Sie die readPreference für die Verbindung angeben. Wenn Sie die Leseeinstellung secondaryPreferred angeben, leitet der Client Leseabfragen an Ihre Replikate und Schreibabfragen an Ihre primäre Instance weiter (wie im folgenden Diagramm gezeigt). Damit werden Ihre Cluster-Ressourcen besser genutzt. Weitere Informationen finden Sie unter Leseeinstellungsoptionen.

## Create a MongoDB client, open a connection to Amazon DocumentDB as a ## replica set and specify the read preference as secondary preferred client = pymongo.MongoClient('mongodb://<user-name>:<password>@mycluster.node.us-east-1.docdb.amazonaws.com:27017/?replicaSet=rs0&readPreference=secondaryPreferred')
Diagramm mit Amazon DocumentDB readPreference: secondaryPreferred.

Lesevorgänge über Amazon DocumentDB DocumentDB-Replikate sind Eventorial. Sie geben die Daten in der gleichen Reihenfolge zurück, in der sie auf dem primären Knoten geschrieben wurden. Die Replikationsverzögerung beträgt häufig weniger als 50 ms. Sie können die Replikationsverzögerung für Ihren Cluster mithilfe der Amazon CloudWatch CloudWatch-Metriken überwachenDBInstanceReplicaLagundDBClusterReplicaLagMaximumaus. Weitere Informationen finden Sie unter Überwachen von Amazon DocumentDB mit CloudWatch.

Im Gegensatz zur herkömmlichen monolithischen Datenbankarchitektur trennt Amazon DocumentDB Speicher und Datenverarbeitung. Aufgrund dieser modernen Architektur sollten Sie Lesevorgänge auf Replikat-Instances skalieren. Lesevorgänge auf Replikat-Instances blockieren keine Schreibvorgänge, die von der primären Instance repliziert werden. Sie können einem Cluster bis zu 15 Read-Reaplica-Instances hinzufügen und auf Millionen von Lesevorgängen pro Sekunde skalieren.

Der Hauptvorteil der Verbindung als Replikatsatz und der Verteilung von Lesevorgängen an Replikate besteht darin, dass dies die Gesamtzahl der Ressourcen im Cluster erhöht, die für Ihre Anwendung verfügbar sind. Wir empfehlen die Verbindung als Replikatsatz als bewährte Methode. Darüber hinaus empfehlen wir diesen Ansatz besonders für die folgenden Szenarien:

  • Sie nutzen nahezu 100 Prozent der CPU-Leistung auf Ihrer primären Instance.

  • Das Puffer-Cache-Treffer-Verhältnis ist beinahe Null.

  • Sie erreichen die Verbindungs- oder Cursor-Limits für eine einzelne Instance.

Die Aufwärtsskalierung einer Cluster-Instance-Größe ist eine Option und kann in einigen Fällen die beste Möglichkeit für die Skalierung des Clusters darstellen. Sie sollten jedoch auch überlegen, wie Sie die Replikate, die in Ihrem Cluster bereits vorhanden sind, besser nutzen können. So können Sie die Skalierung erhöhen, ohne dass für Sie höhere Kosten für die Verwendung eines größeren Instance-Typs anfallen. Sie sollten diese Limits darüber hinaus überwachen und Warnungen für sie ausgeben (d. h.CPUUtilization,DatabaseConnections, undBufferCacheHitRatio) Verwenden Sie CloudWatch-Alarme, damit Sie wissen, wann eine Ressource intensiv genutzt wird.

Weitere Informationen finden Sie unter den folgenden Themen:

Verwenden von Cluster-Verbindungen

Betrachten Sie ein Szenario, in dem alle Verbindungen in Ihrem Cluster genutzt werden. Beispielsweise hat eine r5.2xlarge-Instance ein Limit von 4.500 Verbindungen (und 450 offenen Cursors). Wenn Sie einen Amazon DocumentDB DocumentDB-Cluster mit drei Instances erstellen und nur Verbindungen mit der primären Instance über den Cluster-Endpunkt herstellen, betragen die Cluster-Limits für offene Verbindungen und Cursors 4.500 bzw. 450. Sie können diese Limits erreichen, wenn Sie Anwendungen mit zahlreichen Workern verwenden, die in Containern gestartet werden. Die Container öffnen mehrere Verbindungen gleichzeitig und sättigen den Cluster.

Stattdessen könnten Sie eine Verbindung mit dem Amazon DocumentDB DocumentDB-Cluster als Replikatsatz herstellen und Ihre Lesevorgänge an die Replikat-Instances verteilen. Anschließend könnten Sie die Anzahl der verfügbaren Verbindungen und Cursors im Cluster effektiv auf 13.500 bzw. 1.350 verdreifachen. Das Hinzufügen weiterer Instances zum Cluster erhöht lediglich die Anzahl der Verbindungen und Cursors für Lese-Workloads. Wenn Sie die Anzahl der Verbindungen für Schreibvorgänge in Ihrem Cluster erhöhen müssen, sollten Sie die Instance-Größe erhöhen.

Anmerkung

Die Anzahl der Verbindungen für large, xlarge, und 2xlarge Instances erhöht sich mit der Instance-Größe bis zu 4.500. Die maximale Anzahl von Verbindungen pro Instance für 4xlarge Instances oder größer beträgt 4.500. Weitere Hinweise zu Beschränkungen nach Instance-Typ finden Sie unter Instance-Limits.

In der Regel empfehlen wir das Herstellen von Verbindungen mit Ihrem Cluster unter Verwendung der Leseeinstellung secondary nicht. Der Grund hierfür ist, dass die Lesevorgänge fehlschlagen, wenn es keine Replikat-Instances im Cluster gibt. Angenommen, Sie führen einen Amazon DocumentDB DocumentDB-Cluster mit zwei Instances aus, einer primären und einer Replikat-Instance. Wenn die Replikat-Instance ein Problem aufweist, schlagen Leseanforderungen aus einem als secondary festgelegten Verbindungspool fehl. Der Vorteil von secondaryPreferred besteht darin, dass der Client für Lesevorgänge auf den primären Knoten zurückgreift, wenn er keine geeignete Replikat-Instance für die Verbindung finden kann.

Mehrere Verbindungspools

In einigen Szenarien müssen Lesevorgänge in einer Anwendung „Read for Write Consistency“ aufweisen, die nur von der primären Instance in Amazon DocumentDB bereitgestellt werden kann. In diesen Szenarien könnten Sie zwei Client-Verbindungspools erstellen: einen für Schreibvorgänge und einen für Lesevorgänge, die „Read after Write Consistency“ benötigen. Ihr Code würde in diesem Fall ungefähr wie folgt aussehen.

## Create a MongoDB client, ## open a connection to Amazon DocumentDB as a replica set and specify the readPreference as primary clientPrimary = pymongo.MongoClient('mongodb://<user-name>:<password>@mycluster.node.us-east-1.docdb.amazonaws.com:27017/?replicaSet=rs0&readPreference=primary') ## Create a MongoDB client, ## open a connection to Amazon DocumentDB as a replica set and specify the readPreference as secondaryPreferred secondaryPreferred = pymongo.MongoClient('mongodb://<user-name>:<password>@mycluster.node.us-east-1.docdb.amazonaws.com:27017/?replicaSet=rs0&readPreference=secondaryPreferred')

Eine weitere Möglichkeit besteht darin, einen einzelnen Verbindungspool zu erstellen und die Leseeinstellung für eine bestimmte Sammlung zu überschreiben.

##Specify the collection and set the read preference level for that collection col = db.review.with_options(read_preference=ReadPreference.SECONDARY_PREFERRED)

Übersicht

Um die Ressourcen im Cluster besser zu nutzen, sollten Sie Verbindungen mit dem Cluster über den Replikatsatzmodus herstellen. Sie können die Zahl der Lesevorgänge für Ihre Anwendung skalieren, indem Sie Ihre Lesevorgänge an die Replikat-Instances verteilen, wenn dies für Ihre Anwendung geeignet ist.