Netty学习20-Netty线程模型优化和写优化

本文探讨了Netty在CPU密集型与IO密集型场景下的线程模型选择及优化策略,包括如何合理配置线程数量,使用独立线程池处理业务逻辑,以及通过flushConsolidationHandler解决写操作中的常见问题。

学习第44节

CPU 密集型,使用线程模型:
• Runtime.getRuntime().availableProcessors() * 2
• io.netty.availableProcessors * 2
• io.netty.eventLoopThreads

IO 密集型使用线程模型:
• 独立出 “线程池”来处理业务
• 在 handler 内部使用 JDK Executors
• 添加 handler 时,指定1个:
EventExecutorGroup eventExecutorGroup = new UnorderedThreadPoolEventExecutor(10);
pipeline.addLast(eventExecutorGroup, serverHandler)

写操作时常见的问题,容易每句写操作都加上writeAndFlush
在这里插入图片描述
对于此种问题的优化方法:
1、利用 channelReadComplete
在这里插入图片描述
但是此种方式也有缺点:
• 不适合异步业务线程 (不复用 NIO event loop) 处理:channelRead 中的业务处理结果的 write 很可能发生在 channelReadComplete 之后
• 不适合更精细的控制:例如连读 16 次时,第 16 次是 flush,但是如果保持连续的次数不变,如何做到 3 次就 flush
如果要克服这些问题,需要使用flushConsolidationHandler。

注:内容参考极客时间相关课程

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值