Zuverlässigkeit Atomare Zähler in DynamoDB
War ich mit dem Gedanken Amazon DynamoDB in meiner Anwendung, und ich habe eine Frage bezüglich seiner Atomare Zähler Zuverlässigkeit.
Ich bin Aufbau einer verteilten Anwendung, muss gleichzeitig, und konsequent, Inkrement/Dekrement einen Zähler, gespeichert in einer Dynamo-Attribut.
Ich Frage mich, wie zuverlässig die Dynamo ' s atomic counter ist in eine schwere gleichzeitigen Umgebung, wo die concurrency-level ist extrem hoch (sagen wir zum Beispiel, eine Durchschnittliche rate von 20k gleichzeitige trifft zu auf die Idee kommen, das wäre fast 52 Milliarden inkrementiert/dekrementiert pro Monat).
Sollte der Indikator sein, super-zuverlässig und nie verpassen einen Treffer. Hat jemand getestet DynamoDB in solch kritischen Umgebungen?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
DynamoDB bekommt es die Skalierung von Eigenschaften durch die Aufspaltung der Schlüssel über mehrere Server hinweg. Dies ist ähnlich wie die anderen verteilten Datenbanken wie Cassandra und HBase-Skala. Während erhöhen Sie den Durchsatz auf DynamoDB, die nur bewegt werden Ihre Daten auf mehreren Servern und nun hat jeder server kann insgesamt gleichzeitige verbindungen /Anzahl der Server. Werfen Sie einen Blick in Ihren FAQ für eine Erklärung, wie Sie das erreichen maximaler Durchsatz:
Dies bedeutet, dass ein Schlüssel, der erhöht wird, die direkt keine Waage da, der Schlüssel muss live auf einem server. Es gibt andere Wege, dieses problem zu behandeln, zum Beispiel in-memory-aggregation mit einem flush erhöht, DynamoDB, (obwohl dies kann Probleme mit der Zuverlässigkeit) oder einem sharded Theke, wo auch die Stufen verteilt über mehrere Tasten und wieder zu Lesen, indem Sie alle Schlüssel in der sharded-Zähler (http://whynosql.com/scaling-distributed-counters/).
Neben gigq Antwort über Skalierbarkeit, DynamoDBs atomaren Schritten sind nicht idempotent und sind daher nicht zuverlässig: Wenn die Verbindung lässt nach Erteilung einer
UpdateItem
ADD
Anfrage, haben Sie keine Möglichkeit zu wissen, ob das add begangen wurde oder nicht, so dass Sie nicht wissen, ob Sie sollten versuchen Sie es erneut oder nicht.DynamoDB bedingte updates dieses Problem beheben, auf Kosten der macht das system noch weniger skalierbar, weil Sie zu wiederholen, jedes mal, wenn zwei änderungen am Attribut versucht gleichzeitig, auch in der Abwesenheit eines Fehlers.
ReturnValues
von der update-Anweisung? Auf diese Weise erhalten Sie den Wert, wenn das update gemacht wurde. Der Rückgabewert ist stark konsistent. Dann brauchen Sie nicht zu Lesen, und dann zu aktualisieren. Wenn Ihr Netzwerk fällt, werden Sie wiederholen. Schlimmste Fall ist, überspringen Sie eine Zahl in der Sequenz. docs.aws.amazon.com/amazondynamodb/latest/APIReference/...wenn Sie schreiben einen einzigen dynamo db-Schlüssel, Sie leiden unter hot partition Problem. Hot-partition-Ausgabe startet rund 300 TPS pro index. Also, wenn Sie 5 Indizes in der Tabelle, können Sie sehen, hot-partition-Problem rund um 300/5 ~ 60 TPS.
Sonst, dynamo db ist skalierbar auf über 10-40K TPS, je nach Anwendungsfall.