永发信息网

为什么建议Netty的I/O线程与业务线程分离

答案:1  悬赏:0  手机版
解决时间 2021-04-01 21:35
为什么建议Netty的I/O线程与业务线程分离
最佳答案
Netty I/O线程和业务处理线程分离原因:


1、充分利用多核的并行处理能力:I/O线程和业务线程分离,双方可以并行的处理网络I/O和业务逻辑,充分利用多核的并行计算能力,提升性能。
2、故障隔离:后端的业务线程池处理各种类型的业务消息,有些是I/O密集型、有些是CPU密集型、有些是纯内存计算型,不同的业务处理时延,以及发生故障的概率都是不同的。如果把业务线程和I/O线程合并,就会存在如下问题:
1)某类业务处理较慢,阻塞I/O线程,导致其它处理较快的业务消息的响应无法及时发送出去。
2)即便是同类业务,如果使用同一个I/O线程同时处理业务逻辑和I/O读写,如果请求消息的业务逻辑处理较慢,同样会导致响应消息无法及时发送出去。
3、可维护性:I/O线程和业务线程分离之后,双方职责单一,有利于代码维护和问题定位。如果合设在一起,当RPC调用时延增大之后,到底是网络问题、还是I/O线程问题、还是业务逻辑问题导致的时延大,纠缠在一起,问题定位难度非常大。例如业务线程中访问缓存或者数据库偶尔时延增大,就会导致I/O线程被阻塞,时延出现毛刺,这些时延毛刺的定位,难度非常大。

4、资源代价:NioEventLoopGroup的创建并不是廉价的,它会聚合Selector,Selector本身就会消耗句柄资源。
Netty的NioEventLoop设计理念就是通过有限的I/O线程,通过多路复用和非阻塞的方式,一个线程同时处理成百上千个链路,来解决传统一连接一线程的同步阻塞模型。
因此,它的创建成本也较高,一个进程中不宜创建过多NioEventLoop。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
拉30吨,买牵引车要多大马力的,还有是6×2还
请问管家婆辉版的资金投入跟固定资产怎么做,
傍人口说两相当 谁知心内有虎狼 面好原来心不
求教,成都到大竹要坐多久汽车
什么软件能看《阿衰》免费漫画全集?
笛子就6个孔,怎么吹出7个音?
求问杭州的各个公考培训班哪个最靠谱
关于沙加到底是释迦摩尼转世还是普通的佛陀转
小美这个名字怎么样
一旦中国外汇储备为负数,会出现什么现象
甲基碳正离子是sp2杂化,为什么只有一个p轨道
用建筑面积和总计容面积的区分
穿越火线龙啸横劈咋劈
今年12月份以前满6岁的可以读一年级吗?
服装设计怎么画
推荐资讯
dota2幽暗肉搏尖刺外壳计算护甲吗
请问贵州体育生的综合分是怎样计算的
猫头鹰想睡觉,他和邻居的规律不一样,森林里
蛋糕玫瑰花的挤法视频
帮忙翻译一下~~急!!!!!!
曝气池风机选型
某学生利用如图所示的装置制备某种干燥纯净的
上市公司年报中,其中的每股未分配利润和每股
优赛伦汽车皮带质量怎么样?
水泥壁为什么嵌鹅卵石
这些词哪些不是一类的?1,小满,立秋,春雨
草鱼全部喂蝇蛆会怎么样?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?