Java 通过MySQL JDBC驱动程序进行负载平衡(连接器/J)

Java 通过MySQL JDBC驱动程序进行负载平衡(连接器/J),java,jdbc,load-balancing,mysql-connector,mysql-cluster,Java,Jdbc,Load Balancing,Mysql Connector,Mysql Cluster,我一直在探索MySQL JDBC驱动程序,并了解它能够使用此url(“JDBC:MySQL:loadbalance://”)进行负载平衡 我查看了文档,似乎只有随机和最佳响应时间方法用于负载平衡(link:syntax是loadBalanceStrategy) 问题 有没有办法将roundrobin配置为JDBC驱动程序的负载平衡策略?我知道其他负载平衡方法可能更好,但我尝试在实验中使用循环方法 为MySQL ndb集群(具有同步复制的多主机)实现负载平衡(我对任何负载平衡策略都持开放态度)是一

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

我查看了文档,似乎只有随机和最佳响应时间方法用于负载平衡(link:syntax是loadBalanceStrategy)

问题

  • 有没有办法将roundrobin配置为JDBC驱动程序的负载平衡策略?我知道其他负载平衡方法可能更好,但我尝试在实验中使用循环方法
  • 为MySQL ndb集群(具有同步复制的多主机)实现负载平衡(我对任何负载平衡策略都持开放态度)是一个好主意吗?顺便说一下,我只有两台机器作为主机,它们都可以接收写和读操作。虽然MySQL提到在ndb集群中使用JDBC驱动程序(请参阅下面的引文1),但我想知道,在多主机ndb集群中使用负载平衡是否会降低性能(请参阅引文2)
  • 引自- “可以修改使用MySQL群集作为数据源的MySQL客户端,以利用连接多个MySQL服务器的能力来实现负载平衡和故障切换。例如,使用Connector/J 5.0.6及更高版本的Java客户端可以使用jdbc:MySQL:loadbalance://URL(在Connector/J 5.1.7中改进)要透明地实现负载平衡,有关将Connector/J与MySQL群集一起使用的更多信息,请参阅将Connector/J与MySQL群集一起使用。”

  • 引自-“生产服务器上的复制延迟可能高达整整一秒—我在远程托管和数据中心测试过,99%的时间是0,但有时mysql显示为1s。在海量流量中,由于客户端应用程序发出两个请求,导致两个查询(insert和select),我遇到了许多冲突。在某些情况下,行还不存在,因此我们使用了userID的散列,它修复了问题“

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

    问题1)是否有办法将循环配置为负载平衡策略

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

    另一方面,加权循环允许为每台服务器进行负载平衡配置。当您有性能不同的服务器时,这是有意义的

    例如,玻璃鱼阅读:

    问题2)为MySQL ndb集群(Multimaster)实现负载平衡(我对任何负载平衡策略都持开放态度)是一个好主意吗 使用同步复制)?顺便说一句,我只有两台机器 作为主机,两者都能够接收写入和读取。 尽管MySQL提到在ndb集群中使用JDBC驱动程序 (参考下面的引文1),我想知道是否使用负载平衡 多主机ndb群集实际上会降低性能(请参阅 引述第2条)

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

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

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

    参考资料


    这怎么会没有研究成果和荒谬呢?我尝试将roundRobinLoadBalance作为URL的属性之一,但它指出如果您想知道的话,驱动程序不支持语法。此外,我还添加了MySQL的两个引用,其中提到使用JDBC驱动程序进行负载平衡,还有一个引用使用MySQL提到的方法时遇到问题的人。Hi Hitham,谢谢你的回答和对我两个问题的回答。对于问题1,我想我的问题可能措辞错误-我试图配置如何使用JDBC驱动程序进行循环负载平衡,因为我试图将其性能与MySQL Proxy r进行比较关于负载平衡。在发布这个问题之前,我已经阅读了不同的负载平衡方法是如何工作的,但是您的解释也非常有用。谢谢!JDBC只是Java数据库API。提供连接、结果集功能。负载平衡始终在节点、服务器上,无论是数据库服务器或者任何其他类型的服务器。希望这有助于澄清这个想法。阅读更多关于JDBC的信息