知识卡片
write与flush分离的攒批设计
内容
Channel的write方法不会立即把数据发到socket,只是把待写对象包装成节点追加到内部ChannelOutboundBuffer队尾。真正把数据从队列搬到socket缓冲区的是flush,它遍历未刷新节点并调JDK底层写。writeAndFlush只是write加flush的组合调用。发散:提交和执行拆两步是攒批套路,多次write先排队,业务代码决定何时统一flush,减少陷内核态。
参考来源
《跟闪电侠学Netty:Netty即时聊天实战与底层原理》第26章《writeAndFlush解析》