1、为何不使用RMI 编程
最最主要仍是由于RMI的可控性不够灵活,其次数据序列化格式不够精简。 网络
这两点能够在实际编程中慢慢体会,ipc例子能够在网上搜到。 oop
2、主要技术元素 大数据
包含四点:一、序列化对象(数据传输的核心) 代理
二、反射 对象
三、动态代理 队列
四、Socket传输 ip
3、原理 开源软件
主要说明实现原理,忽略网络异常处理机制、权限、版本校验。 it
客户端调用远程方法时,经过动态代理运用反射机制将所需参数以及方法等封装成序列化对象经过Socket传输给服务端,在没有接受到返回值时一直Wait。服务端获取到序列化对象后经过反射机制调用指定的方法获得返回值,而后将返回值传输给客户端。客户端接受到返回值后被Notify。
4、代码
主要分为Client 与Server。
Client并不复杂,主要任务是封装方法参数,等待返回值。
Server相对复杂一点,包含一个Listener、多个Reader、多个Handler、一个Responder,并使用了多路复用Selector机制。Listener复则接受来自各个客户端的链接请求,Reader负责读取客户端链接的数据并放入阻塞队列中供Handler处理,Handler从阻塞队列中获取数据解析成方法请求经过反射调用方法获得返回值后,将值放入阻塞队列中供Responder处理,Responder从阻塞队列中获取返回值后传输给客户端,至此整个流程完毕!
5、Hadoop ipc缺点
不适合流式数据的传输,也不适合大数据的传输,鉴于此建立了一个流式RPC的组件,具体参考开源软件中的“流式RPC”