大数据量传递PIPELINE设计

多路处理程序中,数据处理需要分到不同的任务中进行,有四种模式,一对一的情况,一对多的情况,多对多的情况,多对一的情况。比如网络通讯模块设计有多个任务,业务模块也设计多个任务,从网络过来的数据从任何SOCKET都可以进入的不同的SOCKET TASK中,数据要发给不同的业务模块,一个SOCKET的数据要发给不同的业务模块,一个SOCKET TASK有多个SOCKET处理,这就是典型的多对多的情况。

大数据处理的过程中,这是常有的使用场景。通过设计PIPELINE,将数据的对应关系单独处理。可以进行分解和合并。通过PIPELINE的FIFO设计,可以对数据有一定的缓冲作用,部分消减不同数据流量的输入和输出处理能力的不匹配。

其中有个极端的场景,FIFO的缓冲能力也不行的情况,如数据进行分解,分解的数据由于后级处理慢,进入不到FIFO中,这时其他的数据要进行处理,当前数据是否需要保存,还是进行丢弃,方便其他数据进行处理。不处理会造成数据丢失,或者是任务被阻塞。简单的做法就是丢弃,返回此数据处理慢的消息给发送端,由发送端进行重发。需要CLIENT的相应处理,可采用网络震荡的方式简化CLIENT的设计,就是回发再回发。

猜你喜欢

转载自blog.csdn.net/DQWKLC/article/details/123163043