RPC的实现与远程调用的实现机制
Posted Frank Q
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RPC的实现与远程调用的实现机制相关的知识,希望对你有一定的参考价值。
本文主要是RPC的实现代码总结:
1、RPC的Server端实现
2、RPC的Client端实现
3、RPC原理分析
注意:核心jar包使用的是Hadoop中的RPCjar包;
1、RPC的Server实现
1)创建RPCServer工程:
LoginServiceInterface.java
package cn.rpc.demo;
public interface LoginServiceInterface
public static final long versionID=1L;
public String login(String username,String password);
LoginServiceImpl.java
package cn.rpc.demo;
public class LoginServiceImpl implements LoginServiceInterface
@Override
public String login(String username, String password)
return username + " logged in successfully!";
Starter.java
package cn.rpc.demo;
import java.io.IOException;
import org.apache.hadoop.HadoopIllegalArgumentException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Builder;
import org.apache.hadoop.ipc.RPC.Server;
public class Starter
public static void main(String[] args) throws HadoopIllegalArgumentException, IOException
Builder builder = new RPC.Builder(new Configuration());
builder.setBindAddress("127.0.0.1").setPort(10000).setProtocol(LoginServiceInterface.class).
setInstance(new LoginServiceImpl());
Server server = builder.build();
server.start();
2、RPC的Client端实现
LoginServiceInterface.java
package cn.rpc.demo;
public interface LoginServiceInterface
public static final long versionID=1L;
public String login(String username,String password);
LoginController.java
package cn.rpc.demo;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
public class LoginController
public static void main(String[] args) throws Exception
LoginServiceInterface proxy = RPC.getProxy(LoginServiceInterface.class, 1L, new InetSocketAddress("localhost", 10000),
new Configuration());
String result = proxy.login("123", "123456");
System.out.println(result);
运行结果:
3、RPC原理分析
RPC:远程过程调用机制:主要适用于分布式系统
下图主要是远程调用的底层机制:
以上是关于RPC的实现与远程调用的实现机制的主要内容,如果未能解决你的问题,请参考以下文章