『腾讯』RPC实现原理(Java简单实现一个RPC)


『腾讯』RPC实现原理(Java简单实现一个RPC)
文章图片
『腾讯』RPC实现原理(Java简单实现一个RPC)
文章图片
『腾讯』RPC实现原理(Java简单实现一个RPC)
文章图片
『腾讯』RPC实现原理(Java简单实现一个RPC)
文章图片
『腾讯』RPC实现原理(Java简单实现一个RPC)
文章图片
『腾讯』RPC实现原理(Java简单实现一个RPC)

RPC实现原理(Java简单实现一个RPC)
RPC简介RPC(Remote Procedure Call)即为远程过程调用 。 RPC是一种通信协议 , 一个服务调用另一个服务就像调用本地服务一样 , 而不用关注网络通信的细节 。 这个两个应用可以在同一个机器 , 也可以在不同的机器上 。 RPC的实现有RMI、Hessian、Http 等 。
RPC的执行过程如下所示:
执行过程
【『腾讯』RPC实现原理(Java简单实现一个RPC)】1、客户端发起远程调用 , 把请求发送给被调用方 , 客户端等待远程执行的结果 。
2、服务方接受请求 , 执行完把结果返回给客户端 , 此时客户端收到结果继续执行余下逻辑 。
RPC的底层调用过程:
RPC调用原理
调用步骤如下:

  • 客户端调用客户端存根的方法
  • 客户端存根组装请求发送给传输层 , 把数据通过网络发给服务方
  • 服务器的传输层接收到数据 , 把请求转到服务器存根 , 服务器存根进行普通的方法调用 , 最后把结果通过传输层发送到客户端
  • 客户端收到结果 , 通过客户端存根解析结果 , 最后把结果返回给调用者 。
Java实现RPC技术和架构上面简单说了RPC的核心原理 , 我们现在用Java实现一个简单的RPC调用 。
实现技术:
采用Socket通信、Java动态代理、反射与Java序列化 。
实现架构:
·1、服务端提供一个接口 , 并在服务端实现接口;在服务端启动一个Server Socket, 等待客户端连接和发送数据;收到客户的请求数据并解析 , 最后通过反射调用本地服务 , 把结果通过socket传输给客户端 。
2、服务消费者依赖服务器接口 , 客户端通过动态代理 , 生产一个接口的代理类;客户端调用代理方法时会把请求数据通过Socket把请求发送给服务器并等待服务器返回结果 。
3、注册中心 , 服务端注册到服务到注册中心 , 客户端从注册中心获取服务的连接信息 。
Java实现RPC1、服务端提供一个接口HelloService , 有两方法 , 一个是无返回值 , 一个有返回值 。
HelloService接口
2、服务端实现这个接口:
HelloService的实现类
3、核心包中定义两个公共接口Request和Resonse 。
Request和Response
4 , 定义一个注册中心Registry , 注册服务是提供一下信息:
  • 服务端IP地址
  • 服务器端口

Registry
5、服务端定义一个服务提供者Provider , 在启动服务的前先把服务注册到注册中心 , 之后启动一个Server Socket 。 等待客户的数据 , 读取到数据后转换成请求对象Request对象 , 最后通过反射调用本地方法 , 最后通过Socket把结果写回客户端 。


推荐阅读