2017-09-11 2 views
0

Ich hoffe, dies nicht zu vage ist eine Frage ...Synchronisieren über vernetzte Python apps

Ich bin ein Python-app zu schreiben, die mehrere Instanzen von sich selbst haben wird Lastverteilung und Redundanz zu ermöglichen, stattzufinden.

Jede Instanz muss in der Lage sein, in der Backend-Datenbank zu lesen und zu schreiben, was das Problem von zwei "Gateways" verursacht, die versuchen, dasselbe Objekt zu aktualisieren.

Kann jemand dazu einen Ansatz empfehlen (nicht primär nach Code-Lösung suchen)?

Vielen Dank im Voraus;)

Antwort

0

Sie haben vor allem zwei Möglichkeiten verlieren Konsistenz auf Ihrer Datensatz zu vermeiden:

  • entweder verwenden, um einige Verriegelungsmechanismen zwischen den Python-Prozesse,
  • oder Verwendung Transaktionen
  • beim Zugriff auf die Datenbank.

Verriegelungsmechanismen müssen auf Kommunikation zwischen Prozessen basieren. Abhängig von Ihrem zugrunde liegenden Betriebssystem haben Sie möglicherweise Zugriff auf gemeinsam genutzten Speicher (denken Sie an Test-und-Set-Primitiv, um gemeinsam genutzten Speicher für ein solches Ziel zu verwenden), Semaphoren und andere Tools. Siehe Python IPC, zum Beispiel: https://docs.python.org/2/library/ipc.html

Transaktionen hängen von Ihrer Datenbank ab. Beispielsweise können Sie bei einer herkömmlichen SQL-Datenbank die Verhaltensweisen häufig entsprechend Ihren Anforderungen konfigurieren: automatische Festschreibung, optimistische Parallelität usw.

Verwandte Themen