brpc icon indicating copy to clipboard operation
brpc copied to clipboard

response延迟发送

Open my-vegetable-has-exploded opened this issue 3 years ago • 4 comments

想要把发送到某一个ip的不同端口的一些频繁发送的response合并在一起延时一定时间合并成一个response发送。 请教一下,closure->Run()如何延时保持并且合并到一个调用中呢?

你的场景是否可以考虑用streaming RPC

gydong avatar Aug 13 '21 08:08 gydong

感谢回复。 之前没有描述清楚,在一台机器有多个实例,这多个实例会想其它机器上面的多个实例频繁发送消息,我想要把一段时间内发往相同机器rpc请求合并起来在同一个时间发送以减小网络负担, image 像这个把a,b的请求合成c,然后c一段时间后发给d,再由d下发给下面的服务e,f,最后实现a向e发送rpc,b向f发送rpc。 原先a,b,e,f对rpc的处理涉及许多需要controller处理的地方,最后也需要调用closure->Done(),不知道要怎么处理这两个的合并。

可以用executionqueue解决你的场景?通过eq累积一定量的数据后,批量发送给E, F。

cdjingit avatar Sep 02 '21 09:09 cdjingit

感谢回复。 之前没有描述清楚,在一台机器有多个实例,这多个实例会想其它机器上面的多个实例频繁发送消息,我想要把一段时间内发往相同机器rpc请求合并起来在同一个时间发送以减小网络负担, image 像这个把a,b的请求合成c,然后c一段时间后发给d,再由d下发给下面的服务e,f,最后实现a向e发送rpc,b向f发送rpc。 原先a,b,e,f对rpc的处理涉及许多需要controller处理的地方,最后也需要调用closure->Done(),不知道要怎么处理这两个的合并。

按照你的描述,a和b应该是不同的进程,如果要合并a和b的请求,那么就涉及跨进程通信了,这样或许能减少网络负担,但是增加了跨进程的开销,很可能得不偿失

wwbmmm avatar May 13 '22 04:05 wwbmmm