什么是正确的方式来处理从Node.js许多MySQL服务器?

我开发移动社交networking。 所有数据存储在MySQL(通过分片)。 存储在Redis中的热数据,Redis中也有碎片映射。

后端= node.js(快速)

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

例:

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

MySQL服务器的数量将会增长。 而对服务器的请求数量也会增长。 初始化一个新的连接到MySQL的每个请求到后端 – 我认为这不是一个好主意。

欢迎@Dmitry,一个aproach可以使用连接池集群 。

这个模块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();