澶辨晥閾炬帴澶勭悊 |
銆奛etty鏉冨▉鎸囧崡(絎?鐗?銆婸DF 涓嬭澆 杞澆鑷細(xì)https://download.csdn.net/download/m0_37609579/10423530
涓嬭澆鍦板潃錛?/strong>鐗堟潈褰掑嚭鐗堢ぞ鍜屽師浣滆€呮墍鏈夛紝閾炬帴宸插垹闄わ紝璇瘋喘涔版鐗?/b>
鐢?shù)瀛愮増浠呬緵棰勮鍙?qiáng)瀛︿範(fàn)浜ゆ祦浣跨敤錛屼笅杞藉悗璇?4灝忔椂鍐呭垹闄わ紝鏀寔姝g増錛屽枩嬈㈢殑璇瘋喘涔版鐗堜功綾嶏細(xì)銆奛etty鏉冨▉鎸囧崡(絎?鐗?銆?/a>
鍥句功綆€浠嬶細(xì)
銆奛etty 鏉冨▉鎸囧崡錛堢2 鐗堬級(jí)銆嬫槸寮傛闈為樆濉為€氫俊棰嗗煙鐨勭粡鍏鎬箣浣滐紝鍩轟簬鏈€鏂扮増鏈殑Netty 5.0 緙栧啓錛屾槸鍥藉唴寰堥毦寰椾竴瑙佺殑娣卞叆浠嬬粛Netty 鍘熺悊鍜屾灦鏋勭殑涔︾睄錛屼篃鏄綔鑰呭騫村疄鎴樼粡楠岀殑鎬葷粨鍜屾祿緙┿€傚唴瀹逛笉浠呭寘鍚獼ava NIO鍏ラ棬鐭ヨ瘑銆丯etty 鐨勫熀紜€鍔熻兘寮€鍙戞寚瀵箋€佺紪瑙g爜妗嗘灦瀹氬埗絳夛紝榪樺寘鎷鏈夊崗璁爤瀹氬埗鍜屽紑鍙戙€丯etty 鏍稿績(jī)綾誨簱婧愮爜鍒嗘瀽錛屼互鍙?qiáng)Netty 鐨勬灦鏋勫墫鏋愩€?/span>
鐩稿叧鎴浘錛?br />
![]()
鍥句功鐩綍錛?/strong>
鍩虹綃囪蛋榪汮ava NIO 絎? 绔燡ava 鐨処/O 婕旇繘涔嬭礬.2 1.1 I/O 鍩虹鍏ラ棬...............3 1.1.1 Linux 緗戠粶I/O 妯″瀷綆€浠?......3 1.1.2 I/O 澶氳礬澶嶇敤鎶€鏈?................6 1.2 Java 鐨処/O 婕旇繘..........8 1.3 鎬葷粨............................10 絎? 绔燦IO 鍏ラ棬.................... 11 2.1 浼犵粺鐨凚IO 緙栫▼....... 11 2.1.1 BIO 閫氫俊妯″瀷鍥?.................12 2.1.2 鍚屾闃誨寮廔/O 鍒涘緩鐨凾imeServer 婧愮爜鍒嗘瀽.............13 2.1.3 鍚屾闃誨寮廔/O 鍒涘緩鐨凾imeClient 婧愮爜鍒嗘瀽..........16 2.2 浼紓姝/O 緙栫▼........ 18 2.2.1 浼紓姝/O 妯″瀷鍥?............. 19 2.2.2 浼紓姝/O 鍒涘緩鐨凾imeServer 婧愮爜鍒嗘瀽..... 19 2.2.3 浼紓姝/O 寮婄鍒嗘瀽........... 21 2.3 NIO 緙栫▼....................24 2.3.1 NIO 綾誨簱綆€浠?. 24 2.3.2 NIO 鏈嶅姟绔簭鍒楀浘..............28 2.3.3 NIO 鍒涘緩鐨凾imeServer 婧愮爜鍒嗘瀽................ 30 2.3.4 NIO 瀹㈡埛绔簭鍒楀浘..............36 2.3.5 NIO 鍒涘緩鐨凾imeClient 婧愮爜鍒嗘瀽................ 39 2.4 AIO 緙栫▼....................45 2.4.1 AIO 鍒涘緩鐨凾imeServer 婧愮爜鍒嗘瀽................ 46 2.4.2 AIO 鍒涘緩鐨凾imeClient 婧愮爜鍒嗘瀽................ 51 2.4.3 AIO 鐗堟湰鏃墮棿鏈嶅姟鍣ㄨ繍琛岀粨鏋?...................56 2.5 4 縐岻/O 鐨勫姣?........ 58 2.5.1 姒傚康婢勬竻.......... 58 2.5.2 涓嶅悓I/O 妯″瀷瀵規(guī)瘮.............. 59 2.6 閫夋嫨Netty 鐨勭悊鐢?.... 60 2.6.1 涓嶉€夋嫨Java 鍘熺敓NIO 緙栫▼鐨勫師鍥?.............. 61 2.6.2 涓轟粈涔堥€夋嫨Netty................ 62 2.7 鎬葷粨............................63 鍏ラ棬綃?nbsp;Netty NIO 寮€鍙戞寚鍗?/p> 絎? 绔燦etty 鍏ラ棬搴旂敤.......... 66 3.1 Netty 寮€鍙戠幆澧冪殑鎼緩................66 3.1.1 涓嬭澆Netty 鐨勮蔣浠跺寘........... 67 3.1.2 鎼緩Netty 搴旂敤宸ョ▼........... 67 3.2 Netty 鏈嶅姟绔紑鍙?..... 68 3.3 Netty 瀹㈡埛绔紑鍙?..... 73 3.4 榪愯鍜岃皟璇?............... 76 3.4.1 鏈嶅姟绔拰瀹㈡埛绔殑榪愯...... 76 3.4.2 鎵撳寘鍜岄儴緗?..... 77 3.5 鎬葷粨............................77 絎? 绔燭CP 綺樺寘/鎷嗗寘闂鐨勮В鍐充箣閬?..... 79 4.1 TCP 綺樺寘/鎷嗗寘.......... 79 4.1.1 TCP 綺樺寘/鎷嗗寘闂璇存槑..... 80 4.1.2 TCP 綺樺寘/鎷嗗寘鍙戠敓鐨勫師鍥?...... 80 4.1.3 綺樺寘闂鐨勮В鍐崇瓥鐣?......... 81 4.2 鏈€冭檻TCP 綺樺寘瀵艱嚧鍔熻兘寮傚父妗堜緥................. 82 4.2.1 TimeServer 鐨勬敼閫?.............82 4.2.2 TimeClient 鐨勬敼閫?..............83 4.2.3 榪愯緇撴灉.......... 84 4.3 鍒╃敤LineBasedFrameDecoder 瑙e喅TCP 綺樺寘闂................ 85 4.3.1 鏀寔TCP 綺樺寘鐨凾imeServer ....................... 86 4.3.2 鏀寔TCP 綺樺寘鐨凾imeClient........................ 88 4.3.3 榪愯鏀寔TCP 綺樺寘鐨勬椂闂存湇鍔″櫒紼嬪簭........ 90 4.3.4 LineBasedFrameDecoder 鍜孲tringDecoder 鐨勫師鐞嗗垎鏋?..........91 4.4 鎬葷粨............................92 絎? 绔犲垎闅旂鍜屽畾闀胯В鐮佸櫒鐨勫簲鐢?..... 93 5.1 DelimiterBasedFrameDecoder 搴旂敤寮€鍙?............ 94 5.1.1 DelimiterBasedFrameDecoder 鏈嶅姟绔紑鍙?... 94 5.1.2 DelimiterBasedFrameDecoder 瀹㈡埛绔紑鍙?... 97 5.1.3 榪愯DelimiterBasedFrameDecoder 鏈嶅姟绔拰瀹㈡埛绔?.............. 99 5.2 FixedLengthFrameDecoder 搴旂敤寮€鍙?.............. 101 5.2.1 FixedLengthFrameDecoder 鏈嶅姟绔紑鍙?..... 101 5.2.2 鍒╃敤telnet 鍛戒護(hù)琛屾祴璇旹choServer 鏈嶅姟绔?.....103 5.3 鎬葷粨..........................104 涓駭綃?nbsp;Netty 緙栬В鐮佸紑鍙戞寚鍗?/p> 絎? 绔犵紪瑙g爜鎶€鏈?............. 106 6.1 Java 搴忓垪鍖栫殑緙虹偣 ......107 6.1.1 鏃犳硶璺ㄨ璦€.... 107 6.1.2 搴忓垪鍖栧悗鐨勭爜嫻佸お澶?....... 107 6.1.3 搴忓垪鍖栨€ц兘澶綆................110 6.2 涓氱晫涓繪祦鐨勭紪瑙g爜妗嗘灦............113 6.2.1 Google 鐨凱rotobuf 浠嬬粛.... 113 6.2.2 Facebook 鐨凾hrift 浠嬬粛.... 115 6.2.3 JBoss Marshalling 浠嬬粛..... 116 6.3 鎬葷粨..........................117 絎? 绔燤essagePack 緙栬В鐮?.............. 118 7.1 MessagePack 浠嬬粛... 118 7.1.1 MessagePack 澶氳璦€鏀寔.. 119 7.1.2 MessagePack Java API 浠嬬粛........................ 119 7.1.3 MessagePack 寮€鍙戝寘涓嬭澆. 120 7.2 MessagePack 緙栫爜鍣ㄥ拰瑙g爜鍣ㄥ紑鍙?................120 7.2.1 MessagePack 緙栫爜鍣ㄥ紑鍙?...... 120 7.2.2 MessagePack 瑙g爜鍣ㄥ紑鍙?nbsp;...... 121 7.2.3 鍔熻兘嫻嬭瘯........ 121 7.3 綺樺寘/鍗婂寘鏀寔......... 124 7.4 鎬葷粨..........................127 絎? 绔燝oogle Protobuf 緙栬В鐮?......... 128 8.1 Protobuf 鐨勫叆闂?...... 129 8.1.1 Protobuf 寮€鍙戠幆澧冩惌寤?.... 129 8.1.2 Protobuf 緙栬В鐮佸紑鍙?........131 8.1.3 榪愯Protobuf 渚嬬▼............ 133 8.2 Netty 鐨凱rotobuf 鏈嶅姟绔紑鍙?. 133 8.2.1 Protobuf 鐗堟湰鐨勫浘涔﹁璐湇鍔$寮€鍙?.......134 8.2.2 Protobuf 鐗堟湰鐨勫浘涔﹁璐鎴風(fēng)寮€鍙?.......136 8.2.3 Protobuf 鐗堟湰鐨勫浘涔﹁璐▼搴忓姛鑳芥祴璇?...139 8.3 Protobuf 鐨勪嬌鐢ㄦ敞鎰忎簨欏?........140 8.4 鎬葷粨..........................142 絎? 绔燡Boss Marshalling 緙栬В鐮?...... 143 9.1 Marshalling 寮€鍙戠幆澧冨噯澶?.......143 9.2 Netty 鐨凪arshalling 鏈嶅姟绔紑鍙?.................... 144 9.3 Netty 鐨凪arshalling 瀹㈡埛绔紑鍙?.................... 147 9.4 榪愯Marshalling 瀹㈡埛绔拰鏈嶅姟绔緥紼?.......... 149 9.5 鎬葷粨..........................150 楂樼駭綃?nbsp;Netty 澶氬崗璁紑鍙戝拰搴旂敤 絎?0 绔燞TTP 鍗忚寮€鍙戝簲鐢?.............. 154 10.1 HTTP 鍗忚浠嬬粛..... 155 10.1.1 HTTP 鍗忚鐨刄RL.......... 155 10.1.2 HTTP 璇鋒眰娑堟伅錛圚ttpRequest錛?............. 155 10.1.3 HTTP 鍝嶅簲娑堟伅錛圚ttpResponse錛?.......... 158 10.2 Netty HTTP 鏈嶅姟绔叆闂ㄥ紑鍙?......159 10.2.1 HTTP 鏈嶅姟绔緥紼嬪満鏅弿榪?....................160 10.2.2 HTTP 鏈嶅姟绔紑鍙?..........160 10.2.3 Netty HTTP 鏂囦歡鏈嶅姟鍣ㄤ緥紼嬭繍琛岀粨鏋?...166 10.3 Netty HTTP XML 鍗忚鏍堝紑鍙?......................170 10.3.1 寮€鍙戝満鏅粙緇?................171 10.3.2 HTTP XML 鍗忚鏍堣璁?......174 10.3.3 楂樻晥鐨刋ML 緇戝畾妗嗘灦JiBx ..................... 175 10.3.4 HTTP XML 緙栬В鐮佹鏋跺紑鍙?.................183 10.3.5 HTTP XML 鍗忚鏍堟祴璇?...... 199 10.3.6 灝忕粨.............201 10.4 鎬葷粨........................202 絎?1 绔燱ebSocket 鍗忚寮€鍙?............ 203 11.1 HTTP 鍗忚鐨勫紛绔?...... 204 11.2 WebSocket 鍏ラ棬..... 204 11.2.1 WebSocket 鑳屾櫙...............205 11.2.2 WebSocket 榪炴帴寤虹珛....... 206 11.2.3 WebSocket 鐢熷懡鍛ㄦ湡....... 207 11.2.4 WebSocket 榪炴帴鍏抽棴....... 208 11.3 Netty WebSocket 鍗忚寮€鍙?.... 209 11.3.1 WebSocket 鏈嶅姟绔姛鑳戒粙緇?....................209 11.3.2 WebSocket 鏈嶅姟绔紑鍙?... 210 11.3.3 榪愯W(xué)ebSocket 鏈嶅姟绔?.. 218 11.4 鎬葷粨........................219 絎?2 绔犵鏈夊崗璁爤寮€鍙?... 221 12.1 縐佹湁鍗忚浠嬬粛........ 221 12.2 Netty 鍗忚鏍堝姛鑳借璁?...........223 12.2.1 緗戠粶鎷撴墤鍥?. 223 12.2.2 鍗忚鏍堝姛鑳芥弿榪?.............224 12.2.3 閫氫俊妯″瀷...... 224 12.2.4 娑堟伅瀹氫箟...... 225 12.2.5 Netty 鍗忚鏀寔鐨勫瓧孌電被鍨?.....................226 12.2.6 Netty 鍗忚鐨勭紪瑙g爜瑙勮寖. 227 12.2.7 閾捐礬鐨勫緩绔?. 229 12.2.8 閾捐礬鐨勫叧闂?. 230 12.2.9 鍙潬鎬ц璁?. 230 12.2.10 瀹夊叏鎬ц璁?nbsp;232 12.2.11 鍙墿灞曟€ц璁?...............232 12.3 Netty 鍗忚鏍堝紑鍙?. 233 12.3.1 鏁版嵁緇撴瀯瀹氫箟.................233 12.3.2 娑堟伅緙栬В鐮?. 237 12.3.3 鎻℃墜鍜屽畨鍏ㄨ璇?.............241 12.3.4 蹇?jī)锜個(gè)嫻嬫満鍒?................245 12.3.5 鏂繛閲嶈繛...... 248 12.3.6 瀹㈡埛绔唬鐮?. 249 12.3.7 鏈嶅姟绔唬鐮?. 251 12.4 榪愯鍗忚鏍?........... 252 12.4.1 姝e父鍦烘櫙...... 252 12.4.2 寮傚父鍦烘櫙錛氭湇鍔$瀹曟満閲嶅惎....................253 12.4.3 寮傚父鍦烘櫙錛氬鎴風(fēng)瀹曟満閲嶅惎....................256 12.5 鎬葷粨........................256 絎?3 绔犳湇鍔$鍒涘緩............ 258 13.1 鍘熺敓NIO 綾誨簱鐨勫鏉傛€?........ 259 13.2 Netty 鏈嶅姟绔垱寤烘簮鐮佸垎鏋?...259 13.2.1 Netty 鏈嶅姟绔垱寤烘椂搴忓浘. 260 13.2.2 Netty 鏈嶅姟绔垱寤烘簮鐮佸垎鏋?.....................263 13.3 瀹㈡埛绔帴鍏ユ簮鐮佸垎鏋?.............272 13.4 鎬葷粨........................275 絎?4 绔犲鎴風(fēng)鍒涘緩............ 276 14.1 Netty 瀹㈡埛绔垱寤烘祦紼嬪垎鏋?...276 14.2.1 Netty 瀹㈡埛绔垱寤烘椂搴忓浘. 276 14.2.2 Netty 瀹㈡埛绔垱寤烘祦紼嬪垎鏋?.....................277 14.2 Netty 瀹㈡埛绔垱寤烘簮鐮佸垎鏋?...278 14.2.1 瀹㈡埛绔繛鎺ヨ緟鍔╃被Bootstrap....................278 14.2.2 瀹㈡埛绔繛鎺ユ搷浣?.............281 14.2.3 寮傛榪炴帴緇撴灉閫氱煡..........283 14.2.4 瀹㈡埛绔繛鎺ヨ秴鏃舵満鍒?.....284 14.3 鎬葷粨........................286 婧愮爜鍒嗘瀽綃?nbsp;Netty 鍔熻兘浠嬬粛鍜屾簮鐮佸垎鏋?/p> 絎?5 绔燘yteBuf 鍜岀浉鍏寵緟鍔╃被........... 288 15.1 ByteBuf 鍔熻兘璇存槑. 288 15.1.1 ByteBuf 鐨勫伐浣滃師鐞?.......289 15.1.2 ByteBuf 鐨勫姛鑳戒粙緇?.......294 15.2 ByteBuf 婧愮爜鍒嗘瀽. 308 15.2.1 ByteBuf 鐨勪富瑕佺被緇ф壙鍏崇郴.....................309 15.2.2 AbstractByteBuf 婧愮爜鍒嗘瀽........................ 310 15.2.3 AbstractReferenceCountedByteBuf 婧愮爜鍒嗘瀽.................. 319 15.2.4 UnpooledHeapByteBuf 婧愮爜鍒嗘瀽.............. 321 15.2.5 PooledByteBuf 鍐呭瓨姹犲師鐞嗗垎鏋?..............326 15.2.6 PooledDirectByteBuf 婧愮爜鍒嗘瀽................. 329 15.3 ByteBuf 鐩稿叧鐨勮緟鍔╃被鍔熻兘浠嬬粛....................332 15.3.1 ByteBufHolder................. 332 15.3.2 ByteBufAllocator ............. 333 15.3.3 CompositeByteBuf ........... 334 15.3.4 ByteBufUtil .. 336 15.4 鎬葷粨........................337 絎?6 绔燙hannel 鍜孶nsafe ................. 338 16.1 Channel 鍔熻兘璇存槑. 338 16.1.1 Channel 鐨勫伐浣滃師鐞?.......339 16.1.2 Channel 鐨勫姛鑳戒粙緇?.......340 16.2 Channel 婧愮爜鍒嗘瀽. 343 16.2.1 Channel 鐨勪富瑕佺戶鎵垮叧緋葷被鍥?.................343 16.2.2 AbstractChannel 婧愮爜鍒嗘瀽........................ 344 16.2.3 AbstractNioChannel 婧愮爜鍒嗘瀽.................. 347 16.2.4 AbstractNioByteChannel 婧愮爜鍒嗘瀽........... 350 16.2.5 AbstractNioMessageChannel 婧愮爜鍒嗘瀽..... 353 16.2.6 AbstractNioMessageServerChannel 婧愮爜鍒嗘瀽.............. 354 16.2.7 NioServerSocketChannel 婧愮爜鍒嗘瀽........... 355 16.2.8 NioSocketChannel 婧愮爜鍒嗘瀽..................... 358 16.3 Unsafe 鍔熻兘璇存槑... 364 16.4 Unsafe 婧愮爜鍒嗘瀽... 365 16.4.1 Unsafe 緇ф壙鍏崇郴綾誨浘...... 365 16.4.2 AbstractUnsafe 婧愮爜鍒嗘瀽. 366 16.4.3 AbstractNioUnsafe 婧愮爜鍒嗘瀽.................... 375 16.4.4 NioByteUnsafe 婧愮爜鍒嗘瀽. 379 16.5 鎬葷粨........................387 絎?7 绔燙hannelPipeline 鍜孋hannelHandler........... 388 17.1 ChannelPipeline 鍔熻兘璇存槑....... 389 17.1.1 ChannelPipeline 鐨勪簨浠跺鐞?................... 389 17.1.2 鑷畾涔夋嫤鎴櫒.................391 17.1.3 鏋勫緩pipeline 392 17.1.4 ChannelPipeline 鐨勪富瑕佺壒鎬?................... 393 17.2 ChannelPipeline 婧愮爜鍒嗘瀽....... 393 17.2.1 ChannelPipeline 鐨勭被緇ф壙鍏崇郴鍥?............ 393 17.2.2 ChannelPipeline 瀵笴hannelHandler 鐨勭鐞?..........393 17.2.3 ChannelPipeline 鐨刬nbound 浜嬩歡..............396 17.2.4 ChannelPipeline 鐨刼utbound 浜嬩歡............397 17.3 ChannelHandler 鍔熻兘璇存槑....... 398 17.3.1 ChannelHandlerAdapter 鍔熻兘璇存槑............ 399 17.3.2 ByteToMessageDecoder 鍔熻兘璇存槑............ 399 17.3.3 MessageToMessageDecoder 鍔熻兘璇存槑...... 400 17.3.4 LengthFieldBasedFrameDecoder 鍔熻兘璇存槑............... 400 17.3.5 MessageToByteEncoder 鍔熻兘璇存槑............. 404
17.3.6 MessageToMess |