- 博客(5)
- 收藏
- 关注
原创 Netty源码下载与编译
在学习Netty源码的过程中,有时候需要针对某个版本的源码进行修改,测试一些功能点.这个时候我们就需要下载指定版本的源码,修改一些配置,让源码可以正常编译成功.1.下载指定版本的源码访问 https://github.com/netty/netty/tags选择需要的版本并下载zip解压并导入到IDEA2.修改前提: 电脑上安装了JDK1.8修改parent的pom.xml中的compiler<maven.compiler.source>1.8</maven.compile
2021-02-26 21:47:40 1691
原创 Netty中的LengthFieldBasedFrameDecoder解码器
假如客户端给服务端发送数据,那么服务端的Netty从网络中读取的数据都是连续的字节流数据,同时粘包和拆包也在’捣乱’,如何读取一个完整的数据包, 这个重担就落在了解码器的身上.本篇文章介绍下使用广泛的LengthFieldBasedFrameDecoder解码器.在介绍之前, 先看个总览图简单描述上面这张图, 假如客户端给服务端发送数据.第一次当数据(HEL)到达服务端之后,Netty中的NioByteUnsafe类会从TCP缓冲区将数据(HEL)读取出来并封装成一个ByteBuf传给帧解码器.
2021-02-26 14:10:44 2155
原创 Dubbo与Netty杂谈
在Dubbo的’人生’中, 无论它是在自己的’亲爸爸’阿里家族成长, 还是’寄养’在Apache家族里, Dubbo的底层通信一直使用高性能的Netty框架.Dubbo在阿里家族一直成长到v2.6.9版本之后,就被送到Apache家族了.通过Maven官网搜索Dubbo版本, 如下从上面两张图看出, Dubbo在阿里家族的Maven最高版本是v2.6.9, 在Apache家族的Maven最低版本是v2.7.0, 正好衔接.在之前的Netty在Dubbo中使用了哪些Handler文章中, 介绍了在
2021-02-24 22:23:23 1501 1
原创 Netty模拟OOM-Metaspace
在模拟OOM之前, 先简单说下Netty服务端向客户端发送数据的时候, 涉及两个存储数据的地方, 如下图所示业务线程在向客户端发送数据的时候, 是不能直接把数据发送到网络的, 只有IO线程才可以把数据发送到网络, 因此业务线程只能把数据封装成一个任务放到与IO线程关联的一个Queue中, 之后IO线程会从Queue中取出任务, 执行写操作, 将数据写到网络. 因此这个Queue就是存储数据的第一个地方.在之前的文章中,介绍过 使用Netty模拟发生OOM , 那里说的OOM是指java.lang.Ou
2021-02-22 21:47:51 521
原创 Netty中的永动机
永动机即’永远运动的机器’.作为服务端时, 需要接收客户端的连接, 需要接收客户端的数据, 或者向客户端发送数据.既然需要接收客户端的连接, 那么就需要一个IO线程永远的执行一个无限循环.只有一直循环着, 才能一直接收新的连接.NioEventLoop的底层绑定一个线程, 这个线程在启动之后, 就会一直无限循环着, 而且只做三件事1.轮询IO事件2.处理IO事件3.执行任务当有新的客户端连接到服务端的时候(TCP三次握手已经完成), 服务端的IO线程就会轮询到有客户端的连接事件. 接下来
2021-02-21 21:40:43 269 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人