【问题标题】:Scaling web application扩展 Web 应用程序
【发布时间】:2016-11-01 10:38:35
【问题描述】:

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

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

我曾考虑拥有一个主集群数据库,其中包含与网络服务器相同的数据库。 sms_account 和 sms_number 表只能在这个上更新,而这个可以更新 web 服务器的 sms_account 和 sms_number 表,因为它们不会经常更改。然后我认为每个 web 服务器/mysql 实例都可以使用每个 sms_transaction 表中的记录定期更新主数据库。

听起来有点乱,但认为这样数据库负载会非常低,因为所有 Web 服务器数据库都将保持小而快,并且主要的数据库可以用于计费。

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

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

非常感谢

【问题讨论】:

  • 嗨,Ross,您确定还需要扩展 MySQL 吗?
  • 可能不会,使用多个 Web 节点和单个数据库服务器是否还能提高性能?虽然如果我将来需要有一个计划会很好。

标签: php mysql api architecture scaling


【解决方案1】:

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

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

我真的建议您等到需要时再扩展 MySQL。保持您的数据访问代码相当独立,并且您可以随时在需要时重构。

一旦你确实需要重构,你就处于一个完美的主/从配置中..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2021-12-23
    相关资源
    最近更新 更多