Toggle navigation
面试宝典
架构师课程
开源
文章
博客
SpringCloud
CloudAlibaba
SpringBoot
Spring Boot1.X
Spring Boot2.X
关于
登录
|
注册
支付宝扫一扫帮助发展吧~
微信扫一扫帮助发展吧~
为什么建议Netty的I/O线程与业务线程分离
尹吉欢
2017-04-11
0条评论
6419人阅读
版权声明:转载请先联系作者并标记出处。
java
netty
点击阅读全文
扫描下方二维码,加入Java方向技术交流讨论群。暗号:加群
去注册
去登录
登录后发表
去注册
去登录
登录后发表
>转载自: 李林峰 Netty之家 ##问题背景: 某互联网同学咨询一个Netty使用问题:最近在研究公司内部的RPC框架,发现底层通信框架使用的是Netty,而且Netty的I/O线程与处理业务的线程分离。 具体如下: 1、负责服务端监听的是Accept NioEventLoopGroup线程组 2、负责链路读写操作的是Work NioEventLoopGroup线程组 3、消息解码完成之后,投递到后端的一个业务线程池中处理,线程池使用的是JDK自带的线程池 该同学的疑问:为什么业务的处理不能放到Work NioEventLoopGroup中? 1、如果业务线程处理比较慢,即便I/O线程处理再快,业务端到端响应还是不会缩短 2、I/O线程到业务线程存在线程上下文切换,增加了额外的开销 想法: 构造一个线程数较大(例如1024)的NioEventLoopGroup,同时处理链路的读写和业务处理。即业务处理和消息读写统一使用Netty的I/O线程池(实质自定义的线程组)。 #问题答复 ##Netty I/O线程和业务处理线程分离原因: 1、充分利用多核的并行处理能
首次访问,人机识别
扫描下方二维码回复
王老吉
获取解锁验证码
步骤:[ 打开微信 ]->[ 扫描上方二维码 ]->[ 关注
猿天地
的公众号] 输入
王老吉
获取验证码,即可永久解锁本站全部文章。
验证码:
(请输入)
提交