Netty系列之Netty 服务端创建
1.1. 原生NIO類庫(kù)的復(fù)雜性
在開(kāi)始本文之前,我先講一件自己親身經(jīng)歷的事:大約在2011年的時(shí)候,周邊的兩個(gè)業(yè)務(wù)團(tuán)隊(duì)同時(shí)進(jìn)行新版本開(kāi)發(fā),他們都需要基于NIO非阻塞特性構(gòu)建高性能、異步和高可靠性的底層通信框架。
當(dāng)時(shí)兩個(gè)項(xiàng)目組的設(shè)計(jì)師都咨詢了我的意見(jiàn),在了解了兩個(gè)項(xiàng)目團(tuán)隊(duì)的NIO編程經(jīng)驗(yàn)和現(xiàn)狀之后,我建議他們都使用Netty構(gòu)建業(yè)務(wù)通信框架。令人遺憾的是其中1個(gè)項(xiàng)目組并沒(méi)有按照我的建議做,而是選擇直接基于JDK的NIO類庫(kù)構(gòu)建自己的通信框架。在他們看來(lái),構(gòu)建業(yè)務(wù)層的NIO通信框架并不是件難事,即便當(dāng)前他們還缺乏相關(guān)經(jīng)驗(yàn)。
兩個(gè)多月過(guò)去之后,自研NIO框架團(tuán)隊(duì)的通信框架始終無(wú)法穩(wěn)定的工作,他們頻繁遭遇客戶端斷連、句柄泄露和消息丟失等問(wèn)題。項(xiàng)目的進(jìn)度出現(xiàn)了嚴(yán)重的延遲;形成鮮明對(duì)比的是,另一個(gè)團(tuán)隊(duì)由于基于Netty研發(fā),在通信框架上節(jié)省了大量的人力和時(shí)間,加之Netty自身的可靠性和穩(wěn)定性非常好,他們的項(xiàng)目進(jìn)展非常順利。
這兩個(gè)項(xiàng)目組的不同遭遇告訴我們:開(kāi)發(fā)高質(zhì)量的NIO程序并不是一件簡(jiǎn)單的事情,除去NIO類庫(kù)的固有復(fù)雜性和Bug,作為NIO服務(wù)端,需要能夠處理網(wǎng)絡(luò)的閃斷、客戶端的重連、安全認(rèn)證和消息的編解碼、半包處理等。如果沒(méi)有足夠的NIO編程經(jīng)驗(yàn)積累,自研NIO框架往往需要半年甚至數(shù)年的時(shí)間才能最終穩(wěn)定下來(lái),這種成本即便對(duì)一個(gè)大公司而言也是個(gè)嚴(yán)重的挑戰(zhàn)。
本文轉(zhuǎn)自jiahuafu博客園博客,原文鏈接http://www.cnblogs.com/jiahuafu/p/4276609.html如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
jiahuafu
總結(jié)
以上是生活随笔為你收集整理的Netty系列之Netty 服务端创建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VS集成opencv编译C++项目遇到的
- 下一篇: 在CentOS7上配置Open vSwi