即時通訊技術文集(第9期):Java NIO和Netty入門系列 [共19篇]

JackJiang發表於2023-03-03
為了更好地分類閱讀52im.net 總計1000多篇精編文章,我將在每週三推送新的一期技術文集,本次是第9 期。

[-1-] 少囉嗦!一分鐘帶你讀懂Java的NIO和經典IO的區別

[連結] http://www.52im.net/thread-26...

[摘要] 在本文中,將嘗試用簡明扼要的文字,闡明Java NIO和經典IO之間的差異、典型用例,以及這些差異如何影響我們的網路程式設計或資料傳輸程式碼的設計和實現的。

[-2-] 史上最強Java NIO入門:擔心從入門到放棄的,請讀這篇!

[連結] http://www.52im.net/thread-26...

[摘要] 本文作者厚積薄發,以遠比一般的技術部落格或技術作者更深厚的Java技術儲備,為你由淺入深,從零講解到底什麼是Java NIO。本文即使沒有多少 Java 程式設計經驗的讀者也能很容易地開始學習 NIO。

[-3-]Java的BIO和NIO很難懂?用程式碼實踐給你看,再不懂我轉行!

[連結] http://www.52im.net/thread-28...

[摘要]本文不會提到很多Java NIO和Java BIO的理論概念(需要的話請參見本文的“相關文章”一節),而是站在編碼實踐的角度,透過程式碼例項,總結了我自己對於Java NIO的見解。有了程式碼實踐的過程後再重新回頭看理論概念,會有一個不一樣的理解視角,希望能助你吃透它們!

[-4-]Java新一代網路程式設計模型AIO原理及Linux系統AIO介紹

[連結] http://www.52im.net/thread-30...

[摘要] 從JDK 7版本開始,Java新加入的檔案和網路io特性稱為nio2(new io 2, 因為jdk1.4中已經有過一個nio了),包含了眾多效能和功能上的改進,其中最重要的部分,就是對非同步io的支援,稱為Java AIO(asynchronous IO)。因為AIO的實施需充分呼叫OS參與,IO需要作業系統支援、併發也同樣需要作業系統的支援,所以效能方面不同作業系統差異會比較明顯。所以本文也附帶介紹了Linux 2.6及以後版本新增的AIO特性(因為這跟Java AIO是對應關係)。

[-5-] 新手入門:目前為止最透徹的的Netty高效能原理和框架架構解析

[連結] http://www.52im.net/thread-20...

[摘要] Netty 是一個廣受歡迎的非同步事件驅動的Java開源網路應用程式框架,用於快速開發可維護的高效能協議伺服器和客戶端。本文基於 Netty 4.1 展開介紹相關理論模型,使用場景,基本元件、整體架構,知其然且知其所以然,希望給大家在實際開發實踐、學習開源專案方面提供參考。

[-6-] 寫給初學者:Java高效能NIO框架Netty的學習方法和進階策略

[連結] http://www.52im.net/thread-21...

[摘要]Netty 入門相對簡單,但是要在實際專案中用好它,出了問題能夠快速定位和解決,卻並非易事。只有在入門階段紮實的學好 Netty,後面使用才能夠得心應手。

[-7-] Netty 4.x學習(一):ByteBuf詳解

[連結] http://www.52im.net/thread-99...

[摘要]ByteBuf提供了一些較為豐富的實現類,邏輯上主要分為兩種:HeapByteBuf和DirectByteBuf,實現機制則分為兩種:PooledByteBuf和UnpooledByteBuf,除了這些之外,Netty還實現了一些衍生ByteBuf(DerivedByteBuf),如:ReadOnlyByteBuf、DuplicatedByteBuf以及SlicedByteBuf。

[-8-] Netty 4.x學習(二):Channel和Pipeline詳解

[連結] http://www.52im.net/thread-10...

[摘要]Channel概念與java.nio.channel概念一致,用以連線IO裝置(socket、檔案等)的紐帶。Netty 4.x之後的Channel變化較大,官方的唬人的說法是無法透過簡單的關鍵字替換進行遷移。用得較多應該是:ChannelHandler介面重新設計,換了個較為清晰的名字;write不會主動flush。由於筆者3.x、4.x都沒用過,所以也無法深入理解版本的變化了。

[-9-] Netty 4.x學習(三):執行緒模型詳解

[連結] http://www.52im.net/thread-98...

