每个ComputeCallellable线程对应一个NettyWorkerClientRequestProcessor,
每个NettyWorkerClientRequestProcessor对应一个SendMessageCache,
每个SendMessageCache内部待发送的消息按照worker进行区分,到同一个worker的消息超过阈值就开始发送,
每个NettyWorkerClientRequestProcessor对应一个SendMessageCache,
每个SendMessageCache内部待发送的消息按照worker进行区分,到同一个worker的消息超过阈值就开始发送,
即1个ComputeCallellable<->1个NettyWorkerClientRequestProcessor<->1个SendMessageCache<->多个按照worker区分的消息
这样做的好处是每个分区的消息是并行发送,且互补干扰,坏处是消息无法合并优化。
但是在最后的实际发送对象是NettyWorkerClient,
这个每个BspServiceWorker都只有一个,所有的NettyWorkerClientRequestProcessor公用这一个发送器。