【问题标题】:Load balancing Cascading JDBCTap for MySQL负载均衡级联 JDBCTap for MySQL
【发布时间】:2023-03-22 05:30:01
【问题描述】:

我正在考虑编写一个级联应用程序,该应用程序向 MYSQL 数据库发出 SELECT 语句,其中每个查询都可以返回数百万行。

每个数据库存在N个slave和一个master,如下图:http://dev.mysql.com/doc/refman/5.0/en/replication-solutions-scaleout.html#figure_replication-scaleout

在 JDBCTap 中,我看到我们只能传递一个主机名:这意味着我的所有映射器都会尝试连接到单个从属设备(而其他 (N-1) 个从属设备处于空闲状态)。

假设从属服务器前面没有负载均衡器,我可以使用一个 JAVA 包/模块/代理(或者更好的自定义 JDBCTap 实现)来将映射器的连接分散到 N 个从属服务器上吗?

此处详细介绍了使用硬件代理的示例脚本:http://blog.netoearth.com/html/201006/building-a-mysql-load-balancing-proxy-with-trafficscript.htm

如果这样的事情不存在,我将不得不使用以下算法创建我自己的 JDBCTap(将映射器的连接分散到 N 个从属设备上):

  1. 将 N 个从属服务器的列表保存在外部数据库中(任何支持并发写入/更新的数据库)
  2. 有一个已连接到每个从属设备的映射器计数器
  3. 每次映射器需要连接到从属服务器时,它都会查询该数据库以找出负载最少的从属服务器(连接到它的映射器的数量最少)。碰撞时随机平局。

这听起来是个好主意吗?我上面提到的“很好地支持并发写入/更新”的外部数据库可能是什么? (Cassandra、VoltDB 等)

【问题讨论】:

    标签: mysql hadoop connection-pooling elastic-map-reduce cascading


    【解决方案1】:

    JDBC 一般不支持并行性,这对大规模负载来说是个瓶颈。

    在那种主备架构中,如何通过 MySQL 备份将备用数据库中的数据提取到 TSV,然后将这些数据并行加载到 HDFS 中?

    【讨论】:

      猜你喜欢
      • 2016-11-29
      • 2021-12-07
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 2013-02-05
      相关资源
      最近更新 更多