RPC理论-分布式系统开发技术

RPC(Reomte Procedure Call Protocol)

      远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如 TPC或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC在使得开发包括网络分布式多程序在内的应用程序更加容易。

RPC采用Client-Server结构,通过request-response消息模式实现。

RPC三个过程

  •  通讯协议
  • 寻址  互联网IP
  • 数据序列化

RPC用途

  • 服务化/微服务
  • 分布式系统架构
  • 服务可重用
  • 系统间交互调用

RPC特性以及适用场景

特点:同步调用,对于要等待返回结果的场景,RPC可以非常自然直觉的使用(RPC也可以是异步调用)。

由于等待结果,Consumer会有线程消耗。如果以异步RPC的方式使用,Consumer线程消耗可以去掉。不能暂存请求,

压力会直接传导到服务Provider。

 

 

 

RPC的流程

  1. 客户端处理过程中调用Client sub,传入参数。
  2. Client sub将参数编组为消息,然后通过系统调用向服务端发送信息。
  3. 客户端本地操作系统将消息从客户端机器发送到服务端机器。
  4. 服务端操作系统将接收的数据包传给Server stub。
  5. Server stub解组消息为参数。
  6. Server stub再调用服务端的过程,过程执行结果以反方向的相同步骤响应给客户端。

    stub(存根):分布式计算中的存根是一段代码,它转换在远程调用期间Client和Server之间的参数。

RPC流程中需要处理的问题

  1. Client stub、Server stub的开发
  2. 参数如何编组为消息,以及解组信息
  3. 消息如何发送
  4. 过程结果如何表示,异常情况如何处理
  5. 如何实现安全的访问控制

RPC协议

  调用过程中需要将参数编组为消息发送,接收方接收到消息进行解组消息参数,过程处理结果同样需要编组,解组。消息由哪些构成以及消息的表示形式就构成了协议。

协议的请求,响应消息的格式。

RPC框架基本定义

封装好了参数编组、消息解组、底层网络通信的RPC程序开发框架,让我们直接在基础上只需要专注于我们的过程代码编写。

常用RPC框架

Webservice:Apache XFC, Apache Axis2,Java自带的JAX-WS.

微服务:dubbo,spingCloud,Apache Thrift,ICE,GRPC等等

RPC框架核心功能要点

  1. 服务的暴露   根据IDL生成,共享接口
  2. 远程代理对象  JDK代理、字节码生成
  3. 通信 协议(TCP\HTTP)、消息ID、IO、连接、心跳
  4. 序列化  序列化方式、元数据、编码内容

 

 

 

你可能感兴趣的:(RPC)