视频资源获取失败
你好,我是何小锋。上一讲我分享了 RPC 原理,其核心是让我们像调用本地一样调用远程,帮助我们的应用层屏蔽远程调用的复杂性,使得我们可以更加方便地构建分布式系统。总结起来,其实就一个关键字:透明化。
接着上一讲的内容,我们再来聊聊 RPC 协议。
一提到协议,你最先想到的可能是 TCP 协议、UDP 协议等等,这些网络传输协议的实现在我看来有点晦涩难懂。虽然在 RPC 中我们也会用到这些协议,但这些协议更多的是对我们上层应用是透明的,我们 RPC 在使用过程中并不太需要关注他们的细节。那我今天要讲的 RPC 协议到底是什么呢?
可能我举个例子,你立马就明白了。HTTP 协议是不是很熟悉(本讲里面所说的 HTTP 默认都是 1.X)? 这应该是我们日常工作中用得最频繁的协议了,每天打开浏览器浏览的网页就是使用的 HTTP 协议。那 HTTP 协议跟 RPC 协议又有什么关系呢?看起来他俩好像不搭边,但他们有一个共性就是都属于应用层协议。
所以我们今天要讲的 RPC 协议就是围绕应用层协议展开的。我们可以先了解下 HTTP 协议,我们先看看它的协议格式是什么样子的。回想一下我们在浏览器里面输入一个 URL 会发生什么?抛开 DNS 解析暂且不谈,浏览器收到命令后会封装一个请求,并把请求发送到 DNS 解析出来的 IP 上,通过抓包工具我们可以抓到请求的数据包,如下图所示:

作者回复: 你好,非常正确。
作者回复: rpc为了吞吐量,会异步并发发送请求,等待应答,所以需要知道哪个应答对应那个请求
作者回复: grpc基于http2,更容易跨语言支持。
作者回复: 是的
作者回复: 很赞。异步场景用于区分应答消息。
作者回复: 👍
作者回复: 看的仔细😁
作者回复: 可以,例如http2。目前性能不如tcp好。
作者回复: 你可以理解成每个协议的名字
作者回复: 👍