Dubbo 配置相关说明

线程池类型

dubbo 提供了4中线程池类型

  • fixed

    固定大小线程池,启动时建立线程,不关闭,一直持有(缺省)

    • core-size

      默认值:200,可配置

    • max-size

      默认值:200,可配置

    • queue-size

      默认值:0,可配置

      • 等于 0 时:SynchronousQueue
      • 不等于 0 时:LinkedBlockingQueue
    • keep-alive

      默认值:0

  • cached

    缓存线程池,空闲一分钟自动删除,需要时重建

    • core-size

      默认值:0,可配置

    • max-size

      默认值:Integer.MAX_VALUE,可配置

    • queue-size

      默认值:0,可配置

      • 等于 0 时:SynchronousQueue
      • 不等于 0 时:LinkedBlockingQueue
    • keep-alive

      默认值:60 * 1000(ms),可配置

  • limited

    可伸缩线程池,但池中的线程数只会增长不会收缩。

    可能只增长不收缩的目的是为了避免收缩时突然来了大流量引起的性能问题

    • core-size

      默认值:0,可配置

    • max-size

      默认值:200,可配置

    • queue-size

      默认值:0,可配置

      • 等于 0 时:SynchronousQueue
      • 不等于 0 时:LinkedBlockingQueue
    • keep-alive

      默认值:Long.MAX_VALUE

  • eager

    优先创建Worker线程。在任务数量大于core-size但是小于max-size时,优先创建Worker来处理任务。当任务数量大于max-size时,将任务放入阻塞队列中

    • core-size

      默认值:0,可配置

    • max-size

      默认值:Integer.MAX_VALUE,可配置

    • queue-size

      默认值:1,可配置

      • 等于 0 时:SynchronousQueue
      • 不等于 0 时:LinkedBlockingQueue
    • keep-alive

      默认值:60 * 1000(ms),可配置

ThreadPoolExecutor参数 对应Dubbo URL参数 对应Dubbo配置项
core-size corethreads fixed:
dubbo.provider.threads
dubbo.protocol.threads
其他(没有在配置类中暴露出来):
dubbo.provider.corethreads
dubbo.protocol.corethreads(2.6.6及以前的版本ProtocolConfig中没有这个参数,2.7.0后的版本已经添加上去)
max-size threads dubbo.provider.threads
dubbo.protocol.threads
queue-size queues dubbo.provider.queues
dubbo.protocol.queues
keep-alive alive 没有在配置类中暴露出来
dubbo.provider.alive
dubbo.protocol.alive

队列类型

  • SynchronousQueue

    • 它的同步原理是,当生成者线程准备将元素放入这个队列时,如果这时没有消费者线程来,它就一直wait,等到有消费者线程来了,消费者线程把元素取走,他就可以返回true了。

    • 同样的,当消费者准备从这个队列取元素时,如果这时正好有生产者线程来时,他就把元素取走返回true,否则就一直在那等生产者线程来。

  • LinkedBlockingQueue

    • add:方法在添加元素的时候,若超出了度列的长度会直接抛出异常
    • put:若向队尾添加元素的时候发现队列已经满了会发生阻塞一直等待空间,以加入元素
    • offer:在添加元素时,如果发现队列已满无法添加的话,会直接返回false

其他函数:

  • poll:若队列为空,返回null

  • remove:若队列为空,抛出NoSuchElementException异常

  • take:若队列为空,发生阻塞,等待有元素

  • 本文作者: forever杨
  • 本文链接: https://blog.yl-online.top/posts/1432ba6.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。如果文章内容对你有用,请记录到你的笔记中。本博客站点随时会停止服务,请不要收藏、转载!