RPC原理及RPC实例分析

Posted wencenty

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RPC原理及RPC实例分析相关的知识,希望对你有一定的参考价值。

1、什么是RPC

由于各服务部署在不同的机器,服务间的调用免不了网络通信过程,服务消费方没调用一个服务都要写一坨网络通信相关的代码,不仅负责而且容易出错

RPC(Remote Procedure Call)远程过程调用能让我们像调用本地服务一样调用远程服务,而让调用方对网络通信这些细节透明

常见的RPC框架:

  • 阿里巴巴的hsf、dubbo
  • Facebook的thrift
  • Google的grpc
  • Twitter的finagle等

2、RPC调用过程及涉及到的通信细节

 

  1. 服务消费方(client)调用以本地调用方式调用服务
  2.  client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体
  3. client stub找到服务地址,并将消息发送到服务端
  4. server stub收到消息后进行解码
  5. server stub根据解码结果调用本地服务
  6. 本地服务执行并将结果返回给server stub
  7. server stub将返回结果打包成消息并发送至消费方
  8. client stub接收到消息,并进行解码
  9. 服务消费方得到最终结果

RPC的目标就是要将2-8这些步骤都封装起来,让用户对这些细节透明

3、如何做到透明化远程服务调用

怎么封装通信细节才能让用户像以本地调用方式调用远程服务呢?

对JAVA来说就是使用代理!

 Java代理的两种方式:

  • JDK动态代理
  • CGLIB字节码生成 

 

以上是关于RPC原理及RPC实例分析的主要内容,如果未能解决你的问题,请参考以下文章

网络编程 -- RPC实现原理 -- RPC -- 迭代版本V3 -- 远程方法调用 整合 Spring

区块链 | 智能合约Ethereum源代码- 以太坊RPC通信实例和原理代码分析(上)

面向服务架构之RPC原理与实例

自编写RPC通信实例解析HadoopRPC通信原理

自编写RPC通信实例解析HadoopRPC通信原理

服务化实战之 dubbodubboxmotanthriftgrpc等RPC框架比较及选型