【图文详细 】Scala——RPC 远程过程调用

版权声明:版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/qq_42246689/article/details/85329221

1、RPC 远程过程调用 

1.1、RPC 概念 

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请 求服务,而不需要了解底层网络技术的协议。RPC 协议假定某些传输协议的存在,如 TCP 或 UDP,为通信程序之间携带信息数据。在 OSI 网络通信模型中,RPC 跨越了传输层和应用层。 RPC 使得开发包括网络分布式多程序在内的应用程序更加容易。 

RPC 采用客户机/服务器(C/S)模式:请求程序就是一个客户机,而服务提供程序就是一个服 务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信 息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器 获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进 程接收答复信息,获得进程结果,然后调用执行继续进行。

比如一个方法是如下定义:

Employee getEmployeeByName(String fullName) 

并且被部署在 B 服务器上, 那么 A 服务器想要调用这个服务,那么: 

1.2、为什么要有 RPC 

RPC 框架的职责是:让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉 就像实现一个本地函数一样来实现服务,并且屏蔽编程语言的差异性。 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不 损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制让使用者不 必显式的区分本地调用和远程调用 

简单的讲,对于客户端 A 来说,调用远程服务器 B 上的服务,就跟调用 A 上的自身服务一 样。因为在客户端 A 上来说,会生成一个服务器 B 的代理。


转载请标明出处:https://blog.csdn.net/qq_42246689


1.3、Java 中流行的 RPC 框架 
1、RMI(远程方法调用)

JAVA 自带的远程方法调用工具,不过有一定的局限性,毕竟是 JAVA 语言最开始时的设计, 后来很多框架的原理都基于 RMI 
 
2、Hessian(基于 HTTP 的远程方法调用)

基于 HTTP 协议传输,在性能方面还不够完美,负载均衡和失效转移依赖于应用的负载均衡 器,Hessian 的使用则与 RMI 类似,区别在于淡化了 Registry 的角色,通过显示的地址调用, 利用 HessianProxyFactory 根据配置的地址 create 一个代理对象,另外还要引入 Hessian 的 Jar 包。 
 
3、Dubbo(阿里开源的基于 TCP 的 RPC 框架)

基于 Netty 的高性能 RPC 框架,是阿里巴巴开源的,大致原理如下: 

阿里的 dubbo 现在已经贡献给 Apache 了,官网是:http://dubbo.apache.org/

Duboo 的中文官网: https://dubbo.gitbooks.io/dubbo-user-book/content/preface/background.html

其他比较流行的 RPC 技术还有 FaceBook 的 thrift,谷歌的 grpc,基于 Netty 的 HadoopRPC, 基于 actor 的 Akka 等 

 
 


转载请标明出处:https://blog.csdn.net/qq_42246689

猜你喜欢

转载自blog.csdn.net/qq_42246689/article/details/85329221
今日推荐