Implement round-robin for node selection
This commit is contained in:
@@ -21,6 +21,7 @@ let jobs = {
|
|||||||
finished: {}
|
finished: {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let nodeIndex = 0;
|
||||||
let nodes = {};
|
let nodes = {};
|
||||||
|
|
||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
@@ -57,7 +58,9 @@ app.post("/jobs", async (req, res) => {
|
|||||||
jobs['queued'][jobId] = req.body;
|
jobs['queued'][jobId] = req.body;
|
||||||
jobs['queued'][jobId]['jobId'] = jobId;
|
jobs['queued'][jobId]['jobId'] = jobId;
|
||||||
console.log(`Queued Job ${jobId}`);
|
console.log(`Queued Job ${jobId}`);
|
||||||
var client = Array.from(wss.clients)[0];
|
let nodes = Array.from(wss.clients);
|
||||||
|
nodeIndex = (nodeIndex + 1) % nodes.length;
|
||||||
|
var client = nodes[nodeIndex];
|
||||||
if(!client) {
|
if(!client) {
|
||||||
res.status(503).json({ 'message': 'No render nodes available', 'jobId': jobId });
|
res.status(503).json({ 'message': 'No render nodes available', 'jobId': jobId });
|
||||||
return;
|
return;
|
||||||
@@ -66,7 +69,7 @@ app.post("/jobs", async (req, res) => {
|
|||||||
let response = new Promise(function (resolve, reject){
|
let response = new Promise(function (resolve, reject){
|
||||||
jobs['queued'][jobId]['promise'] = {resolve: resolve, reject: reject};
|
jobs['queued'][jobId]['promise'] = {resolve: resolve, reject: reject};
|
||||||
});
|
});
|
||||||
console.log("Sent job to node", client.nodeID);
|
console.log(`Sent job to node ${nodeIndex+1}/${nodes.length} `, client.nodeID);
|
||||||
let result = await response.then(ResolveJob)
|
let result = await response.then(ResolveJob)
|
||||||
res.json({ 'jobId': jobId, "path": result["path"] });
|
res.json({ 'jobId': jobId, "path": result["path"] });
|
||||||
});
|
});
|
||||||
@@ -80,7 +83,6 @@ wss.on('connection', function connection(ws) {
|
|||||||
|
|
||||||
ws.on('message', function message(data) {
|
ws.on('message', function message(data) {
|
||||||
let request = JSON.parse(data);
|
let request = JSON.parse(data);
|
||||||
console.log('received: %s', data);
|
|
||||||
|
|
||||||
if(request["register"]){
|
if(request["register"]){
|
||||||
if(request["register"]["auth_key"] !== process.env.NODE_AUTH_KEY) {
|
if(request["register"]["auth_key"] !== process.env.NODE_AUTH_KEY) {
|
||||||
|
|||||||
Reference in New Issue
Block a user