先报答案:RPC框架中TCP内容=我们自定义的规则;HTTP就是通用规则。(个人理解)
初期理解RPC就是个封装好的远程调用框架,Http就是没封装好的。所以RPC是个封装好的Http?
什么是RPC
RPC全称为remote procedure call,即远程过程调用。借助RPC可以做到像本地调用一样调用远程服务,是一种进程间的通信方式。
四个核心的组件:客户端,客户端存根,服务器,服务器存根
客户端(Client),服务的调用方。
客户端存根(Client Stub),存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
服务端(Server),真正的服务提供者。
服务端存根(Server Stub),接收客户端发送过来的消息,将消息解包,并调用本地的方法。
Http协议
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
就是前端常用的,调用接口然后拿到返回值。
TCP又是什么?
TCP传输协议
顾名思义TCP是用来传数据的。
他们是一层套一层的。
IP头+IP内容
IP内容=TCP头+TCP内容
TCP内容=Http头+Http内容(这里面就是熟悉的request 和response)
IP头就是IP地址了,要发到哪去。
TCP头是用来维持数据包的顺序,顺序乱了就没意义了。
结论
现在比较流行的RPC框架,都会采用TCP作为底层传输协议。
所以RPC框架中TCP内容=我们自定义的规则;HTTP就是通用规则。
区别就很好理解了,自己定制的规则肯定比通用的更快更安全,但是有局限性。
但是第一代springcloud Netflflix(就是做视频那个耐飞)中服务调⽤的feign又是通过http实现的,
而第二代 Spring Cloud(Spring Cloud Alibaba)又用上了dubbo是RPC,所以他们之间的差别是不是比我想象的要小很多?
网友评论