Disruptor RingBuffer的缺点思考
前言
众所周知,Disruptor凭借无锁、cache line优化等优势,在生产消费组件上占据了重要的一席之位。过去只要提到生产消费的组件,我也认为Disruptor是首选,但是随着更加深入的理解和使用,对齐缺点也有了一个更加客观的认知。
不适合内存密集型任务
不适合内存密集型任务、适合CPU密集型:Ring buffer环形缓冲区slot内的数据在没有经历所有handler处理之前,内存是不会被释放的。如果处理流程较长,这些对象不被释放会给GC造成非常严重的压力。
架构上的抉择
例如数据迁移同步这个领域,同时涉及大量数据的流转以及数据的处理。架构上是否选择Disruptor取决于产品半身的侧重点:
- 侧重同步效率,不重视数据加工:这种情况下内存利用率的优先级更加高,数据结构本身可以涉及的非常紧凑,