日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Netty:我為啥這么受歡迎你們不知道嗎?

來源: 責編: 時間:2024-03-27 17:39:17 239觀看
導讀前言上文《Netty 編程看上去懵懵的...》通過比較 Java NIO 和 Netty 的工作流程,并結合 Netty 的源碼,可以更加清晰地理解Netty。本文將結合源碼詳細解析Netty的高效和強大功能的設計原理,學習 Netty 是如何實現其卓越的

前言

上文《Netty 編程看上去懵懵的...》通過比較 Java NIO 和 Netty 的工作流程,并結合 Netty 的源碼,可以更加清晰地理解Netty。本文將結合源碼詳細解析Netty的高效和強大功能的設計原理,學習 Netty 是如何實現其卓越的性能和功能特性,也希望可以在日后工作中利用到 Netty 的設計思想。xKR28資訊網——每日最新資訊28at.com

Netty 解決的問題

我們先看看使用 Netty 在網絡編程中幫助我們解決了什么問題。xKR28資訊網——每日最新資訊28at.com

簡化網絡編程

首先,基于 Netty 初次編碼的直觀體驗來講,開發者不用手動處理網絡通信細節,包括線程管理、I/O 處理、協議解析等,可以專注于業務邏輯的實現。也正是因為如此,在學習 Netty 時比較抽象難懂 。xKR28資訊網——每日最新資訊28at.com

如下圖,可以看到 Java NIO 的代碼大概有 80 行,而且還沒有實現 HTTP 協議,并且還是單線程,沒有復雜的線程管理,更不用說性能什么的。xKR28資訊網——每日最新資訊28at.com

而 Netty 實現的代碼只有 30 多行,其中的差別一目了然。xKR28資訊網——每日最新資訊28at.com

圖片圖片xKR28資訊網——每日最新資訊28at.com

粘包和拆包

我們一般說粘包和拆包都是說 TCP 協議的問題,因為當用戶消息通過 UDP 協議傳輸時,操作系統不會對消息進行拆分,所以發送出去的一條 UDP 報文就是完整的用戶消息,也就是每個 UDP 報文就是用戶消息的邊界。xKR28資訊網——每日最新資訊28at.com

而當用戶消息通過 TCP 協議傳輸時,消息可能會被操作系統分組成多個的 TCP 報文進行傳輸,這個時候接收方收到多個報文后,由于不知道消息的邊界,也就無法讀出一個完整的消息。xKR28資訊網——每日最新資訊28at.com

舉個例子,當發送方準備發送 「Hi」和「I am Erdan」這兩個消息,由于MTU限制、緩沖區的大小等條件,可能會出現幾種情況:xKR28資訊網——每日最新資訊28at.com

第一種情況,兩條消息分到一個報文中,像這樣:xKR28資訊網——每日最新資訊28at.com

圖片圖片xKR28資訊網——每日最新資訊28at.com

第二種情況,「I am Erdan」中的部分消息隨「Hi」被分到一個報文中,像這樣:xKR28資訊網——每日最新資訊28at.com

圖片圖片xKR28資訊網——每日最新資訊28at.com

還可能會有第三、四...種情況。xKR28資訊網——每日最新資訊28at.com

當接收方接收到第一種情況時我們稱之為粘包,第二種情況稱之為拆包。xKR28資訊網——每日最新資訊28at.com

上面的種種情況表明,一個用戶消息不能對應一個 TCP 報文,正因為這樣,所以 TCP 是面向字節流的協議。xKR28資訊網——每日最新資訊28at.com

粘包和拆包解決手段

解決粘包和拆包的根本手段就是找出消息的邊界,有幾種方式:xKR28資訊網——每日最新資訊28at.com

  • 固定消息長度,這種方式靈活性不高,實際中很少用。
  • 特殊字符作為邊界,HTTP 是一個非常好的例子,通過設置回車符、換行符作為 HTTP 報文協議的邊界。
  • 自定義消息結構:消息頭消息體,可以自定義一個消息結構,由包頭和數據組成,其中包頭包是固定大小的,而且包頭里有一個字段來說明緊隨其后的數據有多大。

圖片圖片xKR28資訊網——每日最新資訊28at.com

HTTP格式xKR28資訊網——每日最新資訊28at.com

Netty的編解碼器

