Netty
文章平均质量分 85
fangjiayou
这个作者很懒,什么都没留下…
展开
-
Netty 接受请求过程源码剖析 2021SC@SDUSC
Netty 接受请求过程源码剖析1 源码剖析目的服务器启动后肯定是要接受客户端请求并返回客户端想要的信息的,下面源码分析 Netty 在启动之后是如何接受客户端请求的在 io.netty.example 包 下2 源码剖析说明:从之前服务器启动的源码中,我们得知,服务器最终注册了一个 Accept 事件等待客户端的连接。我们也知道,NioServerSocketChannel 将自己注册到了 boss 单例线程池(reactor 线程)上,也就是 EventLoop 。先原创 2021-12-27 15:23:57 · 570 阅读 · 0 评论 -
山东大学Netty 启动过程源码剖析2021SC@SDUSC
2021SC@SDUSCNetty 核心源码剖析1基本说明只有看过 Netty 源码,才能说是真的掌握了 Netty 框架。在 io.netty.example 包下,有很多 Netty 源码案例,可以用来分析源码分析章节 是针对有 Java 项目经验,并且玩过框架源码的人员讲的,否则看起来会有相当的难度。2 Netty 启动过程源码剖析2.1 源码剖析目的用源码分析的方式走一下 Netty (服务器)的启动过程,更好的理解 Netty 的整体 设计和运行机制。2.2原创 2021-12-27 15:23:01 · 84 阅读 · 0 评论 -
<2021SC@SDUSC>山东大学Netty小组——Google Protobuf
Google Protobuf1 编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码 [示意图]codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据2 Netty 本身的编码解码的机制和问题分析Netty 自身提供了一些 codec(编解码器)Netty 提供的原创 2021-12-20 07:55:13 · 99 阅读 · 0 评论 -
山东大学Netty 编解码器和 handler 的调用机制
2021SC@SDUSCNetty 编解码器和 handler 的调用机制1 基本说明netty 的组件设计:Netty 的主要组件有 Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipe 等ChannelHandler 充当了处理入站和出站数据的应用程序逻辑的容器。例如,实现 ChannelInboundHandler 接口(或ChannelInboundHandlerAdapter),你就可以接收入站事件和数据,这些数据会被原创 2021-12-13 14:15:06 · 75 阅读 · 0 评论 -
<2021SC@SDUSC>Netty 心跳检测机制案例
2021SC@SDUSCNetty 心跳检测机制案例实例要求:编写一个 Netty 心跳检测机制案例, 当服务器超过 3 秒没有读时,就提示读空闲当服务器超过 5 秒没有写操作时,就提示写空闲实现当服务器超过 7 秒没有读或者写操作时,就提示读写空闲代码如下:MyServerpackage com.shandonguniversity.netty.heartbeat;import io.netty.bootstrap.ServerBootstrap;import原创 2021-11-29 08:46:07 · 155 阅读 · 0 评论 -
山东大学Netty 心跳(heartbeat)服务源码剖析
2021SC@SDUSCNetty 心跳(heartbeat)服务源码剖析1 源码剖析目的Netty 作为一个网络框架,提供了诸多功能,比如编码解码等,Netty 还提供了非常重要的一个服务——心跳机制 heartbeat。通过心跳检查对方是否有效(检查客户端和服务器端是否有效),这是 RPC 框架中是必不可少的功能。下面我们分析一下 Netty内部心跳服务源码实现。2 源码剖析说明Netty 提供了 IdleStateHandler ,ReadTimeoutHandler,WriteTime原创 2021-11-22 08:25:23 · 637 阅读 · 0 评论 -
<2021SC@SDUSC>Netty任务队列TaskQueue
2021SC@SDUSC左上NioEventGroup中除了Selector,还有一个很重要的TaskQueue任务队列,在整个事件循环的过程中,右下pipeline中会有一系列Handler对业务和数据进行处理,如果在某个Handler里有一个长时间的操作,势必造成pipeline有一定的阻塞,所以对某些任务可以提交到对应的TaskQueue中异步处理。任务队列中的 Task 有 3 种典型使用场景用户程序自定义的普通任务 [举例说明]用户自定义定时任务非当前 Reactor 线程调原创 2021-11-15 08:18:34 · 138 阅读 · 0 评论 -
Netty 模型 和 Netty 快速入门实例-TCP 服务
5.8Netty 模型5.8.1工作原理示意图 1-简单版Netty 主要基于主从 Reactors 多线程模型(如图)做了一定的改进,其中主从 Reactor 多线程模型有多个 Reactor5.8.2对上图说明1)BossGroup 线程维护 Selector , 只关注 Accecpt2)当接收到 Accept 事件,获取到对应的 SocketChannel, 封装成 NIOScoketChannel 并注册到Worker 线程(事件循环), 并进行维护3)当 Worker 线程监听原创 2021-11-08 14:30:58 · 106 阅读 · 0 评论 -
山东大学Netty学习小组NIO网络编程应用实例-群聊系统与NIO 零拷贝 2021SC@SDUSC
2021SC@SDUSCSelectionKey1)SelectionKey,表示 Selector 和网络通道的注册关系, 共四种:int OP_ACCEPT:有新的网络连接可以 accept,值为 16 int OP_CONNECT:代表连接已经建立,值为 8int OP_READ:代表读操作,值为 1int OP_WRITE:代表写操作,值为 4源码中:public static final int OP_READ = 1 << 0; public static final原创 2021-10-04 12:44:52 · 160 阅读 · 0 评论 -
NIO 非阻塞 网络编程 2021SC@SDUSC
关于Buffer 和 Channel 的注意事项和细节ByteBuffer 支持类型化的 put 和 get, put 放入的是什么数据类型,get 就应该使用相应的数据类型来取出,否则可能有 BufferUnderflowException 异常。[举例说明]package com.shandonguniversity.nio;import java.nio.ByteBuffer;public class NIOByteBufferPutGet { public static vo原创 2021-10-01 14:41:34 · 92 阅读 · 0 评论