
netty
文章平均质量分 91
哈哈哈张大侠
不积跬步无以至千里
展开
-
Netty(三):源码解析之keepalive和三种Idle检测的支持
为什么需要keepalive?如果建立TCP连接之后,如果由于某些异常原因,导致连接已经损坏。但是此时双端仍然在维持该连接,此时则会浪费资源,已经在使用时产生报错连接损坏如何定义?对端异常“崩溃”对端在,但是处理不过来对端在,但是网络请求不可达Idle检测只是负责对连接的诊断、分析并作出不同的行为,主要用于判断连接是否空闲or连接是否异常,从而来决定是否采取keepalive,有助于减少keepalive的次数readerIdleTime:读超时时间,当前端一段时间未收到对端消息。原创 2023-04-07 23:27:03 · 703 阅读 · 0 评论 -
Netty(二):源码解析之粘包、半包和编解码
假设我发送一个消息ABC DEF两块消息,此时接收方不一定是通过两个包就接收到两块消息,可能产生的情况有下述几种一个包内包含ABCDEF的信息,这种叫做粘包也可能分为三个包AB、CD、EF,这种叫做半包换个角度理解收发角度来看:一个发送可能会被多次接收,多个发送可能会被一次接收传输角度来看:一个发送可能占用多个传输包,多个发送可能共用一个传输包那么会什么会出现粘包和半包现象呢?原创 2023-04-07 23:26:29 · 309 阅读 · 0 评论 -
Netty(一):源码解析之三种IO支持
其会将要处理的IO事件放到一个IO多路复用器中,同时主线程阻塞在该多路复用器(select、poll、epoll)上,直到有IO事件准备就绪了,多路解复用器从阻塞处返回,将准备好的IO事件分发到事件处理器(工作线程handler)中。主Reactor线程只负责执行dispatch阻塞等待监听套接字的连接事件,当有套接字连接之后,随机选择一个Sub-Reactor,把已连接套接字的IO读写事件注册到选择的sub-Reactor线程中。获取到一个已连接事件之后,会触发添加监听更多的读写事件。原创 2023-04-07 23:28:20 · 124 阅读 · 0 评论