[摘要]為了更好的學習和理解Netty的執行緒模型,我在這裡稍微詳細的說一下我對它的理解。Reactor模式有多個變種,Netty基於Multiple Reactors模式(如下圖)做了一定的修改,Mutilple Reactors模式有多個reactor:mainReactor和subReactor,其中mainReactor負責客戶端的連線請求,並將請求轉交給subReactor,後由subReactor負責相應通道的IO請求,非IO請求(具體邏輯處理)的任務則會直接寫入佇列,等待worker threads進行處理。

[-10-]詳解Netty的安全性:原理介紹、程式碼演示(上篇)

[連結] http://www.52im.net/thread-42...

[摘要] 作為一個高效能的NIO通訊框架,基於Netty的行業應用非常廣泛,不同的行業、不同的應用場景,面臨的安全挑戰也不同,下面我們根據Netty的典型應用場景,分析下Netty面臨的安全挑戰。

[-11-] 詳解Netty的安全性:原理介紹、程式碼演示(下篇)

[連結] http://www.52im.net/thread-42...

[摘要] 接上篇《詳解Netty的安全性:原理介紹、程式碼演示(上篇)》

[-12-] 詳解Netty的優雅退出機制和原理

[連結] http://www.52im.net/thread-34...

[摘要]“退出”是每個程式的必備功能,因為太平常,多數程式設計師都對這不以為然。但在大型分散式應用中,因各模組、服務等都是分散式部署和協作,這種RPC式的場景下,如何讓某個模組或服務優雅地“退出”,則遠非呼叫一個Kill指令這麼簡單。本文將詳述NIO框架Netty是如何實現“優雅”地“退出”的。

[-13-] NIO框架詳解:Netty的高效能之道

[連結] http://www.52im.net/thread-40...

[摘要]下面我們就一起來看下Netty是如何支援10W TPS的跨節點遠端服務呼叫的。

[-14-] Twitter:如何使用Netty 4來減少JVM的GC開銷(譯文)

[連結] http://www.52im.net/thread-97...

[摘要] 可能有的人還沒聽說過Netty,它是一款開源的Java NIO框架,能讓你更容易編寫出高效能的網路伺服器。前一個版本的Netty 3使用Java物件來表示IO事件。這樣做比較簡單,但會產生大量的垃圾,尤其是在我們這種規模下。最新的版本Netty 4中做了一些改進,短生命週期的事件物件已經不復存在了,而是透過生命週期較長的管道物件來處理IO事件。 同時還有一個專門的緩衝區分配器,它使用緩衝區池來進行實現。我們非常關注Netty專案的效能,可用性以及可持續性,也和Netty社群緊密合作以便全方位的對它進行完善。這裡我們特別會提到的是,我們是如何使用Netty 3的,以及專案移植到Netty 4後帶來的效能提升。

[-15-] 手把手教你用Netty實現網路通訊程式的心跳機制、斷線重連機制

[連結] http://www.52im.net/thread-26...

[摘要] 說到用Netty來開發IM或推送系統,以一個生產級產品的標準來說,最基本的心跳機制、斷線重連機制肯定得有吧?好,如果你還不清楚這些,那就看看本文吧!

[-16-] 史上最通俗Netty框架入門長文:基本介紹、環境搭建、動手實戰

[連結] http://www.52im.net/thread-32...

[摘要] 本文適合對Netty一無所知的Java NIO網路程式設計新手閱讀,為了做到這一點,內容從最基本介紹到開發環境的配置,再到第一個Demo程式碼的編寫,事無鉅細都用詳細的圖文進行了說明。

[-17-] 絕對乾貨:基於Netty實現海量接入的推送服務技術要點

[連結] http://www.52im.net/thread-16...

[摘要] 最近很多從事移動網際網路和物聯網開發的同學給我發郵件或者微博私信我,諮詢推送服務相關的問題。由於諮詢者眾多,關注點也比較集中,我希望透過本文的案例分析和對推送服務設計要點的總結,幫助大家在實際工作中少走彎路。

[-18-] 長連線閘道器技術專題(一):京東京麥的生產級TCP閘道器技術實踐總結

[連結] http://www.52im.net/thread-12...

[摘要] 本文重點介紹京麥TCP閘道器的技術架構及Netty的應用實踐。

[-19-] 長連線閘道器技術專題(五):喜馬拉雅自研億級API閘道器技術實踐

[連結] http://www.52im.net/thread-35...

[摘要] 本文將分享在喜馬拉雅API閘道器在億級流量前提下,進行的技術演進發展歷程和實踐經驗總結。

?52im社群本週新文:《不為人知的網路程式設計(十五):深入作業系統,一文搞懂Socket到底是什麼 http://www.52im.net/thread-41...》,歡迎閱讀!?

我是Jack Jiang,我為自已帶鹽!https://github.com/JackJiang2...

相關文章