## Netty * [1.ä½ äºè§£è¿åªäºIO模åï¼](#1ä½ äºè§£è¿åªäºio模å) * [2.ä»ä¹æ¯Reactor模åï¼Reactorç3ç§çæ¬é½ç¥éåï¼](#2ä»ä¹æ¯reactor模åreactorç3ç§çæ¬é½ç¥éå) * [3.äºè§£è¿ç²å æå åï¼ä¸ºä»ä¹ä¼åºç°ç²å æå ï¼æä¹å¤çç²å æå ï¼](#3äºè§£è¿ç²å æå å为ä»ä¹ä¼åºç°ç²å æå æä¹å¤çç²å æå ) * [4.UDPåè®®ä¼æç²å æå çé®é¢åï¼ä¸ºä»ä¹ï¼](#4udpåè®®ä¼æç²å æå çé®é¢å为ä»ä¹) * [5.Netty æ¯ä»ä¹ï¼](#5netty-æ¯ä»ä¹) * [6.为ä»ä¹è¦ç¨ Nettyï¼](#6为ä»ä¹è¦ç¨-netty) * [7.Netty çåºç¨åºæ¯äºè§£ä¹ï¼](#7netty-çåºç¨åºæ¯äºè§£ä¹) * [8.Netty çé¶æ·è´äºè§£ä¹ï¼](#8netty-çé¶æ·è´äºè§£ä¹) * [9.Netty çå¿è·³æºå¶äºè§£ä¹ï¼](#9netty-çå¿è·³æºå¶äºè§£ä¹) * [10.Netty 䏿åªäºéè¦ç»ä»¶ï¼](#10netty-䏿åªäºéè¦ç»ä»¶) * [11.Netty åéæ¶æ¯æå ç§æ¹å¼ï¼](#11netty-åéæ¶æ¯æå ç§æ¹å¼) * [12.Netty æ¯æåªäºå¿è·³ç±»å设置ï¼](#12netty-æ¯æåªäºå¿è·³ç±»å设置) * [13.说说Nettyçæ§è¡æµç¨ï¼](#13说说nettyçæ§è¡æµç¨) * [14.Netty髿§è½ä½ç°å¨åªäºæ¹é¢ï¼](#14netty髿§è½ä½ç°å¨åªäºæ¹é¢) * [åèèµæ](#åèèµæ) #### 1.ä½ äºè§£è¿åªäºIO模åï¼ è¯¦è§ï¼https://www.cnblogs.com/sharing-java/p/10791802.html #### 2.ä»ä¹æ¯Reactor模åï¼Reactorç3ç§çæ¬é½ç¥éåï¼ Reactor模å¼ç©¶ç«æ¯ä¸ªä»ä¹ä¸è¥¿å¢ï¼è¿è¦ä»äºä»¶é©±å¨çå¼åæ¹å¼è¯´èµ·ãæä»¬ç¥éï¼å¯¹äºåºç¨æå¡å¨ï¼ä¸ä¸ªä¸»è¦è§å¾å°±æ¯ï¼CPUçå¤çé度æ¯è¦è¿è¿å¿«äºIOé度çï¼å¦æCPU为äºIOæä½ï¼ä¾å¦ä»Socket读å䏿®µæ°æ®ï¼èé»å¡æ¾ç¶æ¯ä¸åç®çã好ä¸ç¹çæ¹æ³æ¯å为å¤è¿ç¨æè 线ç¨å»è¿è¡å¤çï¼ä½æ¯è¿æ ·ä¼å¸¦æ¥ä¸äºè¿ç¨åæ¢çå¼éï¼è¯æ³ä¸ä¸ªè¿ç¨ä¸ä¸ªæ°æ®è¯»äº500msï¼æé´è¿ç¨åæ¢å°å®3次ï¼ä½æ¯CPUå´ä»ä¹é½ä¸è½å¹²ï¼å°±è¿ä¹åæ¢èµ°äºï¼æ¯ä¸æ¯ä¹ä¸åç®ï¼ è¿æ¶å 驱们æ¾å°äºäºä»¶é©±å¨ï¼æè å«åè°çæ¹å¼ï¼æ¥å®æè¿ä»¶äºæ ãè¿ç§æ¹å¼å°±æ¯ï¼åºç¨ä¸å¡åä¸ä¸ªä¸é´äººæ³¨åä¸ä¸ªåè°ï¼event handlerï¼ï¼å½IO就绪åï¼å°±è¿ä¸ªä¸é´äººäº§çä¸ä¸ªäºä»¶ï¼å¹¶éç¥æ¤handlerè¿è¡å¤çãè¿ç§åè°çæ¹å¼ï¼ä¹ä½ç°äºâ好è±åååâï¼Hollywood principleï¼-âDon't call us, we'll call youâï¼å¨æä»¬çæçIoCä¸ä¹æç¨å°ãçæ¥è½¯ä»¶å¼åçæ¯äºéçï¼ å¥½äºï¼æä»¬ç°å¨æ¥çReactor模å¼ãå¨åé¢äºä»¶é©±å¨çä¾åéæä¸ªé®é¢ï¼æä»¬å¦ä½ç¥éIO就绪è¿ä¸ªäºä»¶ï¼è°æ¥å å½è¿ä¸ªä¸é´äººï¼Reactor模å¼ççæ¡æ¯ï¼ç±ä¸ä¸ªä¸æçå¾ å循ç¯çåç¬è¿ç¨ï¼çº¿ç¨ï¼æ¥åè¿ä»¶äºï¼å®æ¥åææhandlerçæ³¨åï¼å¹¶è´è´£å æä½ç³»ç»æ¥è¯¢IOæ¯å¦å°±ç»ªï¼å¨å°±ç»ªåå°±è°ç¨æå®handlerè¿è¡å¤çï¼è¿ä¸ªè§è²çååå°±å«åReactorã Reactorç3ç§çæ¬ï¼åçº¿ç¨æ¨¡å¼ãå¤çº¿ç¨æ¨¡å¼ã主ä»å¤çº¿ç¨æ¨¡å¼ #### 3.äºè§£è¿ç²å æå åï¼ä¸ºä»ä¹ä¼åºç°ç²å æå ï¼æä¹å¤çç²å æå ï¼ ç²å ç主è¦åå ï¼åéæ¹åå ¥æ°æ®<奿¥åç¼å²åºå¤§å°ï¼æ¥æ¶æ¹è¯»å奿¥åç¼å²åºæ°æ®ä¸å¤åæ¶ã æå ç主è¦åå ï¼åéæ¹åå ¥æ°æ®>奿¥åç¼å²åºå¤§å°ï¼åéæ¹åéçæ°æ®å¤§äºåè®®çMTUï¼æå¤§ä¼ è¾åå ï¼ï¼ä¸å¾å·²å¿ é¡»æå ã å¦ä½å¤çï¼1ãæ¶æ¯é¿åº¦åºå®ï¼2ãæ¶æ¯ä¹é´ç¨åé符åéï¼3ã卿¶æ¯å¤´ä¿çä¸ä¸ªå段ï¼ç¨äºæè¿°æ¶æ¯çé¿åº¦ã #### 4.UDPåè®®ä¼æç²å æå çé®é¢åï¼ä¸ºä»ä¹ï¼ UDPä¸ä¼æè¿ä¸ªé®é¢ã å 为TCPæ¯âæ°æ®æµâåè®®ï¼UDPæ¯âæ°æ®æ¥âåè®®ã UDPåè®®çæ°æ®å ä¹é´æ¯æ²¡æèç³»ï¼è䏿æç¡®è¾¹ççã #### 5.Netty æ¯ä»ä¹ï¼ Netty æ¯ä¸ä¸ª åºäº NIO ç client-server(客æ·ç«¯æå¡å¨)æ¡æ¶ï¼ä½¿ç¨å®å¯ä»¥å¿«éç®åå°å¼åç½ç»åºç¨ç¨åºã 宿大å°ç®åå¹¶ä¼åäº TCP å UDP 奿¥åæå¡å¨çç½ç»ç¼ç¨,并䏿§è½ä»¥åå®å ¨æ§çå¾å¤æ¹é¢çè³é½è¦æ´å¥½ã æ¯æå¤ç§åè®® å¦ FTPï¼SMTPï¼HTTP 以ååç§äºè¿å¶ååºäºææ¬çä¼ ç»åè®®ã ç¨å®æ¹çæ»ç»å°±æ¯ï¼Netty æåå°æ¾å°äºä¸ç§å¨ä¸å¦¥åå¯ç»´æ¤æ§åæ§è½çæ åµä¸å®ç°æäºå¼åï¼æ§è½ï¼ç¨³å®æ§åçµæ´»æ§çæ¹æ³ã #### 6.为ä»ä¹è¦ç¨ Nettyï¼ ç»ä¸ç APIï¼æ¯æå¤ç§ä¼ è¾ç±»åï¼é»å¡åéé»å¡çã ç®åè强大ççº¿ç¨æ¨¡åã èªå¸¦ç¼è§£ç å¨è§£å³ TCP ç²å /æå é®é¢ã èªå¸¦åç§åè®®æ ã çæ£çæ è¿æ¥æ°æ®å 奿¥åæ¯æã æ¯ç´æ¥ä½¿ç¨ Java æ ¸å¿ API ææ´é«çååéãæ´ä½çå»¶è¿ãæ´ä½çèµæºæ¶èåæ´å°çå åå¤å¶ã å®å ¨æ§ä¸éï¼æå®æ´ç SSL/TLS 以å StartTLS æ¯æã ç¤¾åºæ´»è· æç稳å®ï¼ç»åäºå¤§å项ç®ç使ç¨åèéªï¼èä¸å¾å¤å¼æºé¡¹ç®é½ä½¿ç¨å°äº Nettyï¼ æ¯å¦æä»¬ç»å¸¸æ¥è§¦ç DubboãRocketMQ ççã #### 7.Netty çåºç¨åºæ¯äºè§£ä¹ï¼ Netty 主è¦ç¨æ¥åç½ç»éä¿¡ : ä½ä¸º RPC æ¡æ¶çç½ç»éä¿¡å·¥å · ï¼æä»¬å¨åå¸å¼ç³»ç»ä¸ï¼ä¸åæå¡èç¹ä¹é´ç»å¸¸éè¦ç¸äºè°ç¨ï¼è¿ä¸ªæ¶åå°±éè¦ RPC æ¡æ¶äºãä¸åæå¡èç¹ä¹é´çéä¿¡æ¯å¦ä½åçå¢ï¼å¯ä»¥ä½¿ç¨ Netty æ¥åãæ¯å¦æè°ç¨å¦å¤ä¸ä¸ªèç¹çæ¹æ³çè¯ï¼è³å°æ¯è¦è®©å¯¹æ¹ç¥éæè°ç¨çæ¯åªä¸ªç±»ä¸çåªä¸ªæ¹æ³ä»¥åç¸å ³åæ°å§ï¼ å®ç°ä¸ä¸ªèªå·±ç HTTP æå¡å¨ ï¼éè¿ Netty æä»¬å¯ä»¥èªå·±å®ç°ä¸ä¸ªç®åç HTTP æå¡å¨ï¼è¿ä¸ªå¤§å®¶åºè¯¥ä¸éçãè¯´å° HTTP æå¡å¨çè¯ï¼ä½ä¸º Java å端å¼åï¼æä»¬ä¸è¬ä½¿ç¨ Tomcat æ¯è¾å¤ãä¸ä¸ªæåºæ¬ç HTTP æå¡å¨å¯è¦ä»¥å¤ç常è§ç HTTP Method ç请æ±ï¼æ¯å¦ POST 请æ±ãGET 请æ±ççã å®ç°ä¸ä¸ªå³æ¶éè®¯ç³»ç» ï¼ä½¿ç¨ Netty æä»¬å¯ä»¥å®ç°ä¸ä¸ªå¯ä»¥è天类似微信ç峿¶é讯系ç»ï¼è¿æ¹é¢ç弿ºé¡¹ç®è¿è®å¤çï¼å¯ä»¥èªè¡å» Github æ¾ä¸æ¾ã å®ç°æ¶æ¯æ¨éç³»ç» ï¼å¸é¢ä¸æå¾å¤æ¶æ¯æ¨éç³»ç»é½æ¯åºäº Netty æ¥åçã #### 8.Netty çé¶æ·è´äºè§£ä¹ï¼ ç»´åºç¾ç§æ¯è¿æ ·ä»ç»é¶æ·è´çï¼âé¶å¤å¶ï¼è±è¯ï¼Zero-copyï¼ä¹è¯é¶æ·è´ï¼ææ¯æ¯æè®¡ç®æºæ§è¡æä½æ¶ï¼CPU ä¸éè¦å å°æ°æ®ä»æå¤å åå¤å¶å°å¦ä¸ä¸ªç¹å®åºåãè¿ç§ææ¯é常ç¨äºéè¿ç½ç»ä¼ è¾æä»¶æ¶èç CPU 卿åå å带宽ã å¨ OS å±é¢ä¸ç Zero-copy é常æé¿å å¨ ç¨æ·æ(User-space) ä¸ å æ ¸æ(Kernel-space) ä¹é´æ¥åæ·è´æ°æ®ãèå¨ Netty å±é¢ ï¼é¶æ·è´ä¸»è¦ä½ç°å¨å¯¹äºæ°æ®æä½çä¼åã Netty ä¸çé¶æ·è´ä½ç°å¨ä»¥ä¸å 个æ¹é¢ï¼ ä½¿ç¨ Netty æä¾ç CompositeByteBuf ç±», å¯ä»¥å°å¤ä¸ªByteBuf å并为ä¸ä¸ªé»è¾ä¸ç ByteBuf, é¿å äºå个 ByteBuf ä¹é´çæ·è´ã ByteBuf æ¯æ slice æä½, å æ¤å¯ä»¥å° ByteBuf å解为å¤ä¸ªå ±äº«åä¸ä¸ªåå¨åºåç ByteBuf, é¿å äºå åçæ·è´ã éè¿ FileRegion å è£ çFileChannel.tranferTo å®ç°æä»¶ä¼ è¾, å¯ä»¥ç´æ¥å°æä»¶ç¼å²åºçæ°æ®åéå°ç®æ Channel, é¿å äºä¼ ç»éè¿å¾ªç¯ write æ¹å¼å¯¼è´çå åæ·è´é®é¢ã #### 9.Netty çå¿è·³æºå¶äºè§£ä¹ï¼ å¨ TCP ä¿æé¿è¿æ¥çè¿ç¨ä¸ï¼å¯è½ä¼åºç°æç½çç½ç»å¼å¸¸åºç°ï¼å¼å¸¸åççæ¶åï¼ client ä¸ server ä¹é´å¦ææ²¡æäº¤äºçè¯ï¼å®ä»¬æ¯æ æ³åç°å¯¹æ¹å·²ç»æçº¿çã为äºè§£å³è¿ä¸ªé®é¢, æä»¬å°±éè¦å¼å ¥ å¿è·³æºå¶ã å¿è·³æºå¶çå·¥ä½åçæ¯: å¨ client ä¸ server ä¹é´å¨ä¸å®æ¶é´å æ²¡ææ°æ®äº¤äºæ¶, å³å¤äº idle ç¶ææ¶, 客æ·ç«¯ææå¡å¨å°±ä¼åéä¸ä¸ªç¹æ®çæ°æ®å ç»å¯¹æ¹, 彿¥æ¶æ¹æ¶å°è¿ä¸ªæ°æ®æ¥æå, ä¹ç«å³åéä¸ä¸ªç¹æ®çæ°æ®æ¥æ, ååºåéæ¹, æ¤å³ä¸ä¸ª PING-PONG 交äºãæä»¥, 彿ä¸ç«¯æ¶å°å¿è·³æ¶æ¯å, å°±ç¥éäºå¯¹æ¹ä»ç¶å¨çº¿, è¿å°±ç¡®ä¿ TCP è¿æ¥çæææ§. TCP å®é ä¸èªå¸¦çå°±æé¿è¿æ¥éé¡¹ï¼æ¬èº«æ¯ä¹æå¿è·³å æºå¶ï¼ä¹å°±æ¯ TCP çé项ï¼SO_KEEPALIVEã使¯ï¼TCP åè®®å±é¢çé¿è¿æ¥çµæ´»æ§ä¸å¤ãæä»¥ï¼ä¸è¬æ åµä¸æä»¬é½æ¯å¨åºç¨å±åè®®ä¸å®ç°èªå®ä¹å¿è·³æºå¶çï¼ä¹å°±æ¯å¨ Netty å±é¢éè¿ç¼ç å®ç°ãéè¿ Netty å®ç°å¿è·³æºå¶çè¯ï¼æ ¸å¿ç±»æ¯ IdleStateHandler ã #### 10.Netty 䏿åªäºéè¦ç»ä»¶ï¼ Channelï¼Netty ç½ç»æä½æ½è±¡ç±»ï¼å®é¤äºå æ¬åºæ¬ç I/O æä½ï¼å¦ bindãconnectãreadãwrite çã EventLoopï¼ä¸»è¦æ¯é å Channel å¤ç I/O æä½ï¼ç¨æ¥å¤çè¿æ¥ççå½å¨æä¸æåççäºæ ã ChannelFutureï¼Netty æ¡æ¶ä¸ææç I/O æä½é½ä¸ºå¼æ¥çï¼å æ¤æä»¬éè¦ ChannelFuture ç addListener()注åä¸ä¸ª ChannelFutureListener çå¬äºä»¶ï¼å½æä½æ§è¡æåæè 失败æ¶ï¼çå¬å°±ä¼èªå¨è§¦åè¿åç»æã ChannelHandlerï¼å å½äºææå¤çå ¥ç«ååºç«æ°æ®çé»è¾å®¹å¨ãChannelHandler 主è¦ç¨æ¥å¤çåç§äºä»¶ï¼è¿éçäºä»¶å¾å¹¿æ³ï¼æ¯å¦å¯ä»¥æ¯è¿æ¥ãæ°æ®æ¥æ¶ãå¼å¸¸ãæ°æ®è½¬æ¢çã ChannelPipelineï¼ä¸º ChannelHandler 龿ä¾äºå®¹å¨ï¼å½ channel å建æ¶ï¼å°±ä¼è¢«èªå¨åé å°å®ä¸å±ç ChannelPipelineï¼è¿ä¸ªå ³èæ¯æ°¸ä¹ æ§çã #### 11.Netty åéæ¶æ¯æå ç§æ¹å¼ï¼ Netty æä¸¤ç§åéæ¶æ¯çæ¹å¼ï¼ ç´æ¥åå ¥ Channel ä¸ï¼æ¶æ¯ä» ChannelPipeline å½ä¸å°¾é¨å¼å§ç§»å¨ï¼ åå ¥å ChannelHandler ç»å®ç ChannelHandlerContext ä¸ï¼æ¶æ¯ä» ChannelPipeline ä¸çä¸ä¸ä¸ª ChannelHandler ä¸ç§»å¨ã #### 12.Netty æ¯æåªäºå¿è·³ç±»åè®¾ç½®ï¼ readerIdleTimeï¼ä¸ºè¯»è¶ æ¶æ¶é´ï¼å³æµè¯ç«¯ä¸å®æ¶é´å æªæ¥åå°è¢«æµè¯ç«¯æ¶æ¯ï¼ã writerIdleTimeï¼ä¸ºåè¶ æ¶æ¶é´ï¼å³æµè¯ç«¯ä¸å®æ¶é´å å被æµè¯ç«¯åéæ¶æ¯ï¼ã allIdleTimeï¼ææç±»åçè¶ æ¶æ¶é´ã #### 13.说说Nettyçæ§è¡æµç¨ï¼ å建ServerBootStrapå®ä¾ 设置并ç»å®Reactorçº¿ç¨æ± ï¼EventLoopGroupï¼EventLoopå°±æ¯å¤çæææ³¨åå°æ¬çº¿ç¨çSelectorä¸é¢çChannel 设置并ç»å®æå¡ç«¯çchannel å建å¤çç½ç»äºä»¶çChannelPipelineåhandlerï¼ç½ç»æ¶é´ä»¥æµçå½¢å¼å¨å ¶ä¸æµè½¬ï¼handler宿夿°çåè½å®å¶ï¼æ¯å¦ç¼è§£ç SSlå®å ¨è®¤è¯ ç»å®å¹¶å¯å¨çå¬ç«¯å£ å½è½®è®å°åå¤å°±ç»ªçchannelåï¼ç±Reactor线ç¨ï¼NioEventLoopæ§è¡piplineä¸çæ¹æ³ï¼æç»è°åº¦å¹¶æ§è¡channelHandler #### 14.Netty髿§è½ä½ç°å¨åªäºæ¹é¢ï¼ 1ï¼ä¼ è¾ï¼IO模åå¨å¾å¤§ç¨åº¦ä¸å³å®äºæ¡æ¶çæ§è½ï¼ç¸æ¯äºbioï¼netty建议éç¨å¼æ¥é信模å¼ï¼å 为nioä¸ä¸ªçº¿ç¨å¯ä»¥å¹¶åå¤çN个客æ·ç«¯è¿æ¥å读åæä½ï¼è¿ä»æ ¹æ¬ä¸è§£å³äºä¼ ç»åæ¥é»å¡IOä¸è¿æ¥ä¸çº¿ç¨æ¨¡åï¼æ¶æçæ§è½ãå¼¹æ§ä¼¸ç¼©è½ååå¯é æ§é½å¾å°äºæå¤§çæåãæ£å¦ä»£ç ä¸æç¤ºï¼ä½¿ç¨çæ¯NioEventLoopGroupåNioSocketChannelæ¥æåä¼ è¾æçã 2ï¼åè®®ï¼éç¨ä»ä¹æ ·çéä¿¡åè®®ï¼å¯¹ç³»ç»çæ§è½æå ¶éè¦ï¼nettyé»è®¤æä¾äºå¯¹Google Protobufçæ¯æï¼ä¹å¯ä»¥éè¿æ©å±Nettyçç¼è§£ç æ¥å£ï¼ç¨æ·å¯ä»¥å®ç°å ¶å®ç髿§è½åºååæ¡æ¶ã 3ï¼çº¿ç¨ï¼netty使ç¨äºReactorçº¿ç¨æ¨¡åï¼ä½Reactor模åä¸åï¼å¯¹æ§è½çå½±åä¹é常大ï¼ä¸é¢ä»ç»å¸¸ç¨çReactorçº¿ç¨æ¨¡åæä¸ç§ï¼åå«å¦ä¸ï¼ Reactoråçº¿ç¨æ¨¡åï¼åçº¿ç¨æ¨¡åç线ç¨å³ä½ä¸ºNIOæå¡ç«¯æ¥æ¶å®¢æ·ç«¯çTCPè¿æ¥ï¼åä½ä¸ºNIO客æ·ç«¯åæå¡ç«¯åèµ·TCPè¿æ¥ï¼å³è¯»åé信对端çè¯·æ±æè åºçæ¶æ¯ï¼ååé信对端åéæ¶æ¯è¯·æ±æè åºçæ¶æ¯ãç论ä¸ä¸ä¸ªçº¿ç¨å¯ä»¥ç¬ç«å¤çææIOç¸å ³çæä½ï¼ä½ä¸ä¸ªNIO线ç¨åæ¶å¤çæç¾ä¸åçé¾è·¯ï¼æ§è½ä¸æ æ³æ¯æï¼å³ä¾¿NIO线ç¨çCPUè´è·è¾¾å°100%ï¼ä¹æ æ³æ»¡è¶³æµ·éæ¶æ¯çç¼ç ãè§£ç ã读åååéï¼åå 为å½NIO线ç¨è´è½½è¿éä¹åï¼å¤çé度å°åæ ¢ï¼è¿ä¼å¯¼è´å¤§é客æ·ç«¯è¿æ¥è¶ æ¶ï¼è¶ æ¶ä¹åå¾å¾ä¼è¿è¡éåï¼è¿æ´å éäºNIO线ç¨çè´è½½ï¼æç»ä¼å¯¼è´å¤§éæ¶æ¯ç§¯ååå¤çè¶ æ¶ï¼NIO线ç¨ä¼æä¸ºç³»ç»çæ§è½ç¶é¢ã Reactorå¤çº¿ç¨æ¨¡åï¼æä¸é¨ä¸ä¸ªNIO线ç¨ç¨äºç嬿å¡ç«¯ï¼æ¥æ¶å®¢æ·ç«¯çTCPè¿æ¥è¯·æ±ï¼ç½ç»IOæä½(读å)ç±ä¸ä¸ªNIOçº¿ç¨æ± è´è´£ï¼çº¿ç¨æ± å¯ä»¥éç¨æ åçJDKçº¿ç¨æ± å®ç°ãä½ç¾ä¸å®¢æ·ç«¯å¹¶åè¿æ¥æ¶ï¼ä¸ä¸ªnio线ç¨ç¨æ¥çå¬åæ¥åææ¾ä¸å¤ï¼å æ¤æäºä¸»ä»å¤çº¿ç¨æ¨¡åã 主ä»Reactorå¤çº¿ç¨æ¨¡åï¼å©ç¨ä¸»ä»NIOçº¿ç¨æ¨¡åï¼å¯ä»¥è§£å³1个æå¡ç«¯çå¬çº¿ç¨æ æ³ææå¤çææå®¢æ·ç«¯è¿æ¥çæ§è½ä¸è¶³é®é¢ï¼å³æç嬿å¡ç«¯ï¼æ¥æ¶å®¢æ·ç«¯çTCPè¿æ¥è¯·æ±åç»ä¸ä¸ªçº¿ç¨æ± ãå æ¤ï¼å¨ä»£ç ä¸å¯ä»¥çå°ï¼æä»¬å¨serverç«¯éæ©çå°±æ¯è¿ç§æ¹å¼ï¼å¹¶ä¸ä¹æ¨è使ç¨è¯¥çº¿ç¨æ¨¡åãå¨å¯å¨ç±»ä¸å建ä¸åçEventLoopGroupå®ä¾å¹¶éè¿éå½çåæ°é ç½®ï¼å°±å¯ä»¥æ¯æä¸è¿°ä¸ç§Reactorçº¿ç¨æ¨¡åã ### åèèµæ https://baijiahao.baidu.com/s?id=1669639041722396699 https://blog.csdn.net/PCCEO1/article/details/95899920 https://www.cnblogs.com/xiaoyangjia/p/11526197.html