Hadoop RPC远程过程调用协议简单实现

6 篇文章 0 订阅
4 篇文章 0 订阅

Hadoop RPC远程过程调用协议简单实现

  • 简单来说,RPC就是 客户端的进程 远程调用 服务器端进程 中的方法(自己理解的,不一定对)。

1.Java代码

  • 首先在本机编写代码
Server端:
package cn.tjubd.hadoop.rpc;

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.Server;

public class RPCServer implements Barty{

	public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
		Server server = new RPC.Builder(new Configuration())
			.setInstance(new RPCServer())
			.setBindAddress("172.28.9.62")//服务器地址
			.setPort(9527)//端口
			.setProtocol(Barty.class)
			.build();
		server.start();
	}

	@Override
	public String sayHi(String name) {
		// 客户端将要调用的方法
		return "HI~" + name;
	}
}
  • 这里的服务器地址需要能与本机建立连接,在本机命令行中 ping 服务器地址
  • ping 172.28.9.62,能ping 通即可。
接口:
package cn.tjubd.hadoop.rpc;

public interface Barty {

	public static final long versionID = 10010;
	
	public String sayHi(String name);
}
Client端:
package cn.tjubd.hadoop.rpc;

import java.io.IOException;
import java.net.InetSocketAddress;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
/*
 * 当CPU上的RPCServer 运行时,本机的RPCClient 可以调用RPCServer 中的方法
 * 实现 客户端进程 调用 服务器端进程 中的方法--->远程调用
 */
public class RPCClient {

	public static void main(String[] args) throws IOException {
		Barty proxy = RPC.getProxy(Barty.class, 10010,
				new InetSocketAddress("172.28.9.62", 9527),
				new Configuration());//建立到Server 的连接
		String sayHi = proxy.sayHi("GG Bond");//调用Server 进程中的方法
		System.out.println(sayHi);
		RPC.stopProxy(proxy);
	}
}

2.运行

  • 2.1 把RPCServer导成jar 包,扔到服务器上去,然后运行
    java -jar RPCServer.jar,结果如下:运行结果
  • 2.2 本机运行RPCClient ,结果如下:在这里插入图片描述
  • 说明:为了避免看起来像是调用的本地的RPCServer,在运行RPCClient 之前,我已将本地的RPCServer删除,如上图红框中的那样。
    控制台中打出 HI~GG Bond 则说明确实完成了远程调用。
  • 项目的完整代码已经上传至 https://download.csdn.net/download/qq_34233510/10993518
  • 欢迎下载~_~

Over!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值