扩展Web应用程序

时间:2016-06-29 15:44:26

标签: php mysql api architecture scaling

我开发了一个发送短信的API目前有三个MySql表在同一台服务器上运行(sms_account,sms_number和sms_transaction)。

我想使用haproxy来加载平衡并提高性能,以便在多个Web服务器之间拆分请求,但我真的不知道如何处理它的数据库部分。我知道我可以在master-master场景中创建一个单独的数据库集群,但想知道它是否可以做得更好。

我考虑过让一个主群集数据库包含与Web服务器相同的数据库。 sms_account和sms_number表只能在这个表上更新,而且这个表可以更新Web服务器sms_account和sms_number表,因为这些表不会经常更改。然后我想每个web服务器/ mysql实例都可以使用每个sms_transaction表中的记录定期更新master数据库。

这听起来有点乱,但是考虑到这种方式,数据库负载会非常低,因为所有的Web服务器数据库都会保持小而快,主要数据库可以用于计费。

我只是对设计的第二个意见。我认为这种方式在故障情况下,任何Web服务器都可以继续独立于其他服务器工作。

Web服务器实际上记录了事务,就是这样。没有复杂的查询。我可以从master数据库中进行报告等。

非常感谢

1 个答案:

答案 0 :(得分:0)

“定期更新”位的问题始终是一致性。

制作您自己的合并算法是可能的,但最终会导致错误处理混乱。

我真的建议你等到需要时再等MySQL。保持您的数据访问代码相当隔离,并且您可以随时/何时需要重构。

一旦你需要重构,你就是一个完美的主/奴隶奴隶配置..