mirror of
https://github.com/sofastack/sofa-rpc-node.git
synced 2026-01-25 16:06:26 +00:00
25 lines
643 B
JavaScript
25 lines
643 B
JavaScript
'use strict';
|
|
|
|
const assert = require('assert');
|
|
|
|
const buildinLoadBalancers = {
|
|
get random() {
|
|
return require('./random');
|
|
},
|
|
get roundRobin() {
|
|
return require('./weight_rr');
|
|
},
|
|
get consistentHash() {
|
|
return require('./consistent_hash');
|
|
},
|
|
};
|
|
|
|
module.exports = addressGroup => {
|
|
let loadbalancerClass = addressGroup.loadbalancerClass;
|
|
if (typeof loadbalancerClass === 'string') {
|
|
loadbalancerClass = buildinLoadBalancers[loadbalancerClass];
|
|
}
|
|
assert(typeof loadbalancerClass === 'function', `loadbalancerClass:${addressGroup.loadbalancerClass} invalid`);
|
|
return new loadbalancerClass(addressGroup);
|
|
};
|