RPC

作者: Aaron_Swartz | 来源:发表于2019-10-14 00:09 被阅读0次
    • RPC定义:

    RPC(Romote Procedure Call):远程过程调用,允许一台计算机程序远程调用另外一台计算机的子程序,不用关心底层网络通信。
    在socket基础上实现,比socket需要更多资源。

    • RPC调用过程


      图解RPC原理
    • 整个调用过程主要经过以下几个步骤:
      1 建立通信
      2 主要是通过在客户端和服务器之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接。
      3 服务寻址
      可靠的寻址方式(主要是提供服务的发现)是RPC的实现基石,比如可以采用redis或者zookeeper来注册服务等等。


      服务注册发现机制

    从服务提供者的角度看:当提供者服务启动时,需要自动向注册中心注册服务;
    当提供者服务停止时,需要向注册中心注销服务;
    提供者需要定时向注册中心发送心跳,一段时间未收到来自提供者的心跳后,认为提供者已经停止服务,从注册中心上摘取掉对应的服务。
    从调用者的角度看:调用者启动时订阅注册中心的消息并从注册中心获取提供者的地址;
    当有提供者上线或者下线时,注册中心会告知到调用者;
    调用者下线时,取消订阅。

    4 网络传输:序列化和反序列化

    B机器进行本地调用(通过代理Proxy)之后得到了返回值,此时还需要再把返回值发送回A机器,同样也需要经过序列化操作,然后再经过网络传输将二进制数据发送回A机器,而当A机器接收到这些返回值之后,则再次进行反序列化操作,恢复为内存中的表达方式,最后再交给A机器上的应用进行相关处理(一般是业务逻辑处理操作)。

    • RPC 调用过程


      RPC调用过程
    • 应用代码重点参考4

    参考:
    1 微服务系列:RPC框架的实现原理,及RPC架构组件详解
    2 阿里P8架构师谈:Dubbo的详细介绍、设计思路、以及4大适用场景
    3 sofa-pbrpc
    4 高性能Java RPC框架Dubbo与zookeeper的使用

    相关文章

      网友评论

        本文标题:RPC

        本文链接:https://www.haomeiwen.com/subject/zchkmctx.html