一、引子:从水库泄洪看流量控制
想象一个水库管理系统:当水位超过红色警戒线(高水位),必须关闭闸门防止溃坝;当水位回落到安全线(低水位),重新开闸放水。

Netty的水位机制正是这种思想的程序化实现,通过双阈值控制和状态切换,在TCP层构建了一套高效的流量控制体系。
Netty中的水位机制(High/Low Water Mark)是流量控制的核心设计,通过写入缓冲区阈值管理实现背压(Back Pressure)控制。
二、水位机制核心技术拆解
1. 核心三要素
高水位线(High Water Mark):默认为64KB,触发写入暂停的阈值低水位线(Low Water Mark):默认为32KB,恢复写入的阈值- 缓冲状态机:在可写(Writable)与不可写(Unwritable)间动态切换
2. 底层运作流程

3. 关键源码定位
检测点:io.netty.channel.ChannelOutboundBuffer
// 写入缓冲区时检测水位
void incrementPendingOutboundBytes(long size) {
long newTotal = totalPendingSize + size;
// 高水位检测
if (newTotal > highWaterMark) {
setUnwritable();
}
totalPendingSize = newTotal;
}
三、工程实践中的高阶用法
// 设置水位线(建议值为默认的2-4倍)
bootstrap.

最低0.47元/天 解锁文章
527

被折叠的 条评论
为什么被折叠?



