Netty如何实现轻量级对象池 Netty如何实现轻量级对象池对于 Netty 这种高吞吐、低延迟的网络框架中,对象(尤其是 ByteBuf)的创建和释放极为频繁。如果每次都通过 new 来创建对象,容易产生以下问题: GC 频繁:大量短生命周期对象会频繁触发 Young GC,影响系统稳定。 延迟抖动:GC 的 Stop-The-World 事件会导致请求延迟不稳定。 内存碎片:频繁的分配和释放会导致堆内存碎片化。 Net 2026-05-06 源码分析 > Netty #源码分析 #Netty
Netty的ByteBuf好用在哪 Netty的ByteBuf好用在哪ByteBuf 是 Netty 的数据容器,所有网络通信中字节流的传输都是通过 ByteBuf 完成的。很多开发者已经使用 ByteBuf 代替 ByteBuffer,即便并不是在写一个网络应用,也会单独使用 ByteBuf。 相比 JDK 的 ByteBuffer,Netty 的 ByteBuf 好在哪? ByteBufferJDK 的 ByteBuffer 结 2026-05-05 #Netty
Netty的FastThreadLocal快在哪 Netty的FastThreadLocal快在哪Netty 不仅是高性能的网络编程框架,也有很多优秀的设计,譬如本篇要介绍的 FastThreadLocal。 FastThreadLocal 是相比 ThreadLocal 来讲的,那它究竟 fast 在哪? ThreadLocal实现ThreadLocal 可以用来实现线程内单例。 对于线程内单例,简单的实现可以维护一个 ConcurrentHa 2026-05-04 源码分析 > Netty #源码分析 #Netty
Netty逻辑架构与核心组件 Netty逻辑架构与核心组件Netty官网 里有一张 Netty 的整体功能模块结构图,如下: Netty 被分为三大模块,分别是 Core、Protocol Support 和 Transport Services。 Core 即核心层,提供了底层网络通信的通用抽象和实现,包括可扩展的事件模型、通用的通信 API、支持零拷贝的 ByteBuffer 等。 Protocol Support 即 2026-05-03 #Netty
Netty如何处理半包和粘包(附自定义通信协议实践) Netty如何处理半包&粘包TCP 传输协议是面向流的,没有数据包界限。当程序要发送一个较大的包时,由于滑动窗口以及 MTU 的影响,有可能会拆分为多个包传输;当程序要发送较小的包时,为了提高通信效率,Linux 的 Nagle 算法可能会将多个报文合并成一个大的报文进行发送。 MTU(Maxitum Transmission Unit) 是链路层一次最大传输数据的大小。 MTU 一般来说 2026-05-02 #计算机网络 #Netty
Netty如何支持3种Reactor Netty如何支持3种ReactorJava 并发包作者 Doug Lea,在 Scalable I/O in Java 一文中阐述了服务端开发中 I/O 模型的演进过程,也被 Netty、Mina 等大多数高性能 IO 服务框架所采用。 Reactor 是一种开发模式,核心流程如下: 注册感兴趣的事件; 扫描是否有感兴趣的事件发生; 对感兴趣事件做出相应的处理。 在网络I 2026-04-30 #IO模型 #Netty
选择合适的RPC 选择合适的RPCRPC(Remote Procedure Call)即远程过程调用,随着微服务的兴起,每个服务都拥有自己的数据库,负责各自的模块,例如 keystone(认证服务)负责用户信息、权限认证的内容,workOrder(工单服务)负责工单的流程流转。在 workOrder 中,可能也需要查询一些用户的信息,但用户信息表并不在该服务的数据库中,因此就需要调用 keystone 服务来获取用 2026-04-29 #计算机网络 #RPC
IO多路复用不同实现及对比 IO多路复用不同实现及对比select、poll、epoll 都是用来实现 IO 多路复用的,而多路复用发展的背景就是 socket 网络通信下提升系统的并发处理能力,单纯依靠多进程或多线程来实现对硬件要求很高,而且上限比较低,采用 IO 多路复用,可以很轻易的处理上千的并发。 虽然多路复用的机制有多种,但每一种都有一些通用的我们需要关注的问题: 该机制监听套接字上的什么事件 该机制能监听多少套 2026-04-28 #IO模型
详解5种IO模型 详解五种IO模型IO 模型是网络编程的基础,几乎所有的高性能的中间件都会提到使用了高效的 IO 模型(Redis、Kafka、Tomcat、Nginx 等)。 前言Unix 系统下的五种基本 I/O 模型大家应该都有所耳闻,分别是: blocking I/O(同步阻塞IO,BIO) nonblocking I/O(同步非阻塞IO,NIO) I/O mult 2026-04-28 #IO模型
系统性能优化之锁篇 系统性能优化之锁篇多线程下为了确保程序不会出错,必须加锁后才能访问共享资源。锁也是有层级之分的,在不同的场景下加不同的锁,对系统性能也有着很大影响。 互斥锁与自旋锁互斥锁与自旋锁是最底层的两个锁,其他的锁几乎都是基于此实现的。**互斥锁加锁失败时会释放CPU进入阻塞状态,自旋锁则会忙等待**。 **当无法确定锁住的代码需要执行多久时,应当首选互斥锁。**互斥锁是一种独占锁,当被线程取得后,除非线程 2026-04-27 性能优化 > 通用 #性能优化 #锁