可能还有些小伙伴不太清楚,再来看个图。
把之前的用户实现拆分出来弄了一个用户服务,订单相关的也拆成了订单服务,都单独部署。
这样订单相关的服务要获取用户的信息就需要远程调用了。
可以看到 RPC 就是通过网络进行远程调用,订单服务其实就是客户端,而用户服务是服务端。
这又涉及到交互了,所以也需要约定一个格式,至于要不要用 HTTP 这个格式,就是大家自己看着办。
至此相信你对 HTTP 是啥也清楚了。
RPC 和 HTTP 的之间的关系也清楚了。
下次再也不怕被面试官问这个了。
那为什么要有 RPC?
可能你常听到什么什么之间是 RPC 调用的,那你有没有想过为什么要 RPC, 我们直接 WebClient HTTP 调用不行么?
其实 RPC 调用是因为服务的拆分,或者本身公司内部的多个服务之间的通信。
服务的拆分独立部署,那服务间的调用就必然需要网络通信,用 WebClient 调用当然可行,但是比较麻烦。
我们想即使服务被拆分了但是使用起来还是和之前本地调用一样方便。
所以就出现了 RPC 框架,来屏蔽这些底层调用细节,使得我们编码上还是和之前本地调用相差不多。
并且 HTTP 协议比较的冗余,RPC 都是内部调用所以不需要太考虑通用性,只要公司内部保持格式统一即可。
所以可以做各种定制化的协议来使得通信更高效。
比如规定 yes 代表 yes的练级攻略,你看是不是更高效了,少传输的 5 个字。
就像特殊行动的暗号,高效简洁!
所以公司内部服务的调用一般都用 RPC,而 HTTP 的优势在于通用,大家都认可这个协议。
所以三方平台提供的接口都是通过 HTTP 协议调用的。
所以现在知道为什么我们调用第三方都是 HTTP ,公司内部用 RPC 了吧?
对了。
上面这段话看起来仿佛 HTTP 和 RPC 是对等关系,不过相信大家看了之前的解析心里应该都有数了。
最后
最近几次面试下来我发现挺多同学基础还是挺薄弱的。
地基要牢啊,八股文得背没错,但是这种基本概念性的东西还是有必要清晰的。
看起来好像对平时的编码没什么用,但是这可以认为是一个“世界观”。
这对于一些事物的判断和认知有很重要的意义。
你站的高才能看的远。
对了,理解了 HTTP 的本质相信你对 RESTful 风格也应该会有更深一层的理解。
HTTP 它是协议,不是运输通道。
下一篇我会剖析下 RESTful ,让你知其然知其所以然。
平日的面试题遇到难处,或者看某个知识点翻遍全网的资料还是感觉很模糊、不透彻,可以私聊我,给我留言。
遇到合适的我会整理写出一篇文章,注意这个前提我认为合适的。
那种工作遇到很细节的场景的还是别了,这种问你上司比较合适:)。
我是 yes,从一点点到亿点点,欢迎在看、转发、留言,我们下篇见。