考虑这样一个场景,某个服务在处理请求时需要独占一个硬件设备,如果每次向该设备发起一个请求,会消耗一定量的资源,且该请求处理完成前不能向其发送新的请求;如果每次批量向该设备发起多个请求,随着这一批请求个数的增加,每个请求平均消耗的资源会不断降低,直到批量请求个数达到某个上限。
本项目实现了一个智能网关,接收客户端发来的单个请求,收集一定数量后批量发送给后端服务,以达到节约资源的目的。在收集请求的过程中,已经到达的请求不会被立即处理,越早收到的请求等待的时间也会越长。为了避免过多的等待,每个批次收到第一个请求后会启动计时,当到达超时时间后即使该批次请求数量未达到预期,也会立即开始执行。若此类请求本身耗时较长,额外等待的时间不会给用户带来不便,通过仔细调整批次的大小、批次内等待的时间等参数,便可以实现大大降低资源开销的目的。
GCC >= 13
Apache 2.0