前言
看到很多人不理解什么是RPC,特撰文分享一下。(尤其是那些分不清http和rpc的人,一定要看)
RPC概念
RPC即远程过程调用(Remote Procedure Call),这么讲你可能不明白,画个图
这就是一个RPC场景
我习惯这么去理解:RPC(远程过程调用)是一功能的称呼,这个功能就是客户端和服务端之间数据交互的过程,不是一个具体的技术/代码。就好比“软件开发”是一个笼统的描述,具体有java、c、go、.net、php等等....
RPC到底有什么呢?
1、 RPC核心过程
既然它的意思是客户端和服务端之间数据交互的过程,那包含了哪些东西?
rpc核心过程包括了客户端和服务端的通讯协议,寻址,数据序列化/反序列化
举个例子,你(客户端)要一个外国人(服务端)帮你干一件事情,这就是RPC的过程,这个过程是这样的:
注意看3个核心过程
你可以选择飞过去找一个外国人(寻址),面对面的交谈(通信),要让她帮你干活,你们之间必须用一样的语言(数据序列化)进行交流。
2、 RPC协议
协议就是,详细的规定了上面说的RPC三个核心过程怎么样去实现。比如:规定协议是tcp还是udp,你通过什么方式去找到服务端的地址,请求/响应数据如何去组装。
http,dubbo-rpc,rmi等很多协议都属于rpc范畴,如果你要基于他们去实现rpc,就得遵守它们这个协议。
就像你要去写一个http客户端,你就必须按照它的要求去实现,组装数据的方式也要按它的来。
3、 RPC框架
对上述核心过程进行了封装,不需要开发人员自己去定义协议、实现序列化的细节工作,这样的组件称为RPC框架,常见的框架比如:thrift,gRpc,dubbo,motan 。
4、 写在最后
rcp技术被称为分布式系统的基石,在互联网公司应用是最广泛的,如果你长期重复没技术含量的工作,还没有接触过这些分布式系统开发技术,一定用心学习,提升自己的竞争力。
图片转自网络,侵删
大型公司都会搞自己的一套RPC框架,你懂了核心原理,就会发现没什么区别,万变不离其中!
今天的知识你明白了吗?不明白的地方可以留言或私信一起讨论哦!
每天收获一点点,坚持带来大改变!