学习Hadoop第九课(RPC)

时间:2022-04-10 21:51:15

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

学习Hadoop第九课(RPC)

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

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

学习Hadoop第九课(RPC)

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

学习Hadoop第九课(RPC)

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

学习Hadoop第九课(RPC)


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

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

学习Hadoop第九课(RPC)


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

学习Hadoop第九课(RPC)


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

学习Hadoop第九课(RPC)


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

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

学习Hadoop第九课(RPC)

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

学习Hadoop第九课(RPC)

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

学习Hadoop第九课(RPC)