分布式-RPC

举报
object 发表于 2024/04/23 20:11:48 2024/04/23
【摘要】 RPC?RPC (remote Procedure Call) 远程过程调用远程调用的难点:需要通过网络编程传递方法调用所需要的参数,序列化,底层传输方式等考量。RPC目的:RPC的出现就是为了让调用远程方法像调用本地方法一样简单。RPC的原理客户端client 以本地方法调用远程服务 步骤1客户端client Stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体(序列化)...

RPC?

RPC (remote Procedure Call) 远程过程调用

远程调用的难点:需要通过网络编程传递方法调用所需要的参数,序列化,底层传输方式等考量。

RPC目的:RPC的出现就是为了让调用远程方法像调用本地方法一样简单。

RPC的原理

  1. 客户端client 以本地方法调用远程服务 步骤1
  2. 客户端client Stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体(序列化) 步骤2
  3. 客户端client Stub 找到远程服务的地址,并将消息发送给服务提供端 步骤3
  4. 服务端Server Stub 收到消息并将消息反序列化为java对象 步骤4
  5. 服务端Server Stub根据RpcRequest中的类、方法、方法参数等消息调用本地方法 步骤5
  6. 服务端Server 根据请求进行业务处理,并返回给结果给Server Stub 步骤6
  7. 服务端Server Stub得到方法执行结果并将组装成能够进行网络传输的消息体:RpcResponse(序列化)发送至消费方 步骤7 8 9
  8. 客户端Client Stub接收到消息并将消息反序列化为Java对象RpcResponse(反序列化)并将结果返回给客户端Client  步骤10

有哪些常见的RPC框架

  • Dubbo: 最常见,使用最多,生态最好的RPC框架。
  • Motan:精简版的Dubbo
  • gRPC:性能更高,基于ProtoBuf序列化协议开发,但定义接口和数据类型稍显麻烦
  • Thrift:跨语言RPC框架,支持多种变成开发语言

有HTTP,为什么还需要RPC

  • HTTP冗余的信息过多,不利于高效的通信传输
  • RPC支持连接池,更加高效
  • RPC的服务发现使用更方便,更利于后端服务的个性化定制。 HTTP需要目标IP,端口等信息
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。