Node.js与Express中如何实现API的Round Robin轮询调用功能
双目标轮询API实现方案
实现逻辑
利用Node.js模块单例特性,在模块顶层定义计数器,该变量会在多次接口请求之间持久保存状态,不会随每次请求重置。每次请求触发时计数器自增,通过对2取模的结果判断当前应返回的目标链接,即可实现交替轮询的效果。
完整代码实现
const asyncHandler = require('express-async-handler'); var link1 = "http://link1"; var link2 = "http://link2"; // 模块顶层声明计数器,跨请求保持状态 let requestCount = 0; exports.newApi = asyncHandler(async (req, res, next) => { requestCount++; // 奇数请求返回link1,偶数请求返回link2 const data = requestCount % 2 === 1 ? link1 : link2; // 此处可添加调用对应链接获取业务数据的逻辑 res.status(200).json({success: true, data}); })
高并发/多部署场景优化
如果服务存在高并发请求,或者是多实例分布式部署,内存计数会出现轮询不准的问题,可按需调整:
- 采用Redis等共享存储持久化计数器,保证多实例间计数逻辑统一
- 计数器更新使用原子操作接口,避免并发请求下的计数冲突
内容的提问来源于stack exchange,提问作者Qasim
相关产品推荐
相关产品推荐

