一:为什么会出现RPC呢?


当公司业务量还是很小的时候,所有的程序都放置在一台机器上,程序之间通过函数或者类来调用。
1:当公司的业务发展越来越大,业务线越来越多,公司后端人员也越来越多,分布在不同的业务线,不同的项目里,其他项目组开发了一个服务,另外一个组想调用这个服务,这时候该怎么办?
2:业务越来越多,我们需要划分不同的业务模块,需要把公共服务独立出来,如何调用这些公共服务和不同的业务模块提供的服务?
3:如果后端有2个开发组,做着的不同业务,并且使用不同的开发语言,比如php和java,那么他们之间的业务怎么相互进行调用呢?
这时候 rpc 就应运而生了,它可以在不同的模块不同语言之间进行通信。

所以 rpc 是业务变得越来越多,需要对业务进行拆分,不同的模块提供不同的服务时,各服务模块之间相互进行通信的一种方式。

二:RPC是什么?


RPC(Remote Procedure Call Protocol)——远程过程调用协议。
它是一种通过网络从远程计算机程序上请求服务,而调用者不需要了解底层网络技术的协议,它让调用者对网络通信这些细节是透明的。
rpc采用的是客户端<—–>服务器模式。 请求程序是一个客户机,而服务提供程序就是一个服务器。
rpc的通信模型如下图:

RPC简介-风君雪科技博客

 三:有哪些RPC框架


各大互联网公司都根据自己公司业务特点开发了自己的rpc框架,如阿里巴巴的hsf、dubbo(开源)、Facebook的thrift(开源)、Twitter的finagle(开源)等

下一篇我们分析下thrift框架,看看rpc框架是怎么进行通信的,它的原理是什么?