netty

netty起步

netty簡介

1烛卧、Netty是基于Java NIO的網(wǎng)絡(luò)應(yīng)用框架晃痴。
2、Netty是一個NIO client-server(客戶端服務(wù)器)框架缰趋,使用Netty可以快速開發(fā)網(wǎng)絡(luò)應(yīng)用捧杉,例如服務(wù)器和客戶端協(xié)議。Netty提供了一種新的方式來使開發(fā)網(wǎng)絡(luò)應(yīng)用程序秘血,這種新的方式使得它很容易使用和有很強的擴展性味抖。Netty的內(nèi)部實現(xiàn)是很復(fù)雜的,但是Netty提供了簡單易用的api從網(wǎng)絡(luò)處理代碼中解耦業(yè)務(wù)邏輯灰粮。Netty是完全基于NIO實現(xiàn)的非竿,所以整個Netty都是異步的
3谋竖、網(wǎng)絡(luò)應(yīng)用程序通常需要有較高的可擴展性红柱,無論是Netty還是其它的基于Java NIO的框架承匣,都會提供可擴展性的解決方案。Netty中一個關(guān)鍵組成部分是它的異步特性锤悄。

為什么選擇netty

netty框架圖

netty框架圖

netty特性

TCP拆包韧骗、粘包問題

  1. 熟悉tcp編程的可能都知道,無論是服務(wù)器端還是客戶端零聚,當(dāng)我們讀取或者發(fā)送數(shù)據(jù)的時候袍暴,都需要考慮tcp底層的粘包/拆包機制。
  2. TCP是一個“流”協(xié)議隶症,所謂流就是沒有界限的傳遞數(shù)據(jù)政模。可以想象一下如果河里的水就好比數(shù)據(jù)蚂会,他們是連成一片的淋样,沒有界線,TCP底層并不了解上層的業(yè)務(wù)數(shù)據(jù)具體一個完整的包可能會被TCP分成多個包進行發(fā)送胁住,也可能把多個小包封裝成一個大的數(shù)據(jù)包發(fā)送出去趁猴,這就是所謂的TCP粘包、拆包問題彪见。
  3. 分析TCP粘包儡司、拆包問題的產(chǎn)生原因:
    1. 應(yīng)用程序write寫入的字節(jié)大小大于套接口發(fā)送緩沖區(qū)的大小余指;
    2. 進行MSS大小的TCP分段捕犬;
    3. 以太網(wǎng)幀的payload大于MTU進行IP分片。

TCP拆包酵镜、粘包解決方案

粘包拆包問題的解決方案碉碉,根據(jù)業(yè)界主流協(xié)議,有三種方案:

  1. 消息定長笋婿,例如每個報文的大小固定為200個字節(jié)誉裆,如果不夠顿颅,空位補空格缸濒;
  2. 在包尾部增加特殊字符進行分割,例如加回車等粱腻;
  3. 將消息分為消息頭和消息體庇配,在消息頭中包含表示消息總長度的字段,然后進行業(yè)務(wù)邏輯的處理绍些。

Netty編解碼技術(shù)

  1. 編解碼技術(shù)捞慌,說白了就是java序列化技術(shù),序列化目的就兩個柬批,第一進行網(wǎng)絡(luò)傳輸啸澡,第二對象持久化袖订;
  2. 雖然我們可以使用java進行對象序列化,netty去傳輸嗅虏,但是java序列化的硬傷太多洛姑,比如java序列化沒法跨語言、序列化后碼流太大皮服、序列化性能太低等等楞艾;
  3. 主流的編解碼框架:
    1. JBoss的Marshalling包
    2. google的Protobuf
    3. 基于Protobuf的Kyro
    4. MessagePack框架

JBoss Marshalling

Jboos Marshalling是一個java對象序列化包,對JDK 默認的序列化框架進行優(yōu)化龄广,但又保持跟java.io.Serializable接口的兼容硫眯,同時增加了一些可調(diào)的參數(shù)和附加特性。

類庫:jboss-marshalling-1.3.0择同、jboos-marshalling-serail-1.3.0

下載地址:https://www.jboss.org/jbossmarshalling/downloads

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末两入,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子奠衔,更是在濱河造成了極大的恐慌谆刨,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件归斤,死亡現(xiàn)場離奇詭異痊夭,居然都是意外死亡,警方通過查閱死者的電腦和手機脏里,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門她我,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人迫横,你說我怎么就攤上這事番舆。” “怎么了矾踱?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵恨狈,是天一觀的道長。 經(jīng)常有香客問我呛讲,道長禾怠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任贝搁,我火速辦了婚禮吗氏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雷逆。我一直安慰自己弦讽,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布膀哲。 她就那樣靜靜地躺著往产,像睡著了一般被碗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仿村,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天蛮放,我揣著相機與錄音,去河邊找鬼奠宜。 笑死包颁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的压真。 我是一名探鬼主播娩嚼,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼滴肿!你這毒婦竟也來了岳悟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤泼差,失蹤者是張志新(化名)和其女友劉穎贵少,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堆缘,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡滔灶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吼肥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片录平。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缀皱,靈堂內(nèi)的尸體忽然破棺而出斗这,到底是詐尸還是另有隱情,我是刑警寧澤啤斗,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布表箭,位于F島的核電站,受9級特大地震影響钮莲,放射性物質(zhì)發(fā)生泄漏免钻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一臂痕、第九天 我趴在偏房一處隱蔽的房頂上張望伯襟。 院中可真熱鬧猿涨,春花似錦握童、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稽揭。三九已至,卻和暖如春肥卡,著一層夾襖步出監(jiān)牢的瞬間溪掀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工步鉴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揪胃,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓氛琢,卻偏偏與公主長得像喊递,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子阳似,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 前奏 https://tech.meituan.com/2016/11/04/nio.html 綜述 netty通...
    jiangmo閱讀 5,846評論 0 13
  • 1骚勘、Netty基礎(chǔ)入門 Netty是由JBOSS提供的一個java開源框架。Netty提供異步的撮奏、事件驅(qū)動的網(wǎng)絡(luò)應(yīng)...
    我是嘻哈大哥閱讀 4,689評論 0 31
  • 該文章為轉(zhuǎn)載俏讹,原文章請點擊 1. 背景 1.1. Netty 3.X系列版本現(xiàn)狀 根據(jù)對Netty社區(qū)部分用戶的調(diào)...
    Pramyness閱讀 1,970評論 1 14
  • 工作時間依舊那么快結(jié)束,殘留著未完成事務(wù) 有了目標畜吊,卻沒有達成的喜悅 因為泽疆,喜悅并不屬于我 第一如何,倒數(shù)如何 真...
    吾九二閱讀 157評論 0 1
  • 有時總是心慌玲献,總感覺自己在浪費生命于微。可是青自,每天毫無意義的忙碌株依,讓我忘卻了思考。只是延窜,不停的苦干恋腕。做著每天重復(fù)的工作...
    f9f1de48dc41閱讀 76評論 0 0