什么是RPC?它干了些什么?

RPC

远程过程调用协议。通过网络从远程计算机程序请求服务,不关心底层网络技术的协议。简而言之,RPC从一台机器(客户端)通过参数传递的方式调用另一台机器(服务器)的方法(服务)并得到返回结果。

RPC干了什么?

  • 确定客户端与服务端间的通信协议
  • 高效网络通信(一般选择Netty作为网络通信框架)
  • 服务器提供的服务如何暴露给客户端(zookeeper注册服务)
  • 客户端如何发现暴露的服务(寻址找到服务)
  • 请求和响应高效序列化和反序列化(json,protobuf)

RPC实现原理架构图

组成说明

1、客户端:服务调用端

2、client stub:存放服务器地址信息,打包客户端数据成网络消息,再通过网络传输发送给服务器

3、server stub:解压客户端发送的请求消息,调用服务器

4、服务端:服务真正提供者

工作流程

  1. 建立连接。建议长连接,心跳定期检查连接是否还在
  2. 服务寻址。提供者向注册中心(zookeeper)注册服务,调用者向注册中心查询订阅服务,调用者找到IP和Port调用提供者的接口。提供者定期向注册中心发送心跳检测
  3. 网络传输数据。序列化和反序列化
  4. 服务调用。调用者调用提供者接口得到返回结果,进行业务处理

RPC主流框架有哪些?

  • RMI
    • java实现
  • Hession 
    • 基于http协议,采用二进制编码
  • protobuf-rpc-pro   
    • java类库,基于Protocol Buffers 协议,Netty底层的NIO
  • Thrift
    • 支持多种语言
  • Avro 
    • 云计算的数据交换和存储的Protocol,支持HTTP,TCP协议
  • Dubbo
    • 高性能服务框架     
原文地址:https://www.cnblogs.com/ivy-xu/p/12578707.html