1.netty是什么
在官網(wǎng)地址https://netty.io/梦碗,我們可以詳細(xì)的看到 關(guān)于Netty的相關(guān)介紹疮薇,這里做一個簡單的翻譯般码。
Netty is?an asynchronous event-driven network application framework? for rapid development of maintainable high performance protocol servers & clients.
Netty是一個異步的事件驅(qū)動網(wǎng)絡(luò)應(yīng)用框架胰伍,用來快速開發(fā)可維護的高可用的協(xié)議服務(wù)端和客戶端蚊锹。
這句話是netty簡介的標(biāo)題,同時也是對netty總體的一個概括。
Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.'
Quick and easy' doesn't mean that a resulting application will suffer from a maintainability or a performance issue. Netty has been designed carefully with the experiences earned from the implementation of a lot of protocols such as FTP, SMTP, HTTP, and various binary and text-based legacy protocols. As a result, Netty has succeeded to find a way to achieve ease of development, performance, stability, and flexibility without a compromise.
這兩段話是對于netty的詳細(xì)介紹慌盯,
Netty基于NIO的客戶端和服務(wù)端的框架能夠快速、簡單的搭建協(xié)議的服務(wù)端和客戶端的網(wǎng)絡(luò)應(yīng)用掂器,大大減少了網(wǎng)絡(luò)部分的開發(fā)亚皂。
同時在保證快速、簡單的同時也沒有忽略應(yīng)用的可維護性国瓮、高性能灭必,通過對各種協(xié)議的經(jīng)驗總結(jié),找到了一種不妥協(xié)的簡單乃摹、高性能禁漓、穩(wěn)定、靈活的方法孵睬。
最后總結(jié)一下播歼,netty本質(zhì)就是一個網(wǎng)絡(luò)應(yīng)用開發(fā)的框架,基于異步掰读、事件驅(qū)動實現(xiàn)秘狞,能夠快速、簡單幫我們開發(fā)高性能蹈集、可維護的網(wǎng)絡(luò)服務(wù)器和客戶端烁试。
2.netty做什么
其實這個在上面netty介紹已經(jīng)描述了,Netty可以幫助我們開發(fā)高性能拢肆、可維護的網(wǎng)絡(luò)服務(wù)器和客戶端减响。
那么基于Netty開發(fā)的軟件有哪些呢?
我們可以看一下Netty的Git上面描述的3rd-party projects Related projects
其中列舉幾個我們熟悉的包括Elaticsearch搜索引擎郭怪、Dubbo分布式框架支示、gRpc框架、分布式調(diào)度Zookeeper移盆、Spark悼院、Hadoop、RocketMQ咒循。
3.netty優(yōu)點
在Netty官網(wǎng)上面我們可以看到Netty描述的相關(guān)特點据途,其實也是映射到我們這里提到的優(yōu)點,主要提到一下五個方面:
Design(設(shè)計方面)
1.對各種協(xié)議叙甸、阻塞颖医、非阻塞通信統(tǒng)一的API(這一方面體現(xiàn)Netty對API的提供完善、以及命名的規(guī)范裆蒸,后續(xù)會詳細(xì)分析源碼)
2.基于靈活和可配置化的事件驅(qū)動模型熔萧,讓我們清晰的分離關(guān)注點(比如拆包、序列化、日志佛致、業(yè)務(wù)處理贮缕、心跳檢測)
3.高度可定制的線程模型(主要體現(xiàn)在對于JDK的Executor的各種擴展支持)
4.對于無連接數(shù)據(jù)套接字的支持Since3.1
Ease of use(易用性)
1.完善的文檔、用戶指南俺榆、代碼Demo
2.接口的封裝使得我們上手比較容易
Performance(性能)
1.高吞吐量感昼、低延遲
2.更少的資源消耗(池化技術(shù)在Netty中使用頻繁)
3.最小化不必要的內(nèi)存復(fù)制(零COPY)
Security(安全)
1.完善的SSL/TLS和StartTLS支持
Community(社區(qū))
1.開源的早、并且在持續(xù)的更新(可以參考一下Netty的活躍度排行榜以及Commit提交歷史)
4.架構(gòu)
這張圖的Netty官網(wǎng)的一張架構(gòu)圖罐脊,主要分為三個部分
1.Core核心層
1.支持零復(fù)制豐富的Byte Buffer
2.標(biāo)準(zhǔn)統(tǒng)一的通信API
3.可擴展的事件模型
2.傳輸層服務(wù)
1.TCP的Socket以及UDP的Datagram
2.HttpTunnel (有興趣的了解一下)
3.IN-VM Pipe
3.支撐層
1.包括擴展的協(xié)議 例如HTTP定嗓、WebSocket
2.支撐的服務(wù) 例如序列化、解壓縮等