Netty
文章平均质量分 69
Netty是一款高性能NIO框架,对jdk自带的复杂的NIO操作进行封装,简单易用。本系列教程带领大家学习Netty入门知识,Netty是什么,Netty拆包粘包解决、Netty WebSocket实现等
孟诸
coding
展开
-
Netty学习五-线程模型
1 Reactor 线程模型讨论 Netty 线程模型的时候,一般会想到经典的 Reactor 线程模型。尽管不同的 NIO 框架对 Reactor 线程模型实现不太一样,但本质上还是遵循 Reactor 基础线程模型1.1 单线程模型所有的 IO 操作都在一个 NIO 线程完成,NIO 线程职责如下作为 NIO 服务端,接收客户 TCP 连接作为 NIO 客户端,向服务端发起 TCP 连接读取通信对端请求或应答消息向通信对端发送请求或应答消息单线程模型存在如下问题:性能问题:一个原创 2022-05-22 19:21:55 · 235 阅读 · 0 评论 -
Netty学习四-WebSocket协议开发
1 HTTP 协议弊端HTTP 协议为半双工协议,半双工协议是指数据可以在客户端和服务端两个方向传输,但是不能同时传输。意味着同一时刻只有一个方向上的数据传送HTTP 消息冗长且繁琐,HTTP 消息包含消息头、消息体、换行符等,通常情况下采用文本方式传输,相对于其他二进制协议效率低下实时性不高没有 WebSocket 之前,很多网站进行消息推送都是客户端轮询,服务端返回最新的数据给客户端。这种方式浏览器需要不停地向服务端发送请求,HTTP 的 header 数据比较冗长,有用数据占用比较少,浪原创 2022-05-22 18:38:02 · 594 阅读 · 0 评论 -
Netty学习二-核心类简介
1 ByteBufnetty中的ByteBuf主要是为了替换JDK自带的 ByteBuffer。 ByteBuffer有如下缺点:ByteBuffer 长度固定,一旦分配完成不能动态扩容缩容。ByteBuffer 只有一个标识位置的指针position,读写的时候需要手动调用flip()和rewind()等。开发者必须小心地使用这些API,否则很容易出现程序处理失败ByteBuffer 功能有限,一些高级特性不支持,需要开发者自己实现1.1 工作原理ByteBuf维护了读指针(readerI原创 2022-05-22 17:40:25 · 1480 阅读 · 0 评论 -
Netty学习三-编解码技术
1 编解码简介编解码技术,说白了就是java序列化技术,可以持久化对象或网络传输。虽然可以使用java进行对象序列化,netty去传输,但是java序列化的硬伤太多,比如java序列化没法跨语言、序列化后码流量太大、序列化性能太低等等;主流的编解码框架:JBoss的Marshalling包,google的Protobuf,基于Protobuf的Kyro(dubbo),MessagePack框架2 前置工作2.1 NettyUtil工具类@Slf4jpublic class NettyUtil {原创 2022-05-17 16:49:59 · 333 阅读 · 0 评论 -
Netty入门一-NIO入门
1 nio简介Java NIO(New IO)是从Java 1.4版本开始引入的,一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。Java NIO系统的核心在于:通道(Channel)和缓冲区(Buffer)。通道表示打开到 IO 设备(例如:文件、套接字)的连接。若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及用于容纳数据原创 2020-06-25 21:06:37 · 214 阅读 · 0 评论