Netty
文章平均质量分 63
逆流丶石头
这个作者很懒,什么都没留下…
展开
-
Netty RPC实现
【代码】Netty RPC实现。原创 2023-04-07 11:03:57 · 121 阅读 · 0 评论 -
Netty 任务异步线程池源码剖析
在 Netty 中做耗时的,不可预料的操作,比如数据库,网络请求,会严重影响 Netty 对 Socket 的处理速度, 而解决方法就是将耗时任务添加到异步线程池中。原创 2023-04-06 11:29:01 · 123 阅读 · 0 评论 -
Netty EventLoop 源码剖析
每次执行 execute 方法都是向队列中添加任务。当第一次添加时就启动线程,执行 run 方法,而 run 方法是整个 EventLoop 的核心,就像 EventLoop 的名字一样,不停的 Loop。原创 2023-04-05 20:53:53 · 32 阅读 · 0 评论 -
Netty 心跳服务源码剖析
ReaderIdleTimeoutTask、WriterIdleTimeoutTask、AllIdleTimeoutTask 分别对应读、写、读或写 事件。共有一个父类(AbstractIdleTask)。这个父类提供了一个模板方法。每次读取操作都会记录一个时间,定时任务时间到了,会计算当前时间和最后一次读的时间的间隔,如果间隔超过了设置的时间,就触发 UserEventTriggered 方法。当该 handler 被添加到 pipeline 中时,则调用 initialize 方法。原创 2023-04-04 22:32:44 · 71 阅读 · 0 评论 -
Netty 三大核心组件源码剖析
Netty 中的 ChannelPipeline、ChannelHandler 和 ChannelHandlerContext 是非常核心的组件,从源码分析 Netty 是如何设计这三个核心组件的,并分析是如何创建和协调工作的。原创 2023-04-01 21:55:22 · 126 阅读 · 0 评论 -
Netty 接收请求过程源码剖析
接受连接 --> 创建一个新的 NioSocketChannel --> 注册到一个 worker EventLoop 上 --> 注册 selector Read 事件。原创 2023-03-30 22:41:14 · 47 阅读 · 0 评论 -
Netty 服务器启动源码剖析
并会创建 EventExecutor 数组 , 每个元素的类型就是 NIOEventLoop, NIOEventLoop 实现了 EventLoop 接口 和 Executor 接口。这是一个普通的处理器类,用于处理客户端发送来的消息,在这里,则简单的解析出客户端传过来的内容,然后打印,最后发送字符串给客户端。原创 2023-03-29 17:28:51 · 94 阅读 · 0 评论 -
Netty TCP 粘包和拆包
TCP 是面向连接的,面向流的,提供高可靠性服务。收发两端 (客户端 和 服务器端)都要有一一成对的 socket。因此,发送端为了将多个发给接收端的包,更有效的发送给对方,使用了优化方法(Nagle 算法), 将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流通信是无消息保护边界的,需要接收端处理消息边界问题。原创 2023-03-29 15:33:46 · 169 阅读 · 0 评论 -
Netty 解码器-ReplayingDecoder
ReplayingDecoder 扩展了 ByteToMessageDecoder 类, 使用这个类,我们不必调用 readableBytes() 方法。参数 S 指定了用户状态管理类型,其中 Void 代表不需要状态。原创 2023-03-28 17:04:01 · 175 阅读 · 0 评论 -
Netty Handler的调用机制
【代码】Netty Handler的调用机制。原创 2023-03-28 16:45:46 · 106 阅读 · 0 评论 -
Netty Protobuf
RPC[远程过程调用 remote procedure call]支持目前绝大多数语言。, 然后配置环境变量。原创 2023-03-24 23:09:06 · 502 阅读 · 0 评论 -
Netty 编解码器机制
Netty 本身自带的ObjectDecoder 和 ObjectEncoder 可以用来实现 POJO 对象或各种业务对象的编码和解码,底层使用的仍是 Java 序列化技术,而 Java 序列化技术本身效率就不高。原创 2023-03-24 12:08:10 · 52 阅读 · 0 评论 -
Netty WebSocket长连接
【代码】Netty WebSocket长连接。原创 2023-03-24 11:18:52 · 131 阅读 · 0 评论 -
Netty 心跳检测
【代码】Netty 心跳检测。原创 2023-03-23 17:16:36 · 36 阅读 · 0 评论 -
Netty 聊天系统
【代码】Netty 聊天系统。原创 2023-03-22 22:16:03 · 79 阅读 · 0 评论 -
Netty 异步模型
相比传统阻塞 I/O, 执行 I/O 操作后线程会被阻塞住,直到操作完成;异步处理的好处是不会造成线程阻塞, 线程在 I/O 操作期间可以执行别的程序,在高并发情形下会更稳定和更高的吞吐量。当 Future 对象刚刚创建时,处于非完成状态,调用者可以通过返回的 ChannelFuture 来获取操作执行的状态、注册监听函数来执行完成后的操作。原创 2023-03-17 14:07:49 · 74 阅读 · 0 评论 -
Netty 线程模型
做了一定的改进,其中主从 Reactor 多线程模型有多个 Reactor。Reactor 多线程模型。原创 2023-03-03 22:46:36 · 78 阅读 · 0 评论 -
Netty 概述
原生NIO存在的问题:Netty 官网: https://netty.ioNetty 简介:Netty的优点:原创 2023-02-20 17:11:17 · 61 阅读 · 0 评论 -
NIO 群聊系统
基于NIO 的群聊系统原创 2023-02-20 12:46:31 · 77 阅读 · 0 评论 -
NIO 三大核心-Selector
Java的NIO, 用非阻塞的 I/O 方式。可以用一个线程,处理多个客户端连接,就会用到Selector(选择器)Selector 能够检测多个注册的通道上是否有事件发生(注意:多个Channel 以事件的方式可以注册到同一个Selector), 如果有事件发生,便获取事件然后针对每个事件进行相应的处理。这样就可以只用一个单线程去管理多个通道,也就是管理多个连接和请求只有在连接真正有读写事件发生时,才会进行读写,就大大地减少了系统开销,并且不必为每个连接都创建一个线程,不用去维护多个线程。原创 2023-02-10 17:54:52 · 52 阅读 · 0 评论 -
NIO 三大核心-Channel
FileChannel、DatagramChannel、ServerSocketChannel( 类似 ServerSocket ) 和 SocketChannel (类似 Socket 当客户端连接 Server的时候,会由 ServerSocketChannel 产生一个对应客户端的 SocketChannel)主要用来对本地文件进行IO操作。原创 2023-02-07 17:31:27 · 111 阅读 · 0 评论 -
NIO 三大核心-Buffer
一组方法,可以更轻松得使用内存块,缓冲区对象内置一些机制,能够跟踪和记录缓冲区的状态变化情况。Channel 提供从文件、网络读取数据的渠道,但是读取或写入的数据都必须经由Buffer。4. 每个基本数据类型(除boolean外),都有一个Buffer类型预置对应,最常用的是ByteBuffer类。2. Buffer类定义了所有的缓冲区都具有的四个属性来提供关于其包含的数据元素的信息。从当前位置上put, put之后,position会自动+1。: 缓冲区本质上是一个可以读写数据的内存块,可以理解成一个。原创 2023-02-07 16:30:01 · 165 阅读 · 0 评论 -
IO 模型
Netty IO模型原创 2023-02-07 13:58:59 · 51 阅读 · 0 评论