随笔分类 -  聊聊 Netty 那些事儿

摘要:时间轮在 Netty , Kafka 中的设计与实现本文基于 Netty 4.1.112.Final , Kafka 3.9.0 版本进行讨论 在业务开发的场景中,我们经常会遇到很多定时任务的需求。比如,生成业务报表,周期性对账,同步数据,订单支付超时处理等。针对业务场景中定时任务逻辑复杂,执行时间长的特点,市面上已经有很多成熟的任务调度中间件可供我 阅读全文
posted @ 2024-12-25 09:52 bin的技术小屋 阅读(2060) 评论(3) 推荐(14)
摘要:Netty 如何自动探测内存泄露的发生本文基于 Netty 4.1.112.Final 版本进行讨论 本文是 Netty 内存管理系列的最后一篇文章,在第一篇文章 《聊一聊 Netty 数据搬运工 ByteBuf 体系的设计与实现》 中,笔者以 UnpooledByteBuf 为例,从整个内存管理的外围对 ByteBuf 的整个设计体系 阅读全文
posted @ 2024-11-07 10:10 bin的技术小屋 阅读(1296) 评论(0) 推荐(4)
摘要:谈一谈 Netty 的内存管理 —— 且看 Netty 如何实现 Java 版的 Jemalloc本文基于 Netty 4.1.112.Final 版本进行讨论 在之前的 Netty 系列中,笔者是以 4.1.56.Final 版本为基础和大家讨论的,那么从本文开始,笔者将用最新版本 4.1.112.Final 对 Netty 的相关设计展开解析,之所以这么做的原因是 Netty 的内存池设计一 阅读全文
posted @ 2024-10-25 10:45 bin的技术小屋 阅读(2110) 评论(1) 推荐(9)
摘要:小小的引用计数,大大的性能考究本文基于 Netty 4.1.56.Final 版本进行讨论 在上篇文章《聊一聊 Netty 数据搬运工 ByteBuf 体系的设计与实现》 中,笔者详细地为大家介绍了 ByteBuf 整个体系的设计,其中笔者觉得 Netty 对于引用计数的设计非常精彩,因此将这部分设计内容专门独立出来。 Nett 阅读全文
posted @ 2024-08-20 12:24 bin的技术小屋 阅读(2321) 评论(4) 推荐(6)
摘要:聊一聊 Netty 数据搬运工 ByteBuf 体系的设计与实现本文基于 Netty 4.1.56.Final 版本进行讨论 时光芿苒,岁月如梭,好久没有给大家更新 Netty 相关的文章了,在断更 Netty 的这段日子里,笔者一直在持续更新 Linux 内存管理相关的文章 ,目前为止,算是将 Linux 内存管理子系统相关的主干源码较为完整的给大家呈现了出来 阅读全文
posted @ 2024-08-14 10:21 bin的技术小屋 阅读(2123) 评论(6) 推荐(12)
摘要:一步一图带你深入剖析 JDK NIO ByteBuffer 在不同字节序下的设计与实现欢迎关注公众号:bin的技术小屋 阅读全文
posted @ 2022-08-11 11:48 bin的技术小屋 阅读(2116) 评论(2) 推荐(5)
摘要:Java 技术栈中间件优雅停机方案设计与实现全景图欢迎关注公众号:bin的技术小屋,阅读公众号原文 本系列 Netty 源码解析文章基于 4.1.56.Final 版本 本文概要 在上篇文章 我为 Netty 贡献源码 | 且看 Netty 如何应对 TCP 连接的正常关闭,异常关闭,半关闭场景 中笔者为大家详细介绍了 Netty 在处理连接关闭时 阅读全文
posted @ 2022-07-19 11:21 bin的技术小屋 阅读(1575) 评论(13) 推荐(3)
摘要:我为 Netty 贡献源码 | 且看 Netty 如何应对 TCP 连接的正常关闭,异常关闭,半关闭场景欢迎关注公众号:bin的技术小屋 阅读全文
posted @ 2022-07-18 16:42 bin的技术小屋 阅读(4084) 评论(4) 推荐(3)
摘要:一文聊透 Netty IO 事件的编排利器 pipeline | 详解所有 IO 事件的触发时机以及传播路径欢迎关注公众号:bin的技术小屋 阅读全文
posted @ 2022-07-09 12:50 bin的技术小屋 阅读(1399) 评论(0) 推荐(0)
摘要:一文搞懂 Netty 发送数据全流程 | 你想知道的细节全在这里欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 在《Netty如何高效接收网络数据》一文中,我们介绍了 Netty 的 SubReactor 处理网络数据读取的完整过程,当 Netty 为 阅读全文
posted @ 2022-07-07 09:58 bin的技术小屋 阅读(2887) 评论(5) 推荐(2)
摘要:抓到 Netty 一个隐藏很深的内存泄露 Bug | 详解 Recycler 对象池的精妙设计与实现欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 最近在 Review Netty 代码的时候,不小心用我的肉眼抓到了一个隐藏很深很深的内存泄露 Bug。 于是笔者将这个故事....哦不 . 阅读全文
posted @ 2022-07-06 17:44 bin的技术小屋 阅读(1682) 评论(6) 推荐(2)
摘要:重磅硬核 | 一文聊透对象在 JVM 中的内存布局,以及内存对齐和压缩指针的原理及应用欢迎关注公众号:bin的技术小屋,大家如果看到图片显示不了的话,可以查看公众号原文 大家好,我是bin,又到了每周我们见面的时刻了,我的公众号在1月10号那天发布了第一篇文章《从内核角度看IO模型的演变》,在这篇文章中我们通过图解的方式以一个C10k的问题为主线,从内核角度详细阐述了5种IO模型的演 阅读全文
posted @ 2022-07-06 09:35 bin的技术小屋 阅读(1667) 评论(4) 推荐(1)
摘要:Netty 如何高效接收网络数据?一文聊透 ByteBuffer 动态自适应扩缩容机制本系列Netty源码解析文章基于 4.1.56.Final版本,公众号:bin的技术小屋,大家如果看到图片显示不了的话,可以查看公众号原文 前文回顾 在前边的系列文章中,我们从内核如何收发网络数据开始以一个C10K的问题作为主线详细从内核角度阐述了网络IO模型的演变,最终在此基础上引出了Netty的 阅读全文
posted @ 2022-07-05 20:26 bin的技术小屋 阅读(1398) 评论(1) 推荐(2)
摘要:抓到 Netty 一个 Bug,顺带来透彻地聊一下 Netty 是如何高效接收网络连接的本文介绍了NioServerSocketChannel处理客户端连接事件的整个过程。接收连接的整个处理框架。影响Netty接收连接吞吐的Bug产生的原因,以及修复的方案。创建并初始化客户端NioSocketChannel。初始化NioSocketChannel中的pipeline。客户端NioSocketChannel向Sub Reactor注册的过程 阅读全文
posted @ 2022-07-05 14:10 bin的技术小屋 阅读(1453) 评论(3) 推荐(4)
摘要:一文聊透 Netty 核心引擎 Reactor 的运转架构本文花了大量的篇幅介绍了Reactor整体的运行框架,并深入介绍了Reactor核心的工作模块的具体实现逻辑。通过本文的介绍我们知道了Reactor如何轮询注册在其上的所有Channel上感兴趣的IO事件,以及Reactor如何去处理IO就绪的事件,如何执行Netty框架中提交的异步任务和定时任务。最后介绍了Netty如何巧妙的绕过JDK NIO Epoll空轮询的BUG,达到解决问题的目的。 阅读全文
posted @ 2022-07-04 20:03 bin的技术小屋 阅读(1177) 评论(5) 推荐(2)
摘要:详细图解 Netty Reactor 启动全流程 | 万字长文 | 多图预警本文我们通过图解源码的方式完整地介绍了整个Netty服务端启动流程,并介绍了在启动过程中涉及到的ServerBootstrap相关的属性以及配置方式。NioServerSocketChannel的创建初始化过程以及类的继承结构。其中重点介绍了NioServerSocketChannel向Reactor的注册过程以及Reactor线程的启动时机和pipeline的初始化时机。最后介绍了NioServerSocketChannel绑定端口地址的整个流程。 阅读全文
posted @ 2022-07-04 12:59 bin的技术小屋 阅读(1931) 评论(0) 推荐(5)
摘要:聊聊 Netty 那些事儿之 Reactor 在 Netty 中的实现(创建篇)本文介绍了Netty对各种IO模型的支持以及如何轻松切换各种IO模型。还花了大量的篇幅介绍Netty服务端的核心引擎主从Reactor线程组的创建过程。在这个过程中,我们还提到了Netty对各种细节进行的优化,展现了Netty对性能极致的追求。 阅读全文
posted @ 2022-07-03 21:10 bin的技术小屋 阅读(1265) 评论(0) 推荐(2)
摘要:聊聊Netty那些事儿之从内核角度看IO模型从内核角度介绍了经常容易混淆的阻塞与非阻塞,同步与异步的概念。以这个作为铺垫,我们通过一个C10K的问题,引出了五种IO模型,随后在IO多路复用中以技术演进的形式介绍了select,poll,epoll的原理和它们综合的对比。最后我们介绍了两种IO线程模型以及netty中的Reactor模型。 阅读全文
posted @ 2022-07-03 14:40 bin的技术小屋 阅读(2129) 评论(1) 推荐(3)