-
选择合适的通信协议
基于 TCP 协议实现的 Socket 通信是有连接的,而传输数据是要通过三次握手来实现数据
传输的可靠性,且传输数据是没有边界的,采用的是字节流模式。
基于 UDP 协议实现的 Socket 通信,客户端不需要建立连接,只需要创建一个套接字发送
数据报给服务端,这样就不能保证数据报一定会达到服务端,所以在传输数据方面,基于
UDP 协议实现的 Socket 通信具有不可靠性。UDP 发送的数据采用的是数据报模式,每个
UDP 的数据报都有一个长度,该长度将与数据一起发送到服务端。
优化方法:
为了保证数据传输的可靠性,通常情况下我们会采用
TCP 协议。如果在局域网且对数据传输的可靠性没有要求的情况下,我们也可以考虑使用
UDP 协议,毕竟这种协议的效率要比 TCP 协议高。
-
使用单一长连接
-
优化socket网络通信
传统的socket网络通信存在I/O阻塞、线程模型缺陷、内存拷贝(用户空间–》内核空间–》 内核空间–》网络IO)两次拷贝,等问题缺陷,可以考虑使用成熟的通信框架:Netty。
1️⃣实现非阻塞I/O:使用Select的多路复用器实现非阻塞I/O
2️⃣高效的Reactor模型:使用一个主线程进行接收客户端和服务端连接请求,建立成功后进行监听此连接,同时创建一个链路请求注册到具体的工作线程中,由工作线程负责后续的I/O操作,
高并发下RPC通信优化路径
最新推荐文章于 2023-12-30 02:20:51 发布
本文探讨了在高并发环境下RPC通信的选择,分析了TCP和UDP协议的优缺点。推荐在对数据可靠性要求较高的场景下使用TCP,而在局域网并不要求可靠性时考虑UDP以提升效率。同时,介绍了Netty通信框架在优化socket网络通信方面的策略,包括非阻塞I/O、Reactor模型、串行设计和零拷贝技术。最后,强调了量身定制报文格式和使用 Protobuf 序列化的重要性。
摘要由CSDN通过智能技术生成