Hadoop RPC


终于完成Hadoop 相关信息的系统性学习,最近正在正对Hadoop 不同功能点的学习。由于之前对于分布式网络通信接触比较少,在看到RPC的时候,充满了困惑。

借这篇文章来记录下我的学习方式。

在学习之前首先需要了解java 的动态代理模式。

 

package com.study.hbase.dynamic.inter;

public interface DynamicProtocol {
public int add(int a , int b);
public int sub(int a , int b);
}

 然后需要定义一个实现类

 

 

package com.study.hbase.dynamic.inter;

public class DynamicProtocolImpl implements DynamicProtocol {

@Override
public int add(int a , int b) {
// TODO Auto-generated method stub
return a+b;
}

@Override
public int sub(int a , int b ) {
// TODO Auto-generated method stub
return a-b;
}

}

 

 

这个时候,我们需要定义一个动态的代理类

 

 

package com.study.hbase.dynamic.inter;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class DynamicProtocolInvocationHandler implements InvocationHandler {
private DynamicProtocol obj ;

public DynamicProtocolInvocationHandler(DynamicProtocol obj){
this.obj = obj;
}

@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("=============befor invoke=========");
Object res = method.invoke(obj, args);
System.out.println("=============befor invoke=========");
return res;
}

}

 

 

package com.study.hbase.dynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

import junit.framework.TestCase;

import com.study.hbase.dynamic.inter.DynamicProtocol;
import com.study.hbase.dynamic.inter.DynamicProtocolImpl;
import com.study.hbase.dynamic.inter.DynamicProtocolInvocationHandler;

public class TestDynamic extends TestCase {

public void testAdd(){

DynamicProtocol protocol = new DynamicProtocolImpl();
InvocationHandler handler = new DynamicProtocolInvocationHandler(protocol);

DynamicProtocol proxy = (DynamicProtocol)Proxy.newProxyInstance(
DynamicProtocol.class.getClassLoader(), protocol.getClass().getInterfaces(),
handler);
proxy.add(1, 2);
}
}

 

下面是运行的结果

 

=============befor invoke=========
=============befor invoke=========

 

 

 下面该说道我这次做笔记的主要只是点了

在学习Hadoop RPC之前,首先要知道

1.RPC 是什么,为什么需要RPC?

2.Hadoop 的RPC 是如何工作的?

针对这三个问题,我是逐步去了解的。

 

1.RPC 是什么

如果你学过java的网络编程,就一定知道:当客户端发送一个字节给服务端时,服务端必须也要有一个读字节的方法在阻塞等待;反之亦然。 这种我把它称为底层的通信协议。可是对于一个大型的网络通信系统来说,很显然这种说法的协议粒度太小,不方便我们理解整个网络通信的流程及架构,于是我们换个角度来理解:架构层次的协议。通俗一点说,就是我把某些接口和接口中的方法称为协议,客户端和服务端只要实现这些接口中的方法就可以进行通信了,从这个角度来说,架构层次协议的说法就可以成立了(学习框架钱切记不要过多的陷入方法实现的细节上,先从整体上把握)

 

2Hadoop 的RPC 是如何工作的?



 

 

 

 

本站声明
本文转载自:http://ziye520.iteye.com/blog/2240105     作者:ziye520     发布日期:2015-09-01     本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。


 
© 2014-2016 ITdaan.com 粤ICP备14056181号