Netty特性(二) 多线程编程最佳实践
欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/xwzhj/2019/0611/324.html
文章目录
本文是《Netty 权威指南》的摘要和读后感,收获颇深,整理成文。
基于主从Reactor多线程模型
基于主从Reactor多线程模型,创建两个NioEventLoopGroup,用于逻辑隔离NIO Acceptor的NIO I/O线程。
尽量不要在ChannelHandler中启动用户线程
尽量不要在ChannelHandler中启动用户线程,解码后用于将POJO消息派发到后端业务线程的除外。
解码要放在NIO线程调用的解码Handler中进行
解码要放在NIO线程调用的解码Handler中进行,不要切换到用户线程中完成消息的解码。
复杂业务不要在NIO线程上完成
如果业务逻辑处理复杂,不要在NIO线程上完成,建议将解码后的POJO消息成Task,派发到业务线程执行,以保证NIO线程尽快被释放,处理其他的I/O操作。
推荐的线程数
方案一
线程数量 = (线程总时间 / 瓶颈资源时间) x 瓶颈资源的线程并行数
方案二
QPS = 1000 / 线程总时间 x 线程数