网络I/O优化

本文介绍了网络I/O优化的关键点,包括减少网络交互次数,如使用缓存和批量请求;减小传输数据量,如压缩和序列化;减少字符到字节的转化;以及探讨同步与阻塞的概念,分析了同步阻塞、同步非阻塞、异步阻塞和异步非阻塞四种模式对I/O性能的影响。建议参考相关资料深入理解bio、nio和aio的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络I/O优化的基本原则:

1.减少网络交互的次数
在网络交互两端设置缓存,发起交互的一端设置缓存,如优秀的数据库框架hibernate,mybatis都有一级缓存和二级缓存,有效的减少了数据库的访问次数,即减少了网络链接的次数,在接收端设置缓存可以减少数据的处理时长,使ESTABLISHED状态缩短,加快链接释放速度,链接状态转换如下图:

也可以通过合并的方式减少交互次数,即批量请求,比如数据库事务.

2.减少网络传输数据量的大小

发送内容可以压缩后在发送

3.尽量减少编码

网络i/o中都是通过字节传输的,如果要传输的是字符形式的数据,字符转化字节比较耗时,如果在传输前就将字符转成字节,可以减少传输时间

可以通过序列化方法对发送的数据进行压缩,如用protobuf工具来传输数据量较大的数据

4.同步与阻塞

同步是指做完一件事才能做第二件事,发送两个请求,发送完一个并返回结果才能发送第二个,而异步则是可以同时做两件事

阻塞是指一个流程卡主时cpu空闲下来等待流程畅通,非阻塞则为cpu去做其他的事情,Nio中非阻塞的体现就是cpu可以轮询其他的通道.

 组合的方式有4种,分别实同步阻塞、同步非阻塞、异步阻塞、异步非阻塞,如下表所示。这4种方式都对I/O性能有影响。

组合方式 性能分析
同步阻塞 最常用的一种用法,使用也是最简单的,但是I/O性能一般很差,CPU大部分处于空闲状态
同步非阻塞

提升I/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值