028-86261949

当前位置:首页 > 技术交流 > Netty入门认识、Java IO通信、WebSocket

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

 

#标签:Netty入门,Java IO通信,WebSocket