第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Netty 簡介

圖片描述

1. 什么是 Netty

Netty 是由 JBOSS 提供的一個 Java 開源通訊框架,用以快速開發(fā)高性能、高可靠性的網(wǎng)絡 IO 程序。它底層很好地封裝了 Socket,處理網(wǎng)絡通信的一個開源通信框架。通俗說明,Netty 就是解決兩個系統(tǒng)之間互相通信的一個框架。
在 Java 領域 Netty 運用非常地廣泛,Tomcat、Dubbo、RocketMQ、Zookeeper、Spark、Flink、ElasticSearch 等等這些中間件的網(wǎng)絡通訊框架都是基于 Netty 去實現(xiàn)的。

其中 Netty 只是對 Java 原生的通信框架進行了高度的封裝,如下圖所示:
圖片描述

2. 市場占比

在 Java 語言當中 Netty 基本上是一支獨大,涉及到網(wǎng)絡通信基本上都是使用 Netty,很少去直接使用 NIO 或者其它類似的第三方框架,目前和 Netty 同一級別的框架主要是 mina,其實 mina 和 Netty 都是同一個人開發(fā)的,Netty 比 mina 更晚出現(xiàn),因此推薦 Netty。
相比 mina 那么 Netty 的優(yōu)勢是什么呢?

  1. Mina 將內(nèi)核和一些特性的聯(lián)系過于緊密,使得用戶在不需要這些特性的時候無法脫離,相比之下性能會有所下降,Netty 解決了這個設計問題;
  2. Netty 的文檔更清晰,很多 Mina 的特性在 Netty 里都有;
  3. Netty 比 Mina 使用起來更簡單,如果上手只需要掌握模板代碼 + 自定義 Handler 即可;
  4. 它們的架構(gòu)差別不大,Mina 靠 apache 生存,而 Netty 靠 jboss。Netty 有對 google protocal buf 的支持,有更完整的 IOC 容器支持。

3. Netty 特性

特性 說明
完美設計 基于靈活、可擴展的事件驅(qū)動模型,可以靈活切換底層的線程模型、IO 模型等
高性能 高吞吐量、低延遲,盡量減少不必要的內(nèi)存拷貝
健壯性 1. 消除由于慢,快,或重載連接產(chǎn)生的 OutOfMemoryError;2. 消除經(jīng)常發(fā)生在 NIO 在高速網(wǎng)絡中的應用中的不公平的讀 / 寫比
易用性 1. 完善的文檔;2. 活躍的社區(qū);3. 簡單的 API 讓開發(fā)者能夠快速入門
內(nèi)置功能 1. 支持多種協(xié)議;2. 內(nèi)置很多的編解碼器;3. 內(nèi)置很多的拆包器
心跳檢測 I/O 超時和 idle 狀態(tài)檢測
安全性 1. 解決了 NIO 存在的空輪詢問題;2. 更可靠的 OutOfMemoryError 預防;3. 應用程序的關閉更簡單,更安全

4. Netty 版本

目前 Netty 主要有三個大的版本

  • 3.x 版本;
  • 4.x 版本;
  • 5.x 版本;
  • 三大版本的差異比較大,目前項目開發(fā)的主流版本是 4.x,因此也建議大家主要學習 4.x 這個版本。

5. 為什么要學習 Netty

學習 Netty 的好處是什么呢?

  1. 掌握 Netty 及其原理,可以為自己找工作、面試時加分。并且讓自己的技能得到進階,是初中級邁向高級的門檻;
  2. 有助于學習和理解主流中間件的架構(gòu)思想,很多的中間件都是基于 Netty 去開發(fā)的,比如:Dubbo;
  3. Netty 用來系統(tǒng)網(wǎng)絡通信功能,是系統(tǒng)的基石,往往決定一個系統(tǒng)的性能,能否扛得住并發(fā);
  4. 對于學習和理解分布式架構(gòu)會有很大的幫助,分布式架構(gòu)下最核心環(huán)節(jié)就是應用之間的通訊。

6. 學習基礎

Netty 非常的復雜,不建議剛參加工作的同學直接學習它,這樣會給自己在學習上增加難度。

列舉一些學習 Netty 之前最好先掌握的技術點:

  1. 掌握多線程、線程池的使用;
  2. 掌握傳統(tǒng) IO(BIO)的使用,以及了解網(wǎng)絡 IO 和磁盤 IO 的基本使用;
  3. 掌握 Socket 的客戶端和服務端之間通訊實現(xiàn),了解其缺點是什么;
  4. 掌握 NIO 的思想,和 BIO 比較 NIO 的優(yōu)勢以及如何基于 NIO 去操作磁盤文件和網(wǎng)絡通訊,核心組件 Buffer、Channel、Selector 的使用;
  5. 掌握什么是直接緩沖區(qū)、非直接緩沖區(qū)、零拷貝;
  6. 掌握什么是序列化,序列化的原理、常用技術;
  7. 了解 TCP 協(xié)議、Http 協(xié)議之間的聯(lián)系、大概原理;
  8. 了解 IO 的多路復用大致原理,Epoll 的大概原理;
  9. 了解什么是長連接、短連接的概念和區(qū)別,以及它們的應用場景。

以上是列出一些可以說必備的技術點,掌握之后再去學習 Netty 將會非常的容易。
關注慕課網(wǎng)了解更多更優(yōu)質(zhì)的Netty教程。