- 服务端在接收消息之后,存在着编码、解码、读取和发送等链路操作
- 如果这些操作基于并行实现,无疑会导致严重的锁竞争,进而导致系统的性能下降
- 为了提升性能,Netty采用串行无锁化完成链路操作,提供了Pipeline,实现链路的各个操作在运行期间不会切换线程
- 数据从内存发到网络中,存在两次拷贝,先是从用户空间拷贝到内核空间,再从内核空间拷贝到网络IO
- NIO提供的ByteBuffer可以使用Direct Buffer模式
- 直接开辟一个非堆物理内存,不需要进行字节缓冲区的二次拷贝,可以直接将数据写入到内核空间
- TCP_NODELAY:用于控制是否开启Nagle算法
- Nagle算法通过缓存的方式将小的数据包组成一个大的数据包,从而避免大量发送小的数据包,导致网络阻塞
- 在对时延敏感的应用场景,可以选择关闭该算法
- SO_RCVBUF / SO_SNDBUF:Socket接收缓冲区和发送缓冲区的大小
- SO_BACKLOG:指定客户端连接请求缓冲队列的大小
- 服务端处理客户端连接请求是按顺序处理的,
推荐阅读
- Java 程序员需要用到 10 个测试框架和库
- 茶之天目湖白茶介绍
- VLAN工作原理之TRUNK:基本概念和2个工作场景
- 梦见自己在大水中游 梦见身处大水之中
- PHP和JAVA 几个微信开发框架平台推荐
- JRE、JDK、JVM 之间的区别与联系
- 潮州式泡法之,潮州的杂派泡法
- 黄果树瀑布泉水沏茶之清香意蕴 人之恬淡心灵
- 对联被撕了之后可以再贴吗 贴对联不小心撕破了能不能撕下来
- 香椿为什么要用热水焯一下 香椿用热水烫完之后用过凉水吗