hadoop(七) RPC

上节课我们一起学习了如何将Hadoop与Java程序相结合,这节我们共同来学习RPC请求及应用。首先看一下RPC的定义及原理,如下图所示,我们也可以这样简单地理解RPC:RPC就是不同进程间的方法调用。

《hadoop(七) RPC》
image

** 接下来我们用Java程序和RPC相结合来更好的理解RPC。**

** 首先我们需要定义一个接口类,这个接口类需要由服务端来实现,如下图所示**

《hadoop(七) RPC》
image

** 接下来我们定义RPCServer,如下图所示**

《hadoop(七) RPC》
image

      **接下来我们来看一下RPCClient端代码,如下图所示**

《hadoop(七) RPC》
image

** 怎么个玩法呢?首先我们启动RPCServer程序,接着我们再运行RPCClient端的main方法,我们会发现在控制台会输出Hi-tom的信息,说明我们客户端调用服务端内部的方法确实调用成功了!**

** 接下来我们来玩一下让Windows系统和Linux系统之间通过RPC协议通信,我们把RPCClient端打包成jar包,打包的过程如下图所示,打包第一步:在工程上右键,点击Export**

《hadoop(七) RPC》
image

** 打包jar第二步:我们点击上图的Export之后会弹出如下窗口,我们选择Java下面的Runnable JAR file,然后点击下一步。如下图所示。**

《hadoop(七) RPC》
image

** 打包jar第三步:我们进入如下图所示界面我们Launch configuration这一栏选择“RPCClient – Hadoop”,Export destination(打包到本地的地址)我把它打包到了我本地E盘的根目录下,起名为RPCClient.jar。然后点击Finish。**

《hadoop(七) RPC》
image

** 我们把打好的jar包上传到Linux系统root目录下。我们在执行RPCClient.jar之前先启动RPCServer,并在sayHi方法中打断点。这样我们可以更明显的看到Linux上的客户端是否真的调用成功了Windows系统上的Server内的方法。**

** 启动完Server之后我们在Linux系统上执行RPCClient.jar,如下图所示,执行jar的命令是:java -jar RPCClient.jar,执行jar之后我们发现方法被卡住了,一直在等待返回结果。**

《hadoop(七) RPC》
image

** 这时我们再来看一下Windows系统的Server端的断点情况,如下图所示,我们Linux系统运行Client之后确实调用到了服务端的sayHi方法!,Linux系统中之所以在等待返回结果,就是因为这里我们打了断点,这时我们让服务端的方法执行完。**

《hadoop(七) RPC》
image

** 我们再反过来看一下Linux系统上是否有了返回值,我们发现这时信息当中打印出了Hi-tom的信息,说明Linux系统确实通过PRC协议实现了与Windows系统之间的连通!**

《hadoop(七) RPC》
image

    原文作者:文子轩
    原文地址: https://www.jianshu.com/p/99b8ef8cf8f6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