分布式-RPC
【摘要】 RPC?RPC (remote Procedure Call) 远程过程调用远程调用的难点:需要通过网络编程传递方法调用所需要的参数,序列化,底层传输方式等考量。RPC目的:RPC的出现就是为了让调用远程方法像调用本地方法一样简单。RPC的原理客户端client 以本地方法调用远程服务 步骤1客户端client Stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体(序列化)...
RPC?
RPC (remote Procedure Call) 远程过程调用
远程调用的难点:需要通过网络编程传递方法调用所需要的参数,序列化,底层传输方式等考量。
RPC目的:RPC的出现就是为了让调用远程方法像调用本地方法一样简单。
RPC的原理
- 客户端client 以本地方法调用远程服务 步骤1
- 客户端client Stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体(序列化) 步骤2
- 客户端client Stub 找到远程服务的地址,并将消息发送给服务提供端 步骤3
- 服务端Server Stub 收到消息并将消息反序列化为java对象 步骤4
- 服务端Server Stub根据RpcRequest中的类、方法、方法参数等消息调用本地方法 步骤5
- 服务端Server 根据请求进行业务处理,并返回给结果给Server Stub 步骤6
- 服务端Server Stub得到方法执行结果并将组装成能够进行网络传输的消息体:RpcResponse(序列化)发送至消费方 步骤7 8 9
- 客户端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)