Netty 提供了固定長度解碼器(FixedLengthFrameDecoder)、行分隔符解碼器(LineBasedFrameDecoder)、分隔符解碼器(DelimiterBasedFrameDecoder)、基于長度字段的解碼器(LengthFieldBasedFrameDecoder)幾種方式來解決粘包問題,可以結合 Netty 的 ChannelPipeline 來使用。xKR28資訊網——每日最新資訊28at.com

除此之外 Netty 也提供了 HTTP、WebSocket、TCP、UDP幾種協議的編解碼器,這也是 Netty 靈活擴展強大之處。xKR28資訊網——每日最新資訊28at.com

高性能的設計

Netty 除了幫助開發人員解決了一些問題,還提高了網絡編程性能,體現如下xKR28資訊網——每日最新資訊28at.com

多線程調度

在網絡編程中如果使用單線程來處理,即便是IO多路復用,吞吐和性能也是會有局限的。xKR28資訊網——每日最新資訊28at.com

而 Netty 中通過 EventLoopGroup 管理線程池,每個線程就是一個 EventLoop。EventLoop 內部有一個 Selector 負責處理一個或多個 Channel 的注冊、讀寫和其他事件。xKR28資訊網——每日最新資訊28at.com

所以 Netty 通過 EventLoopGroup、EventLoop 和 Selector 的配合工作,實現了高效的并發處理能力。xKR28資訊網——每日最新資訊28at.com

圖片圖片xKR28資訊網——每日最新資訊28at.com

線程安全保障

既然是多線程處理,肯定要去考慮線程安全以確保程序的正確性。xKR28資訊網——每日最新資訊28at.com

Netty 是如何保障線程安全的?xKR28資訊網——每日最新資訊28at.com

Netty 通過使用管道(ChannelPipeline)和處理器(ChannelHandler)的方式來實現數據的處理和流轉。而 ChannelHandler 會被分配給一個 EventLoop 處理, EventLoop 內部的數據結構和狀態都是線程封閉的,不會被其他線程訪問或修改。xKR28資訊網——每日最新資訊28at.com

所以 Netty 通過合理地設計組件之間的關系,通過單線程執行、無鎖設計等方式保證了在高并發情況下的線程安全性。xKR28資訊網——每日最新資訊28at.com

零拷貝

在傳統的網絡編程中,數據在進行網絡傳輸之前需要從應用層緩沖區復制到操作系統內核的緩沖區,然后再從內核的緩沖區復制到網絡設備的緩沖區。這種復制操作會增加 CPU 的負載和內存的開銷,如下圖xKR28資訊網——每日最新資訊28at.com

圖片圖片xKR28資訊網——每日最新資訊28at.com

而 Netty 利用零拷貝技術來減少數據復制的次數,提高了數據傳輸的效率。xKR28資訊網——每日最新資訊28at.com

零拷貝將數據從內核空間直接傳輸到網絡適配器,避免了數據在內核空間和用戶空間之間的復制,從而減少了CPU的負擔。如下圖xKR28資訊網——每日最新資訊28at.com

圖片圖片xKR28資訊網——每日最新資訊28at.com

Netty的零拷貝體現在以下幾個方面:xKR28資訊網——每日最新資訊28at.com

  • 零拷貝文件傳輸:Netty 的 FileRegion 接口提供了直接在文件系統和網絡之間傳輸數據的功能。通過使用零拷貝技術,數據可以直接從磁盤讀取并發送到網絡設備,避免了中間的緩沖區拷貝,提高了文件傳輸的性能。
  • 零拷貝內存傳輸:Netty 的 ByteBuf 類型支持零拷貝的內存傳輸。當數據在應用程序和內核之間傳輸時,Netty 使用直接內存緩沖區(Direct ByteBuffer)來避免額外的數據拷貝操作,提高了內存傳輸的效率。

通過以上方式,Netty 實現了零拷貝技術在網絡編程中的應用,提高了數據傳輸的效率和性能。這使得 Netty 在處理大量數據傳輸和高并發場景下具有更好的性能表現。xKR28資訊網——每日最新資訊28at.com

總結

總的來說,Netty 不論在功能、性能以及穩定性來講都是一款很nice的網絡編程框架,很多知名的項目都將 Netty 作為其網絡通信的底層框架,比如Apache Kafka、Elasticsearch、gRPC、Dubbo等。熟悉這些框架的開發者通常都具備高并發開發經驗,并且掌握 Netty 是理解這些框架的重要基礎之一。xKR28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-79838-0.htmlNetty:我為啥這么受歡迎你們不知道嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 野心、夢想與科幻——淺談外星殖民與軟件工程

