Netty入门认识、Java IO通信、WebSocket
2019/10/23 14:44 分类: 技术交流 浏览:1
一.Netty的认识
1.1、什么是netty
1.2、netty的使用场景
1.3、课程提纲
1.4、课程要求
二.Java IO通信
2.1、BIO通信
2.2、伪异步IO通信
2.3、NIO通信
2.4、AIO通信
2.5、四种IO对比
三.Netty入门
3.1、 Netty与NIO的比较
3.2、原生NIO的缺陷
3.3、Netty的优势
四 WebSocket
4.1、什么是WebSocket
4.2、WebSocket人优点
4.3、WebSocket建立连接
4.4、WebSocket生命周期
4.5、WebSocket关闭连接
一、Netty的认识
1.1、什么是netty
高性能 事件驱动,异步非堵塞
基于NIO的客户端,服务器端编程框架稳定性和良好的伸缩性
快速简单,不会出现性能上的问题
1.2、netty的使用场景
高性能领域(游戏,大数据应用开发) 用于多线程并发领域
异步通信领域
1.3、课程提纲
IO通信Netty入门
WebSocket入门
Netty实现WebSocket通信案例
1.4、课程要求
有一定的Java基础 有一定的IO编程基础
了解Java的BIO,伪异步IO,NIO和AIO
二、Java IO通信
https://blog.csdn.net/l_kanglin/article/details/71531761
2.1、BIO通信
一个线程负责连接一请求一应答
缺点:缺乏弹性伸缩能力(并发访问量过大,系统性能下降,发生线程堆栈溢出,创建新线程失败等问题,会导致宕机,僵死)
2.2、伪异步IO通信
线程池负责连接M请求N应答
线程池阻塞(线程池可控,不管多少都不会宕机,僵死,但是可以为阻塞)
2.3、NIO通信
缓冲区Buffer 通道Channel
多路复用器Selector
优势:只需要一个线程负责Selector的轮询,就可以接入成千上万的客户端
2.4、AIO通信
连接注册读写事件和回调函数读写方法异步
主动通知程序
直接的异步非阻塞IO
2.5、四种IO对比
三、Netty入门
3.1、 Netty与NIO的比较
![]() |
原生NIO的缺陷
不选择原生NIO的原因:http://blog.sina.com.cn/s/blog_6f74890d0102wrpe.html
类库和API繁杂
入门门槛高(需要熟悉多线程与网络) 工作量难度大
原生JDK NIO存在Bug
Netty的优势
Netty为什么这么火,它有什么优
势:https://blog.csdn.net/youanyyou/article/details/78990214
API使用简单(定制能力强) 入门门槛低
性能高
入门门槛低
成熟稳定(已经解决了相应的bug,通过商业的考验)
四、 WebSocket
4.1、什么是WebSocket
H5协议规范握手机制
解决客户端与服务端实时通信而产生的技术(基于HTTP协议)
4.2、WebSocket人优点
节省通信开销
服务器主动传送数据给客户端实时通信
4.3、WebSocket建立连接
客户端发起握手请求服务端响应请求
连接建立
4.4、WebSocket生命周期
打开事件:@OnOpen 此事件发生在端点上建立新连接时并且在任何其他事件发生之前消息事件:@OnMessage 此事件接收WebSocket对话中另一端发送的消息。
错误事件:@OnError 此事件在WebSocket连接或者端点发生错误时产生
关闭事件:@OnClose 此事件表示WebSocket端点的连接目前部分地关闭,它可以由参与连接的任意一个端点发出
4.5、WebSocket关闭连接
服务器关闭底层TCP连接客户端发起TCP Close
赞 0