专业的编程技术博客社区

网站首页 > 博客文章 正文

边学边记:RPC框架调用过程(rpc框架的使用)

baijin 2024-10-30 01:29:09 博客文章 7 ℃ 0 评论

RPC简介

RPC是远程过程调用(Remote Procedure Call)的缩写形式。它是一种通过网络请求远程计算机程序上的服务,而不需要了解底层网络技术的协议,代码中不用做额外的编程处理,就像直接调用本地方法一样。

RPC框架角色

在RPC框架中有三个重要的角色:RPC Server、RPC Client和Registry,如下图所示:

RPC Server:即Provider,暴露服务的服务提供者

RPC Client:即Consumer,调用远程服务的服务消费者

Registry:服务注册与发现的服务注册中心

RPC核心组件

RPC架构包含五个核心组件,Client,Client Stub,Server,Server Stub,NetWork Service,Stub可以理解为存根。

  • Client:客户端,服务的调用方
  • Client Stub:客户端存根,存放服务端的地址消息,负责将客户端的请求信息组装成网络消息,通过网络远程发送给服务提供方
  • Server:服务端,真正的服务提供方
  • Server Stub:服务端存根,接收客户端发来的消息,并将消息解压后调用本地服务方法
  • NetWork Service:底层网络传输,可以是TCP或HTTP
  • RPC调用过程

    RPC框架的整体调用过程,如下图所示:

    1. 客户端Client通过以本地调用的方式,调用远程接口服务;
    2. 客户端存根Client Stub接收到调用后,将调用信息对象进行序列化,组装成网络传输的二进制消息体;
    3. 客户端Client通过Sockets将消息发送到远程服务端;
    4. 服务端存根Server Stub收到消息后,对网络信息对象进行反序列化解码;
    5. 服务端存根Server Stub根据解码结果,调用服务端本地的接口服务;
    6. 本地接口服务执行,并将处理结果返回给服务端存根Server Stub;
    7. 服务端存根Server Stub将返回结果对象进行序列化,组装成消息体;
    8. 服务端Server再通过Sockets将消息发送到客户端;
    9. 客户端存根Client Stub收到结果消息后,对网络信息对象进行序列化解码;
    10. 客户端Client拿到最终接口处理结果。

    RPC构架的目标是就是把2、3、4、7、8、9步骤都封装起来,让调用方感觉像是调用本地方法一样。

    开源的RPC框架

    Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言

  • Spring Cloud相比Dubbo等RPC框架, Spring Cloud提供全套的分布式系统解决方案
  • gRPC是Google开发的高性能、通用的开源RPC框架,支持多种语言。
  • 你还知道哪些优秀的开源RPC框架,欢迎评论并推荐。

    Tags:

    本文暂时没有评论,来添加一个吧(●'◡'●)

    欢迎 发表评论:

    最近发表
    标签列表