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

Netty 簡(jiǎn)介

圖片描述

1. 什么是 Netty

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

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

2. 市場(chǎng)占比

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

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

3. Netty 特性

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

4. Netty 版本

目前 Netty 主要有三個(gè)大的版本

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

5. 為什么要學(xué)習(xí) Netty

學(xué)習(xí) Netty 的好處是什么呢?

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

6. 學(xué)習(xí)基礎(chǔ)

Netty 非常的復(fù)雜,不建議剛參加工作的同學(xué)直接學(xué)習(xí)它,這樣會(huì)給自己在學(xué)習(xí)上增加難度。

列舉一些學(xué)習(xí) Netty 之前最好先掌握的技術(shù)點(diǎn):

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

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