RPC框架
RPC(Remote Promote Call) 一种进程间通信方式。允许像调用本地服务一样调用远程服务。
RPC框架的主要目标就是让远程服务调用更简单、透明。RPC框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式(XML/JSON/二进制)和通信细节。开发人员在使用的时候只需要了解谁在什么位置提供了什么样的远程服务接口即可,并不需要关心底层通信细节和调用过程。
RPC框架实现的几个核心技术点:
(1)远程提供者需要以某种形式提供服务调用相关的信息,包括但不限于服务接口定义、数据结构、或者中间态的服务定义文件。例如Facebook的 Thrift的IDL文件,Web service的WSDL文件;服务的调用者需要通过一定的图景获取远程服务调用相关的信息。
(2)远程代理对象:服务调用者用的服务实际是远程服务的本地代理。说白了就是通过动态代理来实现。
(3)通信:RPC框架与具体的协议无关。
(4)序列化:毕竟是远程通信,需要将对象转化成二进制流进行传输。不同的RPC框架应用的场景不同,在序列化上也会采取不同的技术
RPC面临的挑战
在大规模服务化之前,应用可能只是通过RPC框架,简单的暴露和引用远程服务,通过配置URL地址进行远程服务调用,路由则通过F5负载均衡器等进行简单的负载均衡。
当服务越来越多的时候,服务的URL配置管理变得更加困难。单纯的使用RPC就有点吃不消。所以在大规模分布式集群中,RPC只是作为集群的一个方法调用手段。例如在Hadoop的进程间交互都是