微服务之RPC通信(第二十七天)

12 篇文章 0 订阅

RPC通信

RPC,远程调用方式(Remote Procedure Call),RPC像调用本地方法一样调用别的机器上的方法,屏蔽了用户与服务器,服务器与服务器之间的通讯。

在这里插入图片描述在这里插入图片描述

  • 客户端(Client),服务的调用方。
  • 服务端(Server),真正的服务提供者。
  • 客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
  • 服务端存根,接收客户端发送过来的消息,将消息解包,并调用本地的方法。
  • Stub层主要是数据通信的协议,是数据的打包 、发送,解析、处理、打包、发送、解析的过程。有xml、json、protocol 等,它们各自都带有自己特有的封装解封装方法,封装解封装主要解决两个问题:
    1、压缩数据,减少传输数据量;
    2、数据结构中字段的映射关系;
    客户端的应用发起一个远程调用时,调用客户端的 Stub。负责将调用的接口、方法和参数,通过约定的协议规范进行编码,并通过本地的 RPCRuntime 进行传输,将调用网络包发送到服务器。服务器端的 RPCRuntime 收到请求后,交给服务器端的 Stub 进行解码,然后调用服务端的方法,服务端执行方法,返回结果,服务器端的 Stub 将返回结果编码后,发送给客户端,客户端的 RPCRuntime 收到结果,发给客户端的 Stub 解码得到结果,返回给客户端。

1、对于客户端而言,这些过程是透明的,就像本地调用一样;服务端处理业务逻辑,实现。
2、对于 Stub 层,处理双方约定好的语法、语义、封装、解封装。
3、对于 RPCRuntime,主要处理高性能的传输,以及网络的错误和异常。

RPC:
RPC主要是基于TCP/IP协议的,因为RPC效率更高,而HTTP服务开发迭代更快
HTTP服务:
接口不多、系统与系统交互较少的情况下,简单、直接、开发方便
接口可能返回一个JSON或者是XML,然后服务器侧进行Cjson进行转化。

流行的开源RPC框架三种:

  • gRPC是Google公布的开源软件,基于最新的HTTP2.0协议,支持常见的众多编程语言。 HTTP2.0是基于二进制的HTTP协议升级版本,底层使用到了Netty框架的支持。
  • Thrift是Facebook的开源项目,跨语言的服务开发框架。
  • Dubbo是阿里开源的RPC框架,远程接口是基于Java Interface,依托于spring框架方便开发。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值