生产者消费者模型在大数据量处理中的应用

生产者消费者模型是经典的进程/线程协同处理模型,在现实中也有很大量的应用。而在C/SB/S模式的客户端和服务器交互的应用中却少见。其实在这种应用中如果存在大数据量的处理,使用这种模型也能带来较大的性能提升。

生产者消费者模型原型如下:

 

 

生产者消费者原型

 

 

其实是一个很简单的模型,生产者不停的往队列里生产Item,如果队列满了则停止生产,直到有空位,消费者不停地从队列里取走Item,队列为空则等待,这样直到整个任务处理完成,队列管理组件负责队列的管理。整个处理过程中生产者和消费者可以并行处理各自的工作任务。

         对于C/SB/S模式中的大数据量的处理,通常都是通过分批处理来完成,通常是采用串行处理方式,客户端循环分批发送请求,如果数据还需要分别在服务端和客户端做一些处理时,则客户端和服务端都需要等待,造成资源不能充分利用,而如果采用生产者消费者模式,客户端和服务端可以并行处理,即使是在网络传输时客户端和服务端都可以作各自的处理,通过这种模式可以较大的提高整个任务的处理性能,通常实际应用中的C/SB/S)模式的生产者消费者模型图如下:

 

C/S(B/S)多级生产者消费者模型

 

 

总的来说客户端是消费者,服务端是生产者,客户端可以采用轮循的模式向服务端请求消费,服务端有一个客户端消费者服务充当客户端消费者代理的作用,向服务端生产者队列中取数据。而对于客户端的轮循组件来说,即充当生产者也充当消费者,对服务端来说是消费者,对客户端的处理来说又是生产者。这样就组成了一个多级生产者消费者模式,尽量使各部分能够并行处理,从而提高整体任务的处理性能,但这个过程中也需要考虑管理成本,对于一些本身处理不是很耗时的操作采用这个模型可能并不会带来明显效果,而对于一些相对复杂和耗时的操作,采用这个模型将带来明显的效果,毕竟客户端、网络和服务端都可以并行地得到充分的利用。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值