2

我一直在探索 MySQL JDBC 驱动程序并了解它能够使用此 url ("jdbc:mysql:loadbalance://") 进行负载平衡。

我查看了文档,似乎只有随机和最佳响应时间方法用于负载平衡(链接:http ://dev.mysql.com/doc/refman/5.0/es/connector-j-reference-configuration- properties.html语法是 loadBalanceStrategy)。

问题

  1. 有没有办法将轮询配置为 JDBC 驱动程序的负载平衡策略?我知道其他负载平衡方法可能会更好,但我正在尝试使用循环方法进行实验。
  2. 为 MySQL ndb 集群(具有同步复制的多主机)实现负载平衡(我对任何负载平衡策略持开放态度)是一个好主意吗?顺便说一句,我只有 2 台机器充当主机,并且都能够接收写入和读取。虽然 MySQL 提到了 JDBC 驱动程序与 ndb 集群的使用(请参阅下面的引用 1),但我想知道是否对多主机 ndb 集群使用负载平衡实际上会降低性能(请参阅引用 2)?
  1. 引自https://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-basics.html - “可以修改使用 MySQL 集群作为数据源的 MySQL 客户端以利用连接能力与多个 MySQL 服务器实现负载均衡和故障转移,例如使用 Connector/J 5.0.6 及更高版本的 Java 客户端可以使用 jdbc:mysql:loadbalance:// URLs(在 Connector/J 5.1.7 中改进)来实现负载均衡透明地;有关将 Connector/J 与 MySQL 集群一起使用的更多信息,请参阅将 Connector/J 与 MySQL 集群一起使用。”

  2. 引用自https://dba.stackexchange.com/questions/11789/load-balanced-mysql-cluster-without-load-balancer -“生产服务器上的复制延迟可能长达一整秒 - 我已经在远程托管和在我们的数据中心中,大约 99% 的时间它是 0,但有时 mysql 显示 1。在大量流量中,由于客户端应用程序发出两个请求导致两个查询,插入和选择,我有很多冲突。在某些情况下,该行还没有出现,所以我们使用了用户 ID 的哈希值,它解决了问题”

作为对霍华德的回复的回应,这些是我在发布此问题之前所做的一些事情 - 我曾尝试使用 roundRobinLoadBalance 作为 JDBC 连接字符串 (URL) 的一部分,但发生错误,表明它不受支持。互联网上的搜索还显示,其他人也面临尝试使用 roundRobinLoadBalance 的问题。因此,我试图看看是否有其他方法可以做到这一点。

4

1 回答 1

1

Q1) 有没有办法将轮询配置为负载均衡策略?

Round-roubin 的负载平衡算法为每台服务器提供相等的负载。当所有服务器的性能都相同时,使用它是有意义的。

另一方面,加权循环允许为每个服务器配置负载平衡。当您拥有具有不同性能的服务器时,这是有道理的。

例如 Glassfish 阅读:加权循环

Q2) 为 MySQL ndb 集群 (Multimaster with synchronous replication) 实现负载均衡(我对任何一种负载均衡策略持开放态度)是一个好主意吗?顺便说一句,我只有 2 台机器充当主机,并且都能够接收写入和读取。虽然 MySQL 提到了 JDBC 驱动程序与 ndb 集群的使用(请参阅下面的引用 1),但我想知道是否对多主机 ndb 集群使用负载平衡实际上会降低性能(请参阅引用 2)?

如果两台服务器性能相同,则无需配置负载均衡。它将负载平均分配到每个节点。

在循环中,负载平衡将平等地利用每个服务器。

如果一台服务器比另一台更快、更强大,您可能希望使用加权循环在更快的服务器上配置更多负载。

参考资料

http://docs.oracle.com/cd/E26576_01/doc.312/e24934/http-load-balancing.htm http://msdn.microsoft.com/en-us/library/ff648960.aspx

于 2014-03-23T10:01:29.653 回答