文章未经允许,禁止转载~
只要涉及到分布式服务,就绕不开RPC调用。RPC是什么,我认为大部分同学都能说出个一二三。
那么RPC一次调用,到底经历了哪些过程?
一直在说RPC耗时优化,那到底时间耗在了哪里?
本篇带大家一起来梳理清晰。再遇到面试官问RPC,直接灭丫 ~
欢迎关注同名公众号「Coder的技术之路」,留言交流~
Part1前言 扯一扯RPC的蛋
RPC ?(Remote Procedure Call) 远程过程调用,目的是让调用远程服务的体验,就像调用本地方法一样简单。
已经有了HTTP,为啥还要实现个RPC? 首先,两者不在一个水平面,不好比较。http是一种传输协议,RPC由TCP传输协议和其他部分组成,算是一种架构;再者,效率和性能有所差异,Http相比tcp传输更耗性能;再再者,定位不同,Rpc一般用于实现内部网络各服务间的高性能调用,Http一般用于跨环境的数据传输和接口调用。
RPC亘古不变的三个主题? 客户端、服务端、注册中心。后续包括服务注册、服务发现、路由寻址、序列化、IO模型等等事项,都是在围绕三者之间的合作和交互来进行的。
常见RPC有哪些?
出镜最多的要数dubbo,因为总被面试官问到;
性能优良的grpc,google出品,可以在任何环境下运行;
美团的OCTO和pigeon,一个章鱼水里游,一个鸽子天上飞;
京东之前的saf,是对dubbo的定制化开发,后面升级到了自研的jsf框架,其作者之一的章老板之前就已经是蚂蚁的P8大佬了;
蚂蚁自研的sofaRPC也有章老板的参与,由于设计初衷和蚂蚁内部的使用规模,功能丰富度和服务稳定性上,那是相当不错,目前也已经开源。
Part2一次RPC调用的心路历程
一次RPC调用的心路历程
如上图所示,一次rpc调用的过程,基本都囊括在内: