2016-06-29 19 views
-1

Ich habe eine API entwickelt, die SMS senden Es gibt derzeit drei MySql-Tabellen auf dem gleichen Server (sms_account, sms_number und sms_transaction).Scaling Web-Anwendung

Ich möchte Haproxy verwenden, um das Gleichgewicht zu laden und die Leistung zu verbessern, um die Anfragen zwischen mehreren Webservern zu teilen, aber ich weiß nicht wirklich, wie man den Datenbankteil davon behandelt. Ich weiß, dass ich einen separaten Datenbank-Cluster in einem Master-Master-Szenario erstellen könnte, aber ich fragte mich, ob es besser gemacht werden könnte.

Ich habe über eine Haupt-Cluster-Datenbank nachgedacht, die eine identische Datenbank mit den Webservern enthält. Die Tabellen sms_account und sms_number könnten nur auf dieser Seite aktualisiert werden und diese könnte die Webserver sms_account und sms_number Tabellen aktualisieren, da diese sich nicht sehr häufig ändern. Ich dachte dann, dass jede Webserver/MySQL-Instanz die Master-Datenbank regelmäßig mit den Datensätzen aus jeder der sms_transaction-Tabellen aktualisieren könnte.

Es klingt ein wenig chaotisch, aber auf diese Weise wäre die Datenbanklast sehr gering, da alle Webserver-Datenbanken alle klein und schnell bleiben und der Hauptteil für die Abrechnung verwendet werden könnte.

Ich möchte nur eine zweite Meinung über das Design. Ich denke so in einem Fehlerszenario könnte jeder der Webserver weiterhin unabhängig von den anderen Servern arbeiten.

Die Webserver protokollieren die Transaktion buchstäblich und das ist es. Es gibt keine komplexen Abfragen. Ich könnte die Berichterstattung etc. aus der Master-Datenbank machen.

Vielen Dank

+0

Hallo Ross, sind Sie sicher, dass Sie MySQL müssen auch skalieren? –

+0

wahrscheinlich nicht, würde ich immer noch erhöhte Leistung mit mehreren Web-Knoten und einem einzigen Datenbankserver bekommen? Obwohl es nett wäre, einen Plan zu haben, sollte ich in der Zukunft brauchen. – Ross

Antwort

0

Das Problem mit dem "Von Zeit zu Zeit aktualisieren" Bit ist immer Konsistenz.

Es ist möglich, einen eigenen Zusammenführungsalgorithmus zu erstellen, aber Sie werden mit einer Fehlerbehandlung fertig werden, die sich auf die Straße auswirkt.

Ich würde Ihnen wirklich empfehlen, auf die Skalierung von MySQL zu warten, bis Sie es brauchen. Halten Sie Ihren Datenzugriffscode relativ gut isoliert, und Sie können ihn jederzeit umgestalten.

Sobald Sie Refactoring brauchen, sind Sie in einer perfekten Master/Slaves Slaves Konfiguration ..