java ipc 实例

本文通过一个简单的Java IPC实例,介绍了如何仿照Hadoop的IPC机制进行接口调用。主要内容包括:定义IPC接口,客户端使用动态代理调用远程接口,服务器端利用反射执行接口方法并返回结果。此外,还提及了Hadoop IPC的特性,服务器端由Listener、Handler和Responser三部分组成,分别负责接收请求、处理请求和响应结果。
摘要由CSDN通过智能技术生成

java ipc实例,仿照hadoop ipc写的实例

1.用接口规定ipc协议的方法

2.client端用动态代理作调用远程ipc接口方法

3.server端用反射,执行ipc接口方法,并返回给client端接口方法返回值

 

hadoop ipc的另一个特点是server端用三个角色,Listener,Handler,Responser。server聚合这三个角色

Listener:nio socket获取请求CALL对象,放入队列中

Handler:从队列中获取CALL对象,执行ipc接口方法

Responser:被Handler调用,用nio socket返回接口方法返回值

 

简单实例:(实例来自github)

1.定义协议

public interface Echo {
	public String who() throws IOException;;

	public void from(String name) throws IOException;;
}

 2.定义代理

/*Invocation封装方法名和参数*/
		public Object invoke(Object proxy, Method method, Object[] args)
				throws Throwable {
			final boolean logDebug = LOG.isDebugEnabled();
			long startTime = 0;
			if (logDebug) {
				startTime = System.currentTimeMillis();
			}
			//调用Client call方法
			Invocation value = client.call(new Invocation(iface, method, args),
					remoteId);//调用远程的当前方法,阻塞直到server返回值
			if (logDebug) {
				long callTime = System.currentTimeMillis() - startTime;
				LOG.debug("Call: " + method.getName() + "() " + callTime);
			}
			return value.getResult();
		}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值