【问题标题】:What's the right way to work with many MySQL servers from Node.js simultaneously?从 Node.js 同时处理多个 MySQL 服务器的正确方法是什么?
【发布时间】:2014-01-09 07:31:01
【问题描述】:

我开发移动社交网络。存储在 MySQL 中的所有数据(通过分片)。热数据存储在 Redis 中,Redis 中也有 shards map。

后端 = node.js (express)

在从移动客户端向后端发出的一个请求中快速向不同 MySQL 服务器发出请求的正确方法是什么?

例子:

客户端向服务器请求 id = 1 的用户配置文件,我们将其存储在服务器 mysql-1 shard #1 上。与此同时,另一个客户端向服务器请求 id = 2 的用户配置文件,我们将其存储在服务器 mysql-2 shard #2 上。

mysql 服务器的数量将会增加。对服务器的请求数量也会增加。在对后端的每个请求都初始化与 MySQL 的新连接 - 我认为这不是一个好主意。

【问题讨论】:

    标签: mysql node.js express


    【解决方案1】:

    欢迎@Dmitry,一种方法是使用pool-cluster 的连接。

    这个模块https://github.com/felixge/node-mysql,可以帮到你。

    // create
    
    var poolCluster = mysql.createPoolCluster();
    poolCluster.add(config); // anonymous group
    poolCluster.add('MASTER', masterConfig);
    poolCluster.add('SLAVE1', slave1Config);
    poolCluster.add('SLAVE2', slave2Config);
    
    // Target Group : ALL(anonymous, MASTER, SLAVE1-2), Selector : round-robin(default)
    poolCluster.getConnection(function (err, connection) {});
    
    // Target Group : MASTER, Selector : round-robin
    poolCluster.getConnection('MASTER', function (err, connection) {});
    
    // Target Group : SLAVE1-2, Selector : order
    // If can't connect to SLAVE1, return SLAVE2. (remove SLAVE1 in the cluster)
    poolCluster.on('remove', function (nodeId) {
      console.log('REMOVED NODE : ' + nodeId); // nodeId = SLAVE1 
    });
    
    poolCluster.getConnection('SLAVE*', 'ORDER', function (err, connection) {});
    
    // of namespace : of(pattern, selector)
    poolCluster.of('*').getConnection(function (err, connection) {});
    
    var pool = poolCluster.of('SLAVE*', 'RANDOM');
    pool.getConnection(function (err, connection) {});
    pool.getConnection(function (err, connection) {});
    
    // destroy
    poolCluster.end();
    

    【讨论】:

      猜你喜欢
      • 2021-07-02
      • 2015-01-20
      • 2020-12-02
      • 1970-01-01
      • 2017-09-14
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      相关资源
      最近更新 更多