gpt4 book ai didi

php - round robin连接mysql

转载 作者:可可西里 更新时间:2023-11-01 08:38:04 28 4
gpt4 key购买 nike

我想在我的应用程序中将查询负载平衡到 2 个 mysql 服务器。

最好的方法是什么,以便每个查询都转到不同的数据库服务器?

我正在考虑有一个全局计数器,每次建立连接时它都会递增,用我的数据库服务器修改计数器以获得我应该连接的主机。然而,上述过程需要是原子的,以便没有 2 个请求看到相同的计数器。

我该怎么办?使用信号量锁,mysql的get_lock()?

伪代码

counter = 0
hosts = array('192.168.1.1:3306', '192.168.1.2:3306')

//the below code needs to be atomic
GET A GLOBAL LOCK
counter = counter+1
RELEASE THE LOCK

host = hosts[counter % len(hosts)]

谢谢

最佳答案

最好的方法是什么?

使用MySQL Proxy ...它会自动补偿停机服务器。另外,您可以编写规则来说明每个查询的去向(循环选择,或特定服务器以获得更好的缓存亲和性)。另外,它可以自动将所有写入定向到主服务器...

我不会尝试在您的应用程序中实现它。原因是处理跨多个实例的全局锁要困难得多,并且更难进行不会导致大的性能损失的故障检测......

关于php - round robin连接mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3839609/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com