-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver-rr.js
102 lines (81 loc) · 2.34 KB
/
server-rr.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const ejs = require('ejs');
// Round Robin initial load
const rr_load = { server1: 0, server2: 0, server3: 0 };
const server = express();
const appRR1 = express();
const appRR2 = express();
const appRR3 = express();
//Set view engine
server.use(expressLayouts);
server.set('view engine', 'ejs');
appRR1.use(expressLayouts);
appRR1.set('view engine', 'ejs');
appRR2.use(expressLayouts);
appRR2.set('view engine', 'ejs');
appRR3.use(expressLayouts);
appRR3.set('view engine', 'ejs');
// Parse the request body as JSON
appRR1.use(express.static(__dirname + '/views'));
appRR2.use(express.static(__dirname + '/views'));
appRR3.use(express.static(__dirname + '/views'));
let logData = `$ node server-rr.js
Server running at 8080`;
appRR1.get('/my-request-rr', (req, res) => {
rr_load.server1++;
const myLog = `
Server 1 : ${req.method} ${req.url}`;
console.log('Server 1 :', req.method, req.url);
logData += myLog;
res.render('round-robin', {
logs: logData,
load: rr_load
});
});
appRR2.get('/my-request-rr', (req, res) => {
rr_load.server2++;
const myLog = `
Server 2 : ${req.method} ${req.url}`;
console.log('Server 2 :', req.method, req.url);
logData += myLog;
res.render('round-robin', {
logs: logData,
load: rr_load
});
});
appRR3.get('/my-request-rr', (req, res) => {
rr_load.server3++;
const myLog = `
Server 3 : ${req.method} ${req.url}`;
console.log('Server 3 :', req.method, req.url);
logData += myLog;
res.render('round-robin', {
logs: logData,
load: rr_load
});
});
appRR1.listen(3000);
appRR2.listen(3001);
appRR3.listen(3002);
const request = require('request');
const servers = ['http://localhost:3000', 'http://localhost:3001', 'http://localhost:3002'];
let cur = 0;
// Round Robin
const handlerserver = (req, res) => {
req.pipe(request({ url: servers[cur] + req.url })).pipe(res);
cur = (cur + 1) % servers.length;
};
server.use(express.static(__dirname + '/views'));
server.get('/', (req, res) => {
res.render('round-robin', {
logs: logData,
load: rr_load
});
});
server.get('/my-request-rr', (req, res) => {
handlerserver(req, res);
});
server.listen(8080, () => {
console.log(`Server running at ${8080}`);
});