40高性能队列Disruptor

高性能有界内存队列
高性能原因

  • 内存分配更加合理,RingBuffer结构,数组初始化一次性创建提升缓存命中,对象循环利用,避免GC
  • 避免伪共享
  • 无锁算法
  • 支持批量消费,消费者可无锁方式消费多个消息

避免为共享

由于共享缓存行导致缓存无效的场景
举例说明:
两个变量long l1 = 1; long l2=2;存储在数组中, CPU1、CPU2缓存行都加载了l1、l2,CPU1修改l1,CPU2缓存行 会失效,即使CPU2不操作l1也会失效,造成伪共享。

避免缓存行失效,填充字节避免数据在一个缓存行
缺点:牺牲内存

无锁算法

总结

并发性能优化到极致,两个方向:

  • 无锁算法避免争用
  • 将CPU性能发挥到机制(填充方式避免伪共享就)