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
Hallo Ross, sind Sie sicher, dass Sie MySQL müssen auch skalieren? –
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