• RPC简介


         RPC(Remote Process Call Protocol),远程过程调用协议,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。

         RPC采用客户机/服务器模式,请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息。最后,客户端调用进程接收答复信息,获得进程结果。客户端和服务器之间建立TCP连接,远程过程调用所有交换的数据都在这个连接里传输。连接可以是短连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接。

         以下是一个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步封装起来。

    常见的RPC框架:

    1.RMI,Remote Method Invocation,远程方法调用。这个是Java原生的API,能够让在某个Java虚拟机中的对象调用另一个Java虚拟机中对象的方法,使用时不需要引入其他任何第三方jar包,但是要求客户端代码和服务端代码都要用Java语言编写,而且速度太慢,基本没有人用。

    2.Thrift,Facebook开源并被Apache孵化。是一个跨语言的框架,客户端代码和服务端代码可以用不通的语言编写。

    3.Dubbo。

    4、gRPC。在某手内部广泛使用。

  • 相关阅读:
    面经二
    面经一
    Java集合-HashSet
    Java集合-LinkedList
    Java集合-ArrayList
    @JsonIgnoreProperties注解不起作用的问题解决
    纯JS实现图片验证码功能并兼容IE6-8
    java设计模式之桥接模式
    java设计模式之职责链模式
    WPF笔记:WPF自定义treeview样式及数据绑定
  • 原文地址:https://www.cnblogs.com/koushr/p/5873395.html
Copyright © 2020-2023  润新知