Server类是个抽象,只所以抽象,是具有如下抽象方法:
public abstract Writable call(Class<?> protocol, Writable param, long receiveTime)
throws IOException;
也就是说,服务器端接收到请求后,最后对这个请求的真正处理是通过此方法执行的。又具体的实现类实现这个方法。
回顾前面
http://jimmee.iteye.com/blog/1201398关于nio的reactor模式,hadoop的rpc调用的Server完全按照这个模式来实现
- 1. Listener类,启动一个线程使用一个Selector来处理Channel的Accept;
- 2. Listenter.Reader类,启动多个线程来(当然也可以配置成一个,关键看cpu是怎样的了)处理Channel的读,也就是得到client;
- 3. Handler类,业务线程处理类,这个类处理真正的调用,线程池配置多大,就启动多少个线程,其实我觉得直接使用java.util.concurrent中的线程池更方便;
- 4. Responder类,这个类启动一个线程,使用一个Selector来处理写(这里值得注意的是,并不是每个Channel都添加到Selector里来处理写操作,而是有没有写完的数据时候,才添加进去)
- 5. Call类,可以理解为与Client端的Call对应;
- 6. Connection,代表与Client端的连接,读取客户端的call并放到一个阻塞队列中,Handler负责从这个队列中读取数据并处理
总之按照这个流程去理解server端的代码就ok。
分享到:
相关推荐
Hadoop RPC(Remote Procedure Call,远程过程调用)是 Hadoop 项目中的一个重要组件,用于实现分布式系统中的通信和数据交换。下面是对 Hadoop RPC 的详细分析。 RPCInterface Hadoop RPC 的核心是 RPCInterface...
- **服务器端(hadoop_rpc_server)**:服务器端会监听特定端口,接收客户端的请求,并根据接收到的请求调用相应的服务方法。 3. **序列化与反序列化**:Hadoop RPC使用Writables接口进行数据序列化,将对象转化为...
其中,Hadoop 的远程过程调用(RPC)机制是其核心组件之一,用于实现不同节点之间的高效通信。本文将详细介绍 Hadoop RPC 的基本概念、工作原理以及其实现细节。 #### 二、Hadoop RPC 基本介绍 ##### 2.1 RPC 概念...
在Hadoop中,远程过程调用(RPC)是核心组件之一,它使得节点间的通信变得高效且可靠。本文将深入探讨Hadoop的RPC机制,解析其工作原理,并结合源码分析其内部实现。 一、RPC简介 RPC是一种让程序能够调用运行在...
在IT行业中,分布式计算系统的重要性日益凸显,而Hadoop作为其中的佼佼者,其核心组件之一就是远程过程调用(RPC,Remote Procedure Call)。RPC允许一个程序在某个网络中的计算机上执行另一个计算机上的程序,而...
- Hadoop RPC提供了一种标准接口,使得客户端可以透明地调用服务器端的方法,而无需关心底层网络通信细节。 3. **RPC流程**: - 客户端创建一个RPC Proxy对象,该对象代表服务器端的服务接口。 - 客户端通过...
* RPC server端实现类 */ public class SayRpcServer implements Isay { @Override public String say(String userName) { System.out.println("server received data -> [" + userName + "]"); return ...
3. **实现服务器端**:在服务器端实现`MyService`接口,并启动一个RPC服务器监听客户端的请求。这通常涉及创建一个实例化服务器类,如`MyServiceImpl`,并使用`Server`类启动服务。 ```java public class ...
Hadoop中的通信主要通过RPC实现,这是一种远程调用协议,使得客户端可以像调用本地方法一样调用远程服务器上的方法。Hadoop的RPC基于Java的Protocol Buffers,提供高效、灵活的序列化和反序列化能力,确保跨网络的...
在深入学习Hadoop源代码的过程中,RPC(Remote Procedure Call)部分是理解分布式系统通信机制的关键。RPC允许客户端在不直接了解远程服务器实现细节的情况下,调用远程服务器上的方法,仿佛这些方法是在本地执行...
RPCServer作为服务提供者由两个部分组成:接收Call调用和处理Call调用。接收Call调用负责接收来自RPCClient的调用请求,编码成Call对象后放入到Call队列中。这一过程由Listener线程完成。具体步骤:处理Call调用负责...
客户端采用代理模式实现RPC调用,主要步骤如下: 1. **代理对象创建**: - 调用`RPC.getProxy`方法创建代理对象。 - 实际返回的对象实现了所需接口,并重写了接口中的方法。 2. **远程调用过程**: - 调用代理...
在Hadoop的RPC实现方法中,Client类、Server类、RPC类以及HDFS通信协议组是核心。这些组件共同协作实现远程过程调用,使得HDFS中的各个组件能够相互交流和协作。通过这些组件,HDFS能够处理客户端请求,并在集群内部...
RPC的基本架构基于Client/Server模型,其中客户端发起请求,服务器端执行请求并返回结果。这个过程涉及以下步骤: 1. 建立RPC服务,定义传输协议,通常是TCP或UDP。 2. 客户端将调用参数封装并发送到服务器的指定...
0.99.2版本的`HBaseRpcController`和`RpcServer`实现了异步调用和请求调度,极大地提升了系统吞吐量。同时,HBase还支持多种数据压缩算法,如Snappy和LZO,通过`Compression`模块的源码,可以了解其压缩和解压缩的...
**远程过程调用(Remote Procedure Call,简称RPC)**是一种通信协议,它允许在一台计算机上运行的程序调用另一台计算机上的子程序,而程序员无需显式了解底层网络细节。RPC广泛应用于分布式系统中,简化了不同节点...
此外,NameNode还运行着RPC服务器的相关线程,处理来自DataNode、JobTracker或其他客户端的远程调用。这些线程处理各种操作,如文件创建、删除、重命名以及数据块的报告等。 总的来说,这些线程协同工作,确保了...
- **说明**:`Server`类代表NameNode的RPC服务器实例,用于接收来自客户端的RPC请求。 - **作用**:处理客户端发送的RPC请求,并根据请求类型执行相应的操作。 3. **`private Thread emptier;`** - **说明**:...