# Netty的学习之旅
## 学习的关键点:
### 强势技能的学习
### 重视基础
### 节奏感
### 思维方式的改进
思维方式的改变, 总结遇到的情况,要以不同的角度去思考问题
### 效率工具的使用
VPN
### 主动输出
分享
# Netty
概念:
Netty is an asynchronous event-driven network application framework
for rapid development of maintainable high performance protocol servers & clients.
Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。
Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化并简化了TCP和UDP套接字服务器等网络编程。
“快速简便”并不意味着最终的应用程序会受到可维护性或性能问题的影响。Netty经过精心设计,具有丰富的协议,
如FTP,SMTP,HTTP以及各种二进制和基于文本的传统协议。因此,Netty成功地找到了一种在不妥协的情况下实现易于开发,性能,稳定性和灵活性的方法。
**特征**
一、设计
1、适用于各种传输类型的统一API - 阻塞和非阻塞套接字
2、基于灵活且可扩展的事件模型,可以清晰地分离关注点
3、高度可定制的线程模型 - 单线程,一个或多个线程池,如SEDA
4、真正的无连接数据报套接字支持(自3.1起)
二、便于使用
1、详细记录的Javadoc,用户指南和示例
2、没有其他依赖项,JDK 5(Netty 3.x)或6(Netty 4.x)就足够了
注意:某些组件(如HTTP / 2)可能有更多要求。 有关更多信息,请参阅 “要求”页面。
三、性能
1、更高的吞吐量,更低的延迟
2、减少资源消耗
3、最小化不必要的内存复制
四、安全
1、完整的SSL / TLS和StartTLS支持
五、社区
1、早发布,经常发布
2、自2003年以来,作者一直在编写类似的框架,他仍然发现你的反馈很珍贵!
---------------------------------------------
异步同步的区别:
---------------------------------------------
事件驱动:
## Netty介绍
## Netty架构实现
## Netty模块分析
## Netty Http Tunnel
## Netty对Socket的实现
## Netty压缩与解压缩
--
对数据传输过程中的压缩
## Netty对于RPC的支持
## WebSocket实现与原理分析
## WebSocket连接建立方式与生命周期分解
## WebSocket服务端和客户端开发
## RPC框架分析
## Google Protobuf使用方式分析
## Apache Thrift使用方式与文件编写方式分析
## Netty大文件传送支持
## 可扩展的事件模型
## Netty统一通信API
## 零拷贝在Netty中的实现与支持
## TCP粘包与拆包分析
## NIO模型在Netty中的实现
## Netty编码开发技术
## Netty重要类与接口源代码剖析
## Channel分析
## 序列化讲解
## 注意:
springboot 2.1.5 + netty 4.1.10.Final 会报错java.lang.ClassNotFoundException: jdk.internal.misc.Unsafe
springboot 2.1.5 + netty 4.1.32.Final
```
使用curl发送请求:
curl "http://localhost:8899" (默认GET请求)
curl -X POST "http://localhost:8899"
curl -X PUT "http://localhost:8899"
curl -X DETELE "http://localhost:8899"
channel的执行顺序流程 :
channel added 添加
channel registered 注册
channel active 激活
请求方法名: GET 执行channelRead0
channel inactive 未激活
channel unregistered 未注册
浏览器的执行机制和curl是不一样的
```
## Netty(Current Study)
🍎 Netty的介绍
-- 1) Netty是由JBOSS提供的一个Java开源框架,现为GitHub上的独立项目。
-- 2) Netty是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络IO程序
-- 3) Netty主要是针对TCP协议下,面向Clients端的高并发应用,或者peer-to-peer场景下的大量数据持续传输的应用。
-- 4) Neety本质是一个NIO框架,适用于服务器通讯相关的多种应用场景。
-- 5) 要透彻理解Netty,需要先学习NIO,这样才能阅读Netty的源码
🍎 Netty的应用场景
-- 互联网行业:1、分布式系统中,各个节点之间需要远程服务调用,高性能的RPC框架必不可少。2、阿里分布式服务框架Dubbo就用到了Netty
-- 游戏行业:Netty作为高性能的基础通信组件
-- 大数据领域:Hadoop的高性能通信和序列化组件(AVRO实现数据我呢见共享)的RPC框架
>> I/O模型:
-- I/O简单理解:用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能
-- Java共支持3种网络编程模型I/O模式: BIO、NIO、AIO
-- BIO(同步并阻塞/传统阻塞型),服务器实现模式为一个连接对应一个线程,即客户端有链请求时服务端就需要启动一个线程进行处理
-- 适用于连接数目较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,编程比较简单
-- NIO(同步非阻塞),服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求就进行处理
-- 适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,弹幕系统,服务器间通讯。编程比较复杂,JDK4开始支持
-- AIO(异步非阻塞),AIO引入异步通道的概念,采用了Proactor模式,简化了程序编写,有效的请求才启动线程,它的特点时先由操作系统完成后才通知服务端线程启动线程去处理,,一般适用于连接数较多且连接时间较长的应用
-- 该方式适用于连接数目较多且连接比较长(重操作)的架构, 比如,相册服务器,充分调用OS(操作系统)参与并发操作,编程比较复杂,JDK7开始支持
>> Java BIO
就是传统的Java IO编程,开源通过线程池机制改善线程开销问题,实现多客户端连接服务器。
BIO编程简单流程:
1、服务器端启动一个ServerSocket
2、客户端启动Socket对服务器进行通信,默认情况下服务器端需要对每个客户端建立一个线程与之通信
3、客户端发出请求后,先咨询服务器是否有线程响应,如果没有则会等待,或者被拒绝
4、如果有响应,客户端线程会等待请求结束后,在继续执行
>> telnet的使用
telnet host port - telnet 127.0.0.1 6666
ctrl + ] 进入交互状态
send "msg" 发送消息
>> Java NIO
全称Java non-blocking IO 是指JDK提供的新API。放在java.nio包及其子包下,对原Java。io包中的很多类进行改写。
NIO有三大核心部分:Channel(通道),Buffer(缓冲区),Selector(选择器)
NIO是面向缓冲区,或者面向块编程的。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区种前后移动,
这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络。
Java NIO的非阻塞模式,使一个线程从某通道发送请求或者读取数据,但是它仅能得到可用的数据,如果目前没有可用数据时,就什么都不会获取。
而不是保持线程阻塞。所以直至数据变得可以读取之前,该线程还可以做其他的事情。通俗的讲:NIO是可以做到用一个线程来处理多个操作的。
Http2.0使用了多路复用的技术,做到一个连接并发处理�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
读书笔记:Java、Scala、线程、多线程、并发编程.zip (575个子文件)
org.springframework-spring-core-6.0.15 144B
SynchronizedDemo.class 514B
mvnw.cmd 6KB
mvnw.cmd 6KB
config 258B
FETCH_HEAD 303B
.gitignore 333B
.gitignore 303B
.gitignore 70B
HEAD 130B
HEAD 23B
pack-fb2abdd605d795c38b1089d59f45417f7129b2ed.idx 60KB
index 76KB
maven-wrapper.jar 50KB
maven-wrapper.jar 47KB
ReentrantLockExample6_lock_jmhTest.java 32KB
ReentrantLockExample6_sync_jmhTest.java 32KB
JmhExample02_test_jmhTest.java 31KB
UserInfo.java 24KB
JmhExample03_testSynchronizedMap_jmhTest.java 22KB
JmhExample03_testConcurrencyMap_jmhTest.java 22KB
JmhExample04_test_jmhTest.java 22KB
AtomicPerformanceComp_atomic_jmhTest.java 20KB
AtomicReferenceExample4_cas_jmhTest.java 20KB
AtomicReferenceExample4_sync_jmhTest.java 19KB
AtomicPerformanceComp_sync_jmhTest.java 19KB
AtomicPerformanceComp_lock_jmhTest.java 19KB
ReentrantLockExample4_testSyncMethod_jmhTest.java 17KB
ReentrantLockExample4_testLockMethod_jmhTest.java 17KB
ReentrantLockExample4_base_jmhTest.java 17KB
AtomicLazySetVsSet_testLazySet_jmhTest.java 17KB
JmhExample01_linkedListAdd_jmhTest.java 17KB
JmhExample01_arrayListAdd_jmhTest.java 17KB
AtomicLazySetVsSet_testSet_jmhTest.java 17KB
JmhExample05_measureWrong_jmhTest.java 16KB
JmhExample05_measureRight_jmhTest.java 16KB
JmhExample06_measureLog3_jmhTest.java 16KB
JmhExample06_measureLog1_jmhTest.java 16KB
JmhExample06_measureLog2_jmhTest.java 16KB
JmhExample06_baseline_jmhTest.java 16KB
CompletableFutureRunAsyncCode.java 6KB
FutureExceptionCode.java 5KB
MavenWrapperDownloader.java 5KB
MavenWrapperDownloader.java 5KB
SourceAnalysis.java 4KB
MyPoolExecutors.java 4KB
ExchangerExample2.java 4KB
ArrayBlockingQueueExample.java 4KB
FastDFSDemo.java 4KB
MyList.java 4KB
CompletableFutureCallBackCode.java 4KB
MySemaphore.java 4KB
CompletableFutureMoreCode.java 3KB
ConditionExample2.java 3KB
NettyClientHandler.java 3KB
Startup.java 3KB
NettyServerHandler.java 3KB
CyclicBarrierExample1.java 3KB
MyDemoQueue.java 3KB
TestHttpServerHandler.java 3KB
DeadLock.java 3KB
RateLimiterBucket.java 3KB
ConditionExample1.java 3KB
SecondEchoNettyServer.java 3KB
AtomicPerformanceComp.java 3KB
NettyClient.java 2KB
ExchangerExample1.java 2KB
UseQueue.java 2KB
NettyFirstServer.java 2KB
ListAdd2.java 2KB
AbstractInsertDataRunnable.java 2KB
SemaphoreExample1.java 2KB
MyPriorityList.java 2KB
SemaphoreExample2.java 2KB
RateLimiterTokenBucket.java 2KB
ReentrantLockExample5.java 2KB
ReentrantLockExample6.java 2KB
JdbcUtils.java 2KB
CountDownLatchExample1.java 2KB
AsyncFutureCode2.java 2KB
AbstractReadDataRunnable.java 2KB
AsyncFutureCode3.java 2KB
ReentrantLockExample3.java 2KB
ReentrantLockExample4.java 2KB
ReentrantReadWriteLockExample1.java 2KB
AsyncThreadPool2.java 2KB
AtomicReferenceExample4.java 2KB
AtomicReferenceExample4_AtomicReferenceRace_jmhType_B2.java 2KB
BioServer.java 2KB
AtomicPerformanceComp_AtomicIntegerMonitor_jmhType_B2.java 2KB
TryLockExample.java 2KB
AsyncThreadPool.java 2KB
PhaserExample3.java 2KB
Master.java 2KB
AtomicReferenceExample4_MonitorRace_jmhType_B2.java 2KB
CyclicBarrierDemo.java 2KB
PhaserExample1.java 2KB
AtomicPerformanceComp_IntMonitor_jmhType_B2.java 2KB
UseFuture.java 2KB
HelloNettyServer.java 2KB
共 575 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
九转成圣
- 粉丝: 4468
- 资源: 2959
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ACM编程比赛的经验与心得分享-全面提升个人与团队实力
- 点云开发入门教程-带你从点云的基础知识、数据获取、处理到应用开发,逐步深入了解点云开发的世界
- Python 实现高斯光束的基本仿真(含完整的程序和代码详解)
- C++利用MFC(Microsoft Foundation Classes)和OpenCV实现遥感图像的配准和融合(含完整的程序
- MATLAB实现基于RD、CS和RM算法的雷达成像技术(含完整的程序和代码详解)
- MATLAB利用遗传算法、模拟退火和禁忌搜索算法解决车辆路径问题(VRP)(含完整的程序和代码详解)
- python的上下文管理器
- 山竹社区3.4.9【各大手机都可安全安装.apk
- 一个关于TC275 Bootloader的详细设计实例(含完整的程序和代码详解)
- Python 构建并实现一种基于环形拓扑的多目标粒子群优化(mOPSO)算法(含完整的程序和代码详解)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功