RPC框架设计概要-性能

77hu尾2021-10-18 18:26

RPC,全称为Remote Procedure Call,即远程过程调用,是一种计算机通信协议。作为微服务中的核心组件,在一个系统中RPC的调用量往往是很高的,所以性能是一个很重要的考虑点。

RPC框架设计概要-性能

1.I/O模型

常见的Unix5种I/O模型分别是:阻塞I/O,非阻塞I/O,I/O复用(select,poll,epoll等支持I/O多路复用),信号驱动I/O,异步I/O;从早期的阻塞I/O方式只能创建大量的线程来保证每个用户互不影响,到现在广泛使用的I/O多路复用模型,再到异步I/O;从select模型到现在主流的epoll模型,性能有了质的升级;当然我们没必要自己去实现,可以直接使用网络通讯框架Netty,Mina等;

2.长连接短连接

短连接表示每次通讯完就关闭连接,而长连接通讯完继续保持连接,这样下次再通讯就不需要重新建立连接了,如果通讯频繁,很明显长连接性能更高;但是长连接需要做一些额外的工作,比如保活处理;另外就是如果客户端太多的话,服务器端是无法支撑的。

3.序列化方式

网络传输中的数据都需要经过序列化和反序列化处理,所以这一块的性能也很重要;常见的序列化包括:json和二进制方式,json常见的如fastjson,jackson等,二进制如protobuf,thrift,kryo等;这个可以分别从序列化的性能,大小,以及使用方便性考虑;当然稳定性和安全性也需要考虑,比如fastjson频繁爆出安全漏洞;

4.协议

这里主要讲的是应用层协议,RPC一般都会自定义协议,当然也有直接使用现有协议的比如http协议;自定义协议可以自己掌控,协议可以做的很小很精简,当然解码和编码需要自己去实现;如果使用现有的http协议,相对来说整个协议包是比较大的,但是已经是一种规范了,很多东西可以直接拿来用,更加通用;

以上就是“RPC框架设计概要-性能”一文,想了解更多相关内容,推荐大家一个高质量公开课,《微服务“三高”的架构设计实践》,点击下方图片立即免费领取。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
高并发编程训练营