Dubbo大波剖析——線程模型初探

導引

Dubbo默認的底層網絡通訊是使用Netty來做的,在服務提供方NettyServer使用兩級線程池,其中EventLoopGroup(boss)主要用來接受客戶端的鏈接請求,並把接受的請求分發給EventLoopGroup(worker)來處理,boss和worker線程組我們稱為IO線程。

如果服務提供方的邏輯能迅速完成,並且不會發起新的 IO 請求,則直接在 IO 線程上處理更快,因為這減少了線程池調度。

但如果處理邏輯較慢,或者需要發起新的 IO 請求,比如需要查詢數據庫,則必須派發到新線程池,否則 IO 線程阻塞,將導致不能接收其它請求。

Dubbo提供的線程模型

Dubbo大波剖析——線程模型初探

其中ThreadPool的spi實現有如下:

  • fixed 固定大小線程池,啟動時建立線程,不關閉,一直持有。(缺省)

  • cached 緩存線程池,空閒一分鐘自動刪除,需要時重建。

  • limited 可伸縮線程池,但池中的線程數只會增長不會收縮。只增長不收縮的目的是為了避免收縮時突然來了大流量引起的性能問題。

    三、結語

dubbo提供了常用的線程模型和線程池擴展各有利弊,如果您有定製化需要,可以按照spi規範進行定製。

本文分享網絡,原文地址:http://ifeve.com/dubbo-threadmodel/


Dubbo大波剖析——線程模型初探


分享到:


相關文章: