2017-12-30 18 views
0

Angenommen, Sie führen einen PHP + -Datenbankserver aus, und Sie möchten ein Update bereitstellen, das das Datenbankschema und die PHP-Quellen ändert. Du machst es regelmäßig.Wie stelle ich ein Update auf deinen PHP-Server bereit, d. H. Konsistenz erhalten?

Das Problem ist, dass Ihr Dienst während des Updates kurzzeitig in einen inkonsistenten Zustand versetzt wird und die Clients dadurch zufällige Fehler bekommen. Erstens sind es die Inkonsistenzen zwischen den DB-Tabellen beim Aktualisieren des Schemas, dann die Inkonsistenzen zwischen der Datenbank und Ihrer Quelle und schließlich beim Aktualisieren der Quellen selbst: Ihre Dateien werden für sehr kurze Momente leer oder unvollständig und dann in den Modulen selbst inkonsistent. Es besteht die Möglichkeit, dass Ihre Kunden während des Updates Fehler erhalten.

Die Frage ist, was ist der beste Weg, dies zu verhindern?

Die Lösung, an die ich denke: Ersetzen Sie die Server-Stamm .htaccess durch eine, die HTTP 503 Service unavailable für die Dauer des Updates zurückgibt, dann legen Sie das Original zurück (ein Skript wird all dies tun). Clients können das innerhalb weniger Sekunden wiederholen, zum Beispiel bedeutet 503, dass sie innerhalb von 10 Sekunden wiederholt werden müssen, nicht mehr als dreimal.

Ein potenzielles Problem besteht darin, dass einige Anfragen bereits in Bearbeitung sind, bevor htaccess ausgetauscht wird. Sie müssen also warten, bis alle Anfragen bearbeitet sind. Am problematischsten werden lange Dateiübertragungen sein. Nehmen wir an, es dauert einige Minuten, bis eine Datei an einen Client gesendet wird. Das bedeutet, dass sich der Server für Minuten in einem Zustand 503 befindet.

Gibt es auch irgendwelche Out-of-the-Box-Lösungen speziell für PHP?

Antwort

1

Sie haben zwei Server. Führen Sie die Updates für das Failover aus, führen Sie dann einen Failover durch, führen Sie die Updates im Hauptfeld aus, und führen Sie einen Fehler aus. Sie könnten sogar eine Cloud-Instanz Ihres Servers hochfahren, um den Datenverkehr zu übernehmen, während Sie Ihren Server aktualisieren. Ich nehme an, es hängt davon ab, was die Ausfallzeit kostet. Wenn es für eine Weile nicht viel kostet, etwas zu tun; Zeigen Sie Ihre DNS auf Google oder etwas!

Wenn dies ein Einkommen ist; Ich würde vorschlagen, dass Sie sowieso zwei Server einrichten, also haben Sie einen, auf den Sie zurückgreifen können, wenn etwas schief geht!

Verwandte Themen