0

前段时间,我创建了一个并发度很高的 REST 服务。

即使在 SQL 查询优化之后,这给了我更大的思考时间窗口,我开始担心该服务的 MySQL DB 服务器。

服务:

  • 多个 Apache 服务器,用于负载平衡,在 NGINX 反向代理后面处理高并发
  • PHP Opcode 缓存和 Memcached 数据缓存
  • 在 64 位操作系统上具有 InnoDB 表模式的 MySQL 数据库服务器
  • SQL 查询是存储过程

我在相对较快的时间内可能面临的问题是:

  • MySQL DB 服务器达到了数 TB 数据的存储限制
  • MySQL DB 服务器达到专用 CPU/RAM/TCP 的最大并发查询数

我找到了哪些解决方案并正在考虑:

  • MySQL 集群,但看起来它不支持 Integrity(FK?)
  • 用于负载平衡的多个复制 MySQL 服务器(缺点:存储过多)
  • 分片(缺点:在这一点上,当我需要尽快找到解决方案时,对我来说看起来很复杂)
  • 切换到 PostegreSQL 并针对此特定 SQL Server 进行更多调查

对于卸载 MySQL 服务器,您有什么建议,最好的选择?如果我什么都不做,它最终会崩溃。

提前致谢!

4

1 回答 1

0

您可以考虑的另一种解决方案。

您可以使用池服务,这些服务是一些具有最高需求优先级的查询。例如,在 stackoverflow 中,大多数想要使用他们的 API 的人都会询问最新的问题。所以第一个人询问他们可以从他们的数据库中得到的最新问题。但是只要是高优先级的查询就会被添加到池中,所以任何需要它的人都可以直接从池中检索它,而不需要从服务器请求它花费那么多时间。

关于池的实施,这是另一个要讨论的标准。

另一个解决方案是:如果您拥有非常大规模的数据集群并且您的选择语句增加了很多,那么您可以使用 hadoop 中的 hdfs 并在任意数量的服务器上应用 hadoop。Facebook、linkedIn 和 yahoo 都使用此方法。

于 2012-12-23T19:20:41.340 回答