分析網状の(a)のbuddo源アセンブリを-transport

ダボ2.5.10バージョン、まだ3.10.5バージョンを使用してネッティーネッティー、我々は次のコードから見ることができ、SPIのデフォルトは、むしろ「netty4」よりも、「網状」です。

パッケージcom.alibaba.dubbo.remoting。

輸入com.alibaba.dubbo.common.Constants。
輸入com.alibaba.dubbo.common.URL。
輸入com.alibaba.dubbo.common.extension.Adaptive。
輸入com.alibaba.dubbo.common.extension.SPI。

輸入javax.sound.midi.Receiver。

/ ** 
 *トランスポーター。(SPI、シングルトン、THREADSAFE)
 * <P> 
 * <a href="のhttp://en.wikipedia.org/wiki/Transport_Layer ">トランスポート層</a>の
 * <のhref =」のhttp:// EN。 wikipedia.org/wiki/Client%E2%80%93server_model 「>クライアント/サーバ</a>に
 * 
 * @seeのcom.alibaba.dubbo.remoting。
 
@SPI(「網状」パブリック インターフェーストランスポーター{

次のようにNettyClientかどうか、またはのChannelFactoryが同じ方法です作成するには、チャンネルNettyServerファクトリクラスを作成し、コードは次のとおりです。

// のChannelFactoryの閉鎖を回避するために、静的を使用して、DirectMemoryリークを持っている
 //  https://issues.jboss.org/browse/NETTY-424 
プライベート 静的 最終のChannelFactoryのChannelFactory = 新しいNioClientSocketChannelFactory(
    Executors.newCachedThreadPool( NamedThreadFactory( "NettyClientBoss"、))、
    Executors.newCachedThreadPool( NamedThreadFactory( "NettyClientWorker"、))、
    Constants.DEFAULT_IO_THREADS)。

名前が示すように、のChannelFactoryクラスは、それを行うために使用されるチャンネル、およびチャンネルを作成するために使用されていますか?一つの文にまとめ:すべてのI / O操作は、チャンネルによって実現されています。ダボで見ることができる上記のコードは2つのI / Oスレッドプール、それぞれボスとWorkderスレッドプールのスレッドプールを作成したことから、この2つのスレッド・プールが初期化されている「ボーダレス」だけでキャッシュされたスレッド・プールに開始は、「寛容」であるが、実際にはデフォルトの最大スレッドボスが一つだけスレッドを可能に、スレッドのスレッドプールの最大数、すなわち、Constants.DEFAULT_IO_THREADSに指定されたワーク32と+1 CPUコアの数の両方を最小を取ります値。コードは以下の通りであります:

プライベート 静的 最終 int型 DEFAULT_BOSS_COUNT = 1 ;
公共NioClientSocketChannelFactory(
        エグゼキュータbossExecutor、執行workerExecutor、INT workerCount){
     この(bossExecutor、workerExecutor、DEFAULT_BOSS_COUNT、workerCount)。
}
パブリック 静的 最終 int型 DEFAULT_IO_THREADS = Math.min(Runtime.getRuntime()availableProcessors()+ 1、32)。

 

おすすめ

転載: www.cnblogs.com/frankyou/p/11416755.html