UNPKG

sdg-rpc

Version:

pomelo ts rpc

82 lines 7.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const crc_1 = tslib_1.__importDefault(require("crc")); const consistentHash_1 = require("../util/consistentHash"); exports.default = { rr: () => '', wrr: () => '', la: (client, serverType) => { let servers = client.station.serversMap[serverType]; if (!servers || !servers.length) throw 'rpc servers not exist with serverType: ' + serverType; const actives = []; if (!client.laParam) client.laParam = {}; if (client.laParam[serverType]) { servers.map(sid => { let count = client.laParam[serverType][sid]; if (!count) { client.laParam[serverType][sid] = count = 0; } actives.push(count); }); } else { client.laParam[serverType] = {}; servers.map(sid => { client.laParam[serverType][sid] = 0; actives.push(0); }); } let rs = []; let minInvoke = Number.MAX_VALUE; for (let k = 0; k < actives.length; k++) { if (actives[k] < minInvoke) { minInvoke = actives[k]; rs = []; rs.push(servers[k]); } else if (actives[k] === minInvoke) { rs.push(servers[k]); } } const index = Math.floor(Math.random() * rs.length); const serverId = rs[index]; client.laParam[serverType][serverId] += 1; return serverId; }, ch: (client, serverType, msg) => { let servers = client.station.serversMap[serverType]; if (!servers || !servers.length) throw 'rpc servers not exist with serverType: ' + serverType; let con; if (!client.chParam) client.chParam = {}; if (client.chParam[serverType]) { con = client.chParam[serverType].consistentHash; } else { // @ts-ignore client.opts.station = client.station; con = new consistentHash_1.ConsistentHash(servers.map(id => client.station.servers[id]), client.opts); } // @ts-ignore let hashFieldIndex = client.opts.hashFieldIndex; let field = msg.args[hashFieldIndex] || JSON.stringify(msg); client.chParam[serverType] = { consistentHash: con }; return con.getNode(field).id; }, rd: () => '', df: (session, msg, context) => { const list = context.getServersByType(msg.serverType); if (!list || !list.length) throw 'can not find server info for type:' + msg.serverType; const uid = session ? (session.uid || '') : ''; const index = Math.abs(crc_1.default.crc32(uid.toString())) % list.length; return list[index].id; } }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9yb3V0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQXNCO0FBSXRCLDJEQUF3RDtBQUV4RCxrQkFBZTtJQUNiLEVBQUUsRUFBRSxHQUFXLEVBQUUsQ0FBQyxFQUFFO0lBQ3BCLEdBQUcsRUFBRSxHQUFXLEVBQUUsQ0FBQyxFQUFFO0lBQ3JCLEVBQUUsRUFBRSxDQUFDLE1BQW9DLEVBQUUsVUFBa0IsRUFBVSxFQUFFO1FBQ3ZFLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUFFLE1BQU0seUNBQXlDLEdBQUcsVUFBVSxDQUFDO1FBRTlGLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFBRSxNQUFNLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUV6QyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEIsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDVixNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7aUJBQzdDO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUE7U0FDSDthQUFNO1lBQ0wsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENB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