(面试题)什么是RPC

143 阅读1分钟

概念

  • RPC,叫做远程过程调用。通俗的说就是A服务要调用B服务的方法,但是这两个服务又不在一个服务器上,不可能直接去调用,所以需要RPC,像调用本地服务一样去调用远程服务

流程

  1. 客户端发起调用,将参数序列化,通过网络发给服务端
  2. 服务端将参数反序列化,调用本地服务获得执行结果
  3. 服务端将执行结果序列化发送给客户端
  4. 客户端反序列化执行结果

关键技术

  1. 动态代理:客户端需要像调用本地方法一样调用远程服务,我们一般通过动态代理来生成具体的实现类去调用远程服务,这里可以考虑使用JDK动态代理或者CGLIB动态代理
  2. 序列化与反序列化:通过网络发送数据必须要求转化成字节流进行传输,所以必须序列化。这里可以可以考虑JDK原生序列化、JSON序列化或者XML序列化
  3. 网络传输:使用TCP保证可靠传输,或者使用UDP加快传输速率
  4. 服务注册中心:如果我想通过服务名来调用服务,就要用到注册中心,获取这个服务的IP和端口号才能发起调用。