RPC发展(马士兵rpc笔记总结)

rpc01 客户端等待服务器端连接,客户端将数据通过二进制传给服务器端。服务器端收到数据后,在数据库进行查询,得到一个对象。然后讲对象中的每个属性通过二进制传递给客户端。客户端读取每一个属性后,new为一个新的对象。(最原始的方法,很不灵活)
rpc02 从客户端分离出一个stub类,作为代理,从而屏蔽一些网络细节。(缺点:在这个stub类里只能代理一个方法,并返回这一个类)
rpc03 stub类通过动态代理返回了一个动态对象。这个对象所属的类实现了IUserService接口。在这个接口实在的方法屏蔽了一些网络的细节。(当换用不同的方法后,传输数据会有问题)
rpc04 当换用不同的方法后,stub类拿到对应的方法名和参数类型(防止重载的情况)和参数,写给服务器端,服务器端通过反射的方式找到方法,然后调用相应的方法,返回给stub。(不足:只能支持同一个接口的很多方法,不能支持很多个接口的很多方法。stub返回值仍然是对象的每个属性)
rpc05 在服务器的直接用writeobject方法把对象写出去(这个版本可以让IUserService随意的暴露和变换接口,客户端只能拿到一个接口)
rpc06 stub中为class类型的对象。得到类的名字,方法的名字,方法的类型和具体参数传给服务器端。服务器端从服务注册表找到具体的类。实现类可以通过spring进行注入。然后通过具体实现类的对象,调用相应的方法。(能够生成更多类型的代理)
rpc概念: 客户端对服务器端的服务做调用,服务器端有多个服务,客户端就告诉一个动态生成的代理类需要调用服务器端的哪个类的哪个方法,并把参数传递给该代理类(序列化的过程,将这些信息通过二进制传输)。代理类是老工具人了,就把信息传递给服务器端,服务器调用相应的类的相应的方法,并把结果返回给代理(反序列化的过程,二进制转换为需要处理的对象),代理再返回给客户端。而且服务器端加任意方法之类的,都不用再改动底层的代码,因为底层细节直接都被动态代理类屏蔽掉了。
rpc序列化框架:

1. java.io.Serializable(java自带的)

2.Hessian

3.google protobuf

4.facebook Thrift

5.kyro

6.fst

7.json序列化框架

        1.Jackson

        2.google Gson

        3.Ali FastJson

8.xmlrpc(xsteam)

...

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值