40高性能队列Disruptor
高性能有界内存队列
高性能原因
- 内存分配更加合理,RingBuffer结构,数组初始化一次性创建提升缓存命中,对象循环利用,避免GC
- 避免伪共享
- 无锁算法
- 支持批量消费,消费者可无锁方式消费多个消息
避免为共享
由于共享缓存行导致缓存无效的场景
举例说明:
两个变量long l1 = 1; long l2=2;存储在数组中, CPU1、CPU2缓存行都加载了l1、l2,CPU1修改l1,CPU2缓存行 会失效,即使CPU2不操作l1也会失效,造成伪共享。
避免缓存行失效,填充字节避免数据在一个缓存行
缺点:牺牲内存
无锁算法
总结
并发性能优化到极致,两个方向:
- 无锁算法避免争用
- 将CPU性能发挥到机制(填充方式避免伪共享就)