hadoop RPC
来源:互联网 发布:网络教育统考成绩 编辑:程序博客网 时间:2024/05/22 16:52
RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,
而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,
而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,
RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC的协议有很多,比如最早的CORBA,Java RMI,Web Service的RPC风格
hadoop 是基于java NIO实现的RPC协议,具体架构如下:
客户端跟服务器通过Listener建立连接,Listener中关注Selector对OP_ACCEPT,建立连接后就交给Reader线程处理,Reader线程的Selector中注册监听OP_READ,读取里面的请求数据,包装成Call,放到callQueue里,然后很多Handler线程去处理这些Call,处理后的结果数据放到Connectin的responseQueue里,由Responder线程发送回客户端。
hadoop RPC 实例代码
1. 接口定义,接口中需要定义versionID
package com.liangjya.hadoop.demo;public interface IServer {public static final long versionID=100;public String sayHello(String name);}
2. 接口实现
package com.liangjya.hadoop.demo;public class Server implements IServer {@Overridepublic String sayHello(String name) {return " hello "+name;}}
3. RPC服务端
package com.liangjya.hadoop.demo;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.Builder;public class RPCServer {public static void main(String[] args) {try {Builder server =new RPC.Builder(new Configuration()) .setProtocol(IServer.class) .setInstance(new Server()) .setBindAddress("simulate") .setPort(8080);server.build().start();} catch (HadoopIllegalArgumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}4 客户端
package com.liangjya.hadoop.demo;import java.io.IOException;import java.net.InetSocketAddress;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;public class RPCClient {public static void main(String[] args) {try {IServer server=RPC.getProxy(IServer.class, 100, new InetSocketAddress("192.168.31.100", 8080), new Configuration());System.out.println(server.sayHello("liangjya"));} catch (IOException e) {e.printStackTrace();}}}
0 0
- hadoop RPC
- hadoop RPC
- Hadoop RPC
- Hadoop RPC
- Hadoop RPC
- rpc hadoop
- Hadoop RPC
- Hadoop RPC
- hadoop rpc
- Hadoop RPC
- Hadoop RPC
- Hadoop RPC
- Hadoop RPC
- hadoop rpc
- hadoop RPC
- hadoop RPC
- <hadoop>hadoop RPC框架
- Hadoop RPC 实例
- 继承与派生
- Android之SQLite数据库的使用
- 解决百度地图过段时间只显示网格的问题
- MySQL数据库密码篇
- c语言实现strcpy
- hadoop RPC
- 封装SQL访问方法
- 欢迎使用CSDN-markdown编辑器
- jquery.pagination分页反复提交的问题
- hdoj 1568 (斐波那契数列+数学)
- xshell配置linux密钥
- 算法学习之路(冒泡排序)
- VBA Arrays And Worksheet Ranges
- Java 面向对象 : 封装