Netty源码
文章平均质量分 90
白鸽呀
这个作者很懒,什么都没留下…
展开
-
Netty 粘包拆包 编解码器简介与使用
在protobuf中,每个byte的最高位是一个判断位,如果这个位被置位1,则表示后面一个byte和该byte是一起的,表示同一个数,如果这个位被置位0,则表示后面一个byte和该byte没有关系,数据到这个byte就结束了。就是序列化整数的时候,占用的空间大小是不一样的,小的整数占用的空间小,大的整数占用的空间大,这样不用固定一个具体的长度,可以减少数据的长度,但是会带来解析的复杂度。xml也是一个非常常用的格式,但是它的体积会比较大,现在应该用的比较少了。原创 2022-10-11 20:14:34 · 1051 阅读 · 0 评论 -
Netty源码剖析之内存池和对象池设计流程
根据谁最后使用谁负责释放的原则,每个Handler对消息可能有三种处理方式对原消息不做处理,调用ctx.fireChannelRead(msg)把原消息往下传,那不用做什么释放。将原消息转化为新的消息并调用 ctx.fireChannelRead(newMsg)往下传,原创 2022-09-28 21:08:15 · 907 阅读 · 0 评论 -
Netty源码剖析之IO多路复用模型
select缺点是:1、 单个进程可监视的fd数量被限制,即能监听端口的大小有限。一般来说这个数目和系统内存关系很大,具体数目可以cat /proc/sys/fs/file-max察看。32位机默认是1024个。64位机默认是2048.当套接字比较多的时候,每次select()都要通过遍历FD_SETSIZE个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍。这会浪费很多CPU时间。转载 2022-09-27 16:50:41 · 1048 阅读 · 0 评论 -
Netty源码剖析之核心组件
AbstractChannel抽象类包含以下几个重要属性。EventLoop:每个Channel对应一条EventLoop线程。DefaultChannelPipeline:一个Handler的容器,也可以将其理解为一个Handler链。Handler主要处理数据的编/解码和业务逻辑。Unsafe:实现具体的连接与读/写数据,如网络的读/写、链路 关闭、发起连接等。命名为Unsafe表示不对外提供使用,并非不安全。原创 2022-09-27 14:52:52 · 403 阅读 · 0 评论 -
Netty源码剖析之数据通信流程
我的理解是不会!只有当客户端与服务端建立连接的时候,ServerSocketChannel所在NioEventLoop将 接收到的SocketChannel通过 ServerBootAcceptor 交由 WorkerGroup NioEventLoop注册通道的时候,才会拿到这个WorkerNioEventLoop 创建线程,进行Selector监听。原创 2022-09-16 10:51:47 · 558 阅读 · 0 评论 -
Netty源码剖析之Netty启动流程
1、NettyServer2、NettyServerHandler3、NettyClient4、NettyClientHandlerNetty启动流程1、绑定端口,封装程SocketAddress2、创建初始化Channel,将NioServerSocketChannel绑定到BossNioEventLoopGroup中的EventLoop中的Selector上,指定Selector监听事件为accept2.1 反射创建NioServerSocketChannel给ServerSoc原创 2022-09-15 15:20:50 · 576 阅读 · 0 评论 -
Netty源码剖析之NIOEventLoopGroup创建流程
NioEventLoopGroup内部结构执行图。原创 2022-09-13 18:02:29 · 1375 阅读 · 0 评论 -
Netty源码剖析之线程模型
Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序。Netty 是一个基于 NIO 的网络编程框架,使用Netty 可以帮助你快速、简单的开发出一 个网络应用,相当于简化和流程化了 NIO 的开发过程。原创 2022-09-13 15:39:42 · 256 阅读 · 0 评论 -
Netty源码分析之NIO
Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址、远程进程的议。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的。,简化了程序编写,有效的请求才启动线程,它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间较长的应用。原创 2022-09-13 14:37:22 · 301 阅读 · 0 评论