1.RPC透明调用
RPC模型
RPC 比较有影响的论文就是1984年发表的 Implementing Remote Procedure Calls. 有五个核心概念。
1.user(客户端)------>UserStub----->RPCRuntimes ---->RPCRuntimes--->ServerStub--->Server
2.user(客户端)<------UserStub<-----RPCRuntimes <----RPCRuntimes<---ServerStub<---Server
一个完整的RPC调用,核心是通信,序列化和透明化调用.
Java远程方法调用
RMI
远程方法调用(Remote Method Invocation,RMI),它与论文的流程相似,增加了RMI Registry的概念,进而实现了 客户端和服务端通过Registry来注册服务和寻找服务的调用方式,让客户端和服务端的调用变的透明。
缺点:性能低(JRMP协议采用阻塞模型,原生的序列化方方案),缺少服务治理,不支持异构语言。
异构语言框架gRPC
gRPC是google 开源的一款对语言和平台中立的高性能 RPC框架,,基于http2,支持单连接多路复用,在移动设备上可以节省流量和耗电量。
gRPC服务端的启动代码和 Netty相似,其实其java版本就是使用了Netty作为底层通信框架。
Dubbo
ubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [1] Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架ÿ