我和Netty的故事
本文首發於InfoQ架構師雜誌。
還在上學的時候,我特別好奇QQ是怎麼實現的,為什麼我一發訊息我的好友馬上就能收到且基本沒有延遲,它的原理是什麼?大三的時候,我學習了Java語言,接觸到了Socket程式設計,不知天高地厚的我當時居然想自己實現個簡易QQ,和幾個朋友做了技術評估後覺得這個事好像不是那麼難,緊接著我們就用Swing以及一些Socket程式設計知識完成了一個簡易的區域網QQ,雖然功能不是那麼的穩定,但基本上還是可以實現私聊、群聊、檔案傳輸、抖屏功能。這也許是我第一次接觸網路通訊,核心功能部分使用了同步I/O的Socket類庫。
參加工作後,公司使用的RPC框架是Hessian,Hessian是一款基於HTTP協議的RPC框架,採用的是二進位制RPC協議,但是在Java中,Hessian的服務端需要使用Tomcat之類的容器,而它們的效能總是那麼的不如人意。因為那會公司使用的MVC框架是Play,所以我很早就接觸到了Netty,它的高效能、高可靠性的特性早有耳聞。看了Play框架中Netty部分的程式碼以及Netty的官方案例後,我用Netty重新實現了Hessian的服務端,於是一款構建於Netty和Hessian基礎上的高效能的RPC框架誕生了,我取名叫Hetty(Hessian+Netty)。簡單的效能測試之後,我發現Hetty的效能是之前的4~5倍,這次之後,我對Netty有了更深入的瞭解,使用Netty可以更簡單的開發出高效能、可擴充套件、易讀易維護的系統。
再到後來,我去了一家遊戲公司,發現他們在伺服器端大量使用了Netty框架,從來沒有想到Netty在遊戲行業已經得到了這麼大範圍的使用。不過再仔細想想,這一點都不驚奇,遊戲伺服器端,除了大量的業務邏輯外,其它部分其實都在玩NIO,而Netty作為一款成熟的非同步NIO通訊框架,它的效能、擴充套件性、穩定性、使用難度都得到了業界的肯定。那Netty有哪些優點了?我認為有以下幾點:
- 文件齊全,社群活躍,API簡單,案例很多。
- 支援多種協議,如HTTP、FTP、SMTP。
- 效能高,易擴充套件。
- 週期性的版本迭代,成熟且穩定。
這麼一看,工作生活中處處與Netty為伴,其實是Netty見證了我的成長,希望好的框架能讓更多的人收益!
相關文章
- 王垠:我和Google的故事Go
- 【開源】我和 JAP(JA Plus) 的故事
- 我和Linux,不得不說的故事Linux
- 我的運維故事運維
- (小說)我們的故事1
- 伴著圖靈夢想前行 -- 我和圖靈的故事圖靈
- 我和freelancer不得不說的故事4 --- freelancer at lastAST
- 分享我的幾個學習故事
- 我開發 wangEditor-mobile 的故事
- CIO職場故事:我的IT人生三大境界
- Ceph 和防火牆的故事防火牆
- Will Scott:我在朝鮮教計算機的故事計算機
- Flarum 的故事:我為什麼開發Flarum
- netty系列之:EventExecutor,EventExecutorGroup和netty中的實現Netty
- netty系列之:Bootstrap,ServerBootstrap和netty中的實現NettybootServer
- netty系列之:channel,ServerChannel和netty中的實現NettyServer
- 《她的故事》《說謊》創作者:我是怎樣在遊戲中創作故事?遊戲
- netty系列之:NIO和netty詳解Netty
- netty系列之:EventLoop,EventLoopGroup和netty的預設實現NettyOOP
- 我和freelancer不得不說的故事3 --- 有緣無份的PF專案
- 《我的世界:地下城》開發幕後故事
- “我不想讓我的女兒知道我被騙錢了”|說說身邊的網路安全故事
- 從Netty版hello world看Netty原始碼,我們能看到什麼?Netty原始碼
- 我的 Linux 故事:在 90 年代學習 LinuxLinux
- 我與小程式的故事以及小程式框架選型框架
- 關於我學習成績的幾個小故事
- Netty 中的粘包和拆包Netty
- 開發者故事|程式碼虐我千萬遍,我待程式碼如“初戀”
- 記一次講故事機器人的開發-我有故事,讓機器人來讀機器人
- 我和《獨角獸專案:數字化轉型時代的開發傳奇》背後的故事
- 聊聊t-io和netty的差異Netty
- Netty的原始碼分析和業務場景Netty原始碼
- 你在淘寶買過Steam遊戲嗎?我和其中一位店主聊了聊他的故事遊戲
- 我是如何進入 Google 的?Chrome 視覺設計師的故事GoChrome視覺
- 文明的故事和故事的傳遞:踏著《原神》音樂來一場世界環遊
- netty系列之:channel和channelGroupNetty
- 【Netty】ChannelHandler和ChannelPipelineNetty
- 開源小白到核心開發——我與 sealer 的成長故事