您当前的位置: 首页 >  hadoop

梁云亮

暂无认证

  • 2浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Hadoop RPC

梁云亮 发布时间:2019-11-24 16:11:12 ,浏览量:2

示例:演示RPC实现远程代码调用。

第一步:本示例不需要启动程序start-dfs.sh、start-yarn.sh。

第二步:在Linux端创建一个Java项目,导包(只需要导入commons下的jar包就可以了),然后在其中依次创建如下代码:

  • 接口:
public interface UserService {
	public static final long versionID = 1L;
	public boolean login(String username, String password);
}
  • 接口实现类:
public class UserServiceImpl implements UserService {
	@Override
	public boolean login(String username, String password) {
		if ("abc".equals(username) && "123".equals(password)) {
			System.out.println("登录成功");
			return true;
		} else {
			System.out.println("登录失败");
			return false;
		}
	}
}
  • Server
public class RPCServer {
	public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
		Configuration conf = new Configuration();
		RPC.Builder builder = new RPC.Builder(conf);
		builder.setInstance(new UserServiceImpl())
			.setBindAddress("hc")
			.setPort(6868)
			.setProtocol(UserService.class);
		Server server = builder.build();	// 创建Server端的socket
		server.start();
	}
}

第二步:在Windows端创建一个Java项目,导包(只需要导入commons下的jar包就可以了),然后在其中依次创建如下代码:

  • 接口:
public interface UserService {
	public static final long versionID = 1L;
	public boolean login(String username, String password);
}

注意:要求两个UserService接口所在的包的名字相同,否则客户端连接服务器端时会报错。

  • client
public class RPCClient {
	public static void main(String[] args) throws IOException {
		Configuration conf = new Configuration();
		InetSocketAddress socketAddr = new InetSocketAddress("hc", 6868);
		UserService userService = RPC.getProxy(UserService.class, 1L, 
														socketAddr, conf);
		boolean res = userService.login("abc", "123");
		System.out.println(res);
	}
}

运行程序:先运行RPCServer,发现程序启动启动起来后一直在运行,等着客商请求;再运行RPCClient,在其终端输出字符"true",同时发现在Linux的终端中输出了"登录成功"的字样。

关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0414s