Disruptor多topic问题
看国外的很多介绍资料,以及官方资料,还有坛主翻译的关于disruptor资料都有一个图,就是将日志/序列化/等等各种event塞到了一个ringbuffer里边,我现在困惑的就是这点,一个ringbuffer是否应该放多个topic或者多个类型的event。
例如我现在的流程有两个:1 核心业务流程处理 (短小快速,并发量高) 2. 业务流程之后的日志处理
因为日志通常采用log4j等记录,同类型事件多线程是无意义的。为了记录日志不影响核心流程的处理速度,往往会把日志丢到另外一个异步环境处理,我以前用队列解耦就是这么干的,但是看了
这个图,你会发现里边有几种事件,里边也包括了日志event,这样做还能做到通过解耦来平衡环节压力吗?
我看了disruptor的processor风格,一个是workpool,就是均衡负载,多个handler同质化,同一个时间只会被一个handler处理,另外一个风格就是并发分支,同一个事件,所有的handler都有机会处理。
如果使用均衡负载,handler根据event类型走处理分支,日志event可能会吃掉所有的handler线程池资源,那就跟ringbuffer的目的背道而驰了,相当于没用,直接用线程池是一样的效果。
还是用不同的barrier?
我是不是有什么地方理解错了?还请各位理解disruptor的大侠给予指点^_^。
另外看这幅图:
这个又是多个disruptor了,呵呵,除了分布式造成了这种割裂以外,如果输入和输出/业务处理都在一台主机上,是否就会使用同一个disruptor了?呵呵。
disruptor解决的thread之间的数据共享,如果按照这种角度出发,程序的分布式与否不应该成为disruptor的个数的依据。
[该贴被kuaiyuelaogong于2012-03-26 15:31修改过]