Zeromq 1对1异步Req-Rep不可靠模式:高请求量场景适配方案咨询
适配场景的请求处理模式推荐
问题场景
现有1客户端对1服务器模型,客户端每秒发送100个请求(req/s),但服务器仅能处理50 req/s。客户端容错性强,允许丢弃部分请求,仅需处理最新请求。
请求处理时间线示例
时间线('<' 表示服务器正在处理最新请求的过程): 客户端: 1 -- 2 -- 3 -- 4 -- 5 -- 6 -- 7 -- 8 -- 9 -- 10 服务器: <<<<<<<<<< 1 <<<<<<< 3 <<<<<<<<<<<<<< 5 <<<<<<< (正在处理8)
推荐模式及实现思路
这种场景最适合采用最新请求优先(Latest Request First)模式,也可称为请求覆盖/旧请求丢弃模式,具体实现逻辑如下:
- 服务器端仅维护一个单请求缓冲区(而非传统的多请求队列):每当新请求到达时,直接覆盖缓冲区中尚未处理的旧请求。服务器每次只取出当前缓冲区里的最新请求进行处理,彻底忽略之前积压的旧请求,完美匹配“仅处理最新请求、允许丢弃旧请求”的需求。
- 客户端无需调整原有请求发送逻辑:因为本身容错性强,旧请求被服务器丢弃不会影响业务目标。
该模式的核心是主动放弃无价值的旧请求,聚焦处理最新请求,非常适配实时性要求高、旧数据无留存意义的场景,比如实时监控数据上报、客户端操作同步这类场景。
内容的提问来源于stack exchange,提问作者Eric Qiang
相关产品推荐
相关产品推荐

