10

我需要在现有站点中实现主/从/负载平衡。

有没有人使用这些(或其他)实现进行主/从切换?

我找到的关于如何在 Cake 中实现主/从的资源:。

我得到的数字 1) 大部分时间都可以工作,但在某些连接方面存在问题。

我欢迎用于主/从实现的新资源、黑客或模组,因为现在我无法理解它。

(我使用 atm 的蛋糕版本是 1.2)(我在 CakePHP 的谷歌群组http://groups.google.co.uk/group/cake-php/browse_thread/thread/4b77af429759e08f上交叉发布这个)

4

3 回答 3

0

据我所知,如果您的模型与不使用相同行为的模型有关系,就会发生这种情况。如果这个假设是错误的,请纠正我。

所有模型都有元数据,CakePHP 使用 DESCRIBE 查询对数据库进行累积,如果这些数据不存在,您的连接将被破坏。此元数据是特定于数据库配置的。

CakePHP 使用这个元数据来填充 $this->_schema 属性。SQL 连接是使用 $this->_schema 属性中的数据构建的,我想这就是您的问题所在,此 MasterSlave 开关行为引入的数据库没有与模型关联的表的任何模型元数据。

一个解决方案是更新您的行为,使其仅选择性地切换读取和写入。将此行为添加到所有相关模型。即任何使用hasOne、hasMany 等相关的模型也应该使用相同的行为。

本质上,所有相关的模型都应该写入同一个数据库并从同一个数据库读取。

此解决方案的好处是您将共享相同的数据库连接。

于 2011-03-16T09:20:24.857 回答
0

您的 Web 应用程序似乎是多层的,您需要单独扩展每一层:

  • Web 层,即 CakePHP 应用程序可以分布在多个 Web 服务器上。这很容易做到,因为代码本身是幂等的。您应该研究如何对 apache 服务器进行负载平衡,这没什么大不了的。网络服务器虽然有相当高的吞吐量,所以如果你在这里遇到瓶颈,你可以改进你的代码/缓存策略。(例如,使用 memcache 而不是文件缓存。)如果您依赖文件系统(例如上传),这会变得有点复杂,因为它必须变得分布式或分离。

  • 数据层。有各种教程如何扩展/负载平衡其他人已经链接的 MySQL。

尽管首先我会建议进行基准测试。(过早的优化是万恶之源。)您必须首先知道瓶颈在哪里,吞吐量应该在哪里扩展。通常,您首先可以优化查询、缓存或使事物可缓存。您还必须明确您的目标:可扩展性?容错?

于 2011-11-24T10:11:20.883 回答
0

查看本教程关于多个节点上的主/从。

http://www.howtoforge.com/setting-up-master-master-replication-on-four-nodes-with-mysql-5-on-debian-etch

这可以帮助您更好地理解。

于 2010-08-26T12:45:37.070 回答