开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 18 天,点击查看活动详情
http与rpc
本文主要内容是对于两种网络请求,http与rpc相关知识的总结。
http
http是一种非常常用的网络传输协议,中文名称为超文本传输协议,顾名思义,也就是凌驾在文本传输之上的一种协议,除了文本类型信息之外,还可以进行音视频流等内容的传输。目前常用的http版本一般为1.0,1.1以及最新的2.0。对于http来说,它是一种应用层的传输协议,而在传输层,对应采用的是tcp。当我们的浏览器或客户端等发送一次http请求时,会首先与服务器建立tcp三次握手连接,当请求结束时,同样会进行tcp四次挥手进行连接的断开。http1.0版本及以下是一种短连接,而1.1版本之后,支持采用长连接,也就是多个http传输,实际上采用的是同一个tcp连接。
rpc
rpc同样是一种应用层的传输协议,且诞生时间比tcp更早,它的底层既可以是tcp,也可以是udp。rpc协议是指远程调用,像调用本地方法一样调用远程服务的方法。rpc由于需要中间层的服务发现,要比http定制化的程度更高,一般是用于cs的客户端服务器架构以后端服务之间的调用。
有了http为什么还要使用rpc
下面就对http及rpc进行一下对比。两者底层都可以采用tcp,而tcp传输时是二进制流,也就是不知道在哪个位置进行流的中断。http及rpc就进行中断点的设置,来实现数据的解析。http在访问时可以直接通过域名进行服务端地址的解析,而rpc则是需要一个单独的连接池进行处理。http进行结构体内容传输时,可以采用json、protobuf等等,而在这点上rpc由于定制化的程度更高,可以采用更小的协议来实现结构体内容的传输。另外,http1.1之后底层的tcp默认会采用长连接进行处理,也就是tcp连接的复用,而rpc在连接过程中又会额外增加一个连接池,以此来实现连接的动态复用。目前主流的都会采用http协议,但rpc协议由于其传输效率更高体积更小,一般会用在微服务间的调用及内部系统的调用等等。
总结
本文主要是对于http和rpc两种连接协议进行了基本的介绍,并对两种连接协议之间的区别、使用场景等内容进行了总结。