下一篇: 如何使用Node.js和Web?3.0構建去中心化應用程序

標簽:
  • 熱門焦點
  • K8S | Service服務發現

    一、背景在微服務架構中,這里以開發環境「Dev」為基礎來描述,在K8S集群中通常會開放:路由網關、注冊中心、配置中心等相關服務,可以被集群外部訪問;圖片對于測試「Tes」環境或者
  • 分享六款相見恨晚的PPT模版網站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網站旨在為全球Office用戶提供豐富的高品質原創PPT模板、實用文檔、數據圖表及個性化定制服務。優點:OfficePLUS是微軟官方網站,囊括PPT模板、Word模
  • 量化指標是與非:挽救被量化指標扼殺的技術團隊

    作者 | 劉新翠整理 | 徐杰承本文整理自快狗打車技術總監劉新翠在WOT2023大會上的主題分享,更多精彩內容及現場PPT,請關注51CTO技術棧公眾號,發消息【WOT2023PPT】即可直接領取
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 華為Mate60標準版細節曝光:經典星環相機模組回歸

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 蘋果公司要求三星和LG Display生產「無邊框」OLED iPhone顯示屏

    據 The Elec 報道,蘋果已要求其供應商為未來的 iPhone 型號開發「無邊框」OLED 顯示面板。蘋果顯然已要求三星和 LG Display 開發新的 OLED 顯示面
  • 三星顯示已開始為AR設備研發硅基LED微顯示屏

    7月18日消息,據外媒報道,隨著蘋果首款頭顯產品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產品也就將成為各大公司下一個重要的競爭領域,對顯示屏這一關
  • iQOO Neo8 Pro即將開售:到手價3099元起 安卓性能最強旗艦

    5月23日,iQOO如期舉行了新品發布會,全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更
  • 微軟發布Windows 11新版 引入全新任務欄狀態

    近日,微軟發布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務欄等,系統更流暢了。更新中,Windows 11加入了專門針對平板優化的任務欄
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美日韩精品高清| 欧美二区乱c少妇| 国产欧美日韩亚州综合| 亚洲激情影视| 国产精品久久毛片a| 男男成人高潮片免费网站| 欧美一区三区二区在线观看| 亚洲精选久久| 经典三级久久| 国产九区一区在线| 欧美日韩一区二区三区在线视频| 久久午夜电影网| 欧美一级视频精品观看| 中文av一区特黄| 亚洲黄色尤物视频| 国内精品一区二区| 国产精品综合网站| 国产精品永久免费在线| 在线成人性视频| 今天的高清视频免费播放成人 | 久久久久久伊人| 久久精品日韩一区二区三区| 欧美一区二区三区日韩视频| 模特精品在线| 欧美成人在线免费观看| 国产精品成人一区二区三区吃奶| 欧美日韩免费观看一区三区| 欧美风情在线观看| 国产精品主播| 亚洲精品久久久久| 999亚洲国产精| 99精品视频免费全部在线| 欧美在线视频网站| 久久精品91久久久久久再现| 久久激情综合网| 欧美日韩裸体免费视频| 国产综合久久久久久| 欧美日韩国产高清视频| 欧美久久久久久久久久| 欧美日韩精品一二三区| 国模精品一区二区三区色天香| 一区二区欧美在线观看| 中日韩美女免费视频网址在线观看| 一卡二卡3卡四卡高清精品视频 | 国产精品成人av性教育| 国产精品电影观看| 亚洲国产天堂久久综合网| 性久久久久久久久| 久久综合色一综合色88| 欧美久久一区| 欧美四级剧情无删版影片| 国产女人aaa级久久久级| 亚洲精品看片| 久久综合网hezyo| 欧美大胆成人| 欧美亚州一区二区三区| 国产一区久久久| 亚洲一区二区三区四区五区黄 | 欧美成人网在线| 欧美片在线观看| 国产精品久久久免费| 国产性猛交xxxx免费看久久| 136国产福利精品导航| 一本不卡影院| 欧美一级大片在线免费观看| 欧美日韩在线免费观看| 亚洲人成亚洲人成在线观看图片| 一区二区日韩精品| 西西裸体人体做爰大胆久久久| 亚洲特级片在线| 久久九九电影| 欧美日韩在线一区二区| 国产在线观看一区| 午夜精品久久久久久久99水蜜桃 | 欧美日韩视频在线| 国产欧美日韩视频在线观看| 亚洲在线成人| 老司机一区二区三区| 国一区二区在线观看| 91久久精品国产91久久性色| 在线中文字幕不卡| 欧美日韩理论| 亚洲一区二区精品在线| 国产精品高潮呻吟| 亚洲在线一区二区三区| 国产精品日韩欧美| 亚洲国产日韩欧美| 免费在线观看精品| 亚洲国产美女| 欧美一区国产在线| 欧美国产一区二区在线观看| 国产精品一级二级三级| 亚洲欧美日韩国产另类专区| 欧美国产日韩亚洲一区| 国产亚洲欧洲997久久综合| 亚洲美女毛片| 欧美日韩成人综合在线一区二区| 日韩视频精品在线| 久久久久久夜精品精品免费| 欧美成人第一页| 亚洲精品婷婷| 久久久久久亚洲精品中文字幕| 激情欧美一区二区三区| 免费一级欧美片在线播放| 亚洲欧洲在线一区| 久久综合精品一区| 国产美女一区二区| 久久久国产亚洲精品| 亚洲国产精品久久精品怡红院| 欧美在线播放视频| 一区免费观看视频| 亚洲欧美卡通另类91av| 欧美久久久久久| 中国成人黄色视屏| 国产欧美精品日韩| 亚洲手机成人高清视频| 国产伦精品一区二区| 一区二区三区四区五区视频| 国产精品毛片高清在线完整版| 欧美一区二区三区啪啪| 亚洲国产精品成人va在线观看| 欧美精品一区三区在线观看| 亚洲字幕一区二区| 欧美午夜电影在线| 日韩写真在线| 欧美日韩国产小视频| 午夜精品视频在线观看| 在线视频国产日韩| 久久久五月天| 韩国成人福利片在线播放| 欧美插天视频在线播放| 亚洲视频专区在线| 狠狠色2019综合网| 久久青草欧美一区二区三区| 亚洲美女中出| 国产亚洲激情视频在线| 久久国产福利国产秒拍| 亚洲人妖在线| 国产美女一区| 欧美破处大片在线视频| 欧美在线一级视频| 日韩视频在线一区二区三区| 国产日韩欧美自拍| 久久九九国产| 99精品国产高清一区二区 | 黄色成人免费观看| 久久―日本道色综合久久| 樱桃成人精品视频在线播放| 欧美日韩免费精品| 久久久综合香蕉尹人综合网| 亚洲网友自拍| 亚洲国产日日夜夜| 国产欧美在线视频| 欧美日韩免费高清| 另类专区欧美制服同性| 亚洲久久成人| 欧美日韩在线视频一区| 亚洲在线不卡| 亚洲日本一区二区三区| 国产一区二区三区四区五区美女| 欧美全黄视频| 麻豆国产va免费精品高清在线| 亚洲欧洲精品一区二区三区不卡 | 欧美亚洲在线| 日韩视频在线免费| 一区二区三区我不卡| 国产精品一区二区男女羞羞无遮挡 | 欧美在线一二三| 伊人男人综合视频网| 女女同性精品视频| 99国产精品久久久久老师| 国产精品你懂的| 久久久欧美精品sm网站| 亚洲影院在线| 狠狠噜噜久久| 国产精品亚洲精品| 欧美日韩情趣电影| 欧美v日韩v国产v| 久久久久天天天天| 欧美一级夜夜爽| 亚洲专区一区| 在线中文字幕一区| 日韩视频在线观看一区二区| 亚洲第一福利在线观看| 欧美日韩在线第一页| 欧美高清在线观看| 麻豆精品精华液| 久久久亚洲欧洲日产国码αv| 欧美一区二区三区喷汁尤物| 91久久线看在观草草青青| 国产精品乱人伦一区二区| 久久综合精品国产一区二区三区| 羞羞视频在线观看欧美| 亚洲欧美日韩精品久久久| 亚洲高清视频一区二区| 国内自拍亚洲| 狠狠色噜噜狠狠色综合久| 国产亚洲午夜| 国产亚洲一区二区三区| 欧美日韩精品一区二区在线播放| 欧美xart系列高清| 欧美成年人视频网站| 欧美成人精品三级在线观看| 欧美成人午夜激情视频|