【从0到1设计一个网关】性能优化---使用Disruptor提供缓冲区

文章目录

  • 什么是缓冲区队列
  • Disruptor高性能的原因
  • Disruptor实战

注:学习这篇文章之前推荐先对Disruptor的使用有了解,否则我的代码中即使有非常详细的注释你也并不能理解这些注释的作用,以及为什么我要需要这样子编写代码。
同时,这将会是网关系列最后一篇文章,由于文章写的比较赶,所以很多细节并没有提到,我会在后续有空时对文章进行进一步的修改。
确保大家都能理解项目的意义

什么是缓冲区队列

JDK中提供的一些队列,他们之间包含了有锁的实现,也包含了无锁的实现,这意味着在并发情况下,如果是不支持线程安全的队列,则会出现线程不安全、线程覆盖、数据丢失等线程安全问题。

所以我们需要使用线程安全的队列来保证线程安全,如下是JDK中提供的线程安全的队列。

但是他们之间有一些问题,比如有锁队列性能稍差但是更安全,他是有界的,无锁队列性能好但是无界,无界意味着容易出现OOM等问题。所以我们肯定首先排除使用无界队列。

当然并不是说无界队列就没有用,只是在某些场景下我们需要剔除他们,不使用他们。

Queue Type Data Structure Key Technique Has Lock Bounded Lock Type
Arra

你可能感兴趣的:(java,gateway,性能优化)