RPC初了解

本文深入探讨了RPC(远程过程调用)的概念及其在Java中的实现,包括通信协议的选择和信息序列化的必要性。从原始的socket通信到动态代理的优化,逐步揭示了RPC框架的发展历程。通过在client和server之间添加stub代理,动态代理技术的应用以及通用方法的改进,使得远程调用变得更加便捷。文章最后提到了进一步的优化,如将接口类、方法名等参数传递,提升调用的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

    RPC(Remote Procedure Call)远程过程调用,是一种通信模式,与本地调用相区分,一块代码要调用另一个服务器上的接口,对于java而言,要调用另一个服务器上的资源,可以使用socket通信或者Http/Https访问,因此对于RPC来说,其实现需求之一就是,必须要选择一种通信协议。
    因为java远程调用传输调用信息因此,其实现需求之二就是实现信息的序列化。其发展可如下所示:

RPC流程优化

  1. 原始socket通信需要了解client与server的详细细节(数据类型、格式),client和server端的IO流都要自己手动处理,业务变更牵一发而动全身。
  2. client与server中间添加stub代理,将第一步client的输入输出流处理过程交给stub处理从,client只调用stub的getStub方法获取某个接口,然后调用该接口的方法,方便了client的使用。
  3. 第二步的stub的接口方法使用动态代理,提高代理能力。
  4. 第三步动态代理优化为传递方法名、方法参数类型数组、方法参数数组的通用方法,但返回值仍是固定的。
  5. 优化第四步的返回值为一个Object对象。
  6. 将Stub的getStub方法添加一个接口类参数,传递接口类名字、方法名、方法参数类型数组、方法参数数组,从固定接口的某个方法调用上升到某个接口的某个方法调用

。。。待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值