知识卡片

Handler热插拔减少重复校验开销

专业/工作 · 1305

内容

在[[Pipeline责任链解决if-else泛滥]]的基础上,Pipeline还支持运行时动态增删Handler:把身份校验独立成AuthHandler插在业务Handler之前,连接一旦通过校验,就在channelRead里调pipeline.remove(this)把自己从链上摘掉,此后读取不再经过校验。这样只有登录一次付出校验成本,后续收发不用重复判断。发散:把判断成本从每次请求转移到状态转换那一刻,用链表可变性换稳态期零开销。

参考来源

《跟闪电侠学Netty:Netty即时聊天实战与底层原理》第15章《使用ChannelHandler的热插拔实现客户端身份校验》