RPC与Hadoop RPC机制

一、什么是RPC?

(1)Remote Procdure call ,远程方法调用,它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网络通信细节,对我们来说是透明的。经常用于分布式网络通信中。

(2)Hadoop的进程间交互都死通过RPC来进行的,比如Namenode与Datanode直接,Jobtracker与Tasktracker之间等。

流程:

(1)RPC采用了C/S的模式;

(2)Client端发送一个带有参数的请求信息到Server;

(3)Server接收到这个请求以后,根据发送过来的参数调用相应的程序,然后把自己计算好的结果发送给Client端;

(4)Client端接收到结果后继续运行;

RPC特点

(1)透明性:远程调用其他机器上的程序,对用户来说就像是调用本地方法一样;

(2)高性能:RPC server能够并发处理多个来自Client的请求;

(3)可控性:jdk中已经提供了一个RPC框架——RMI,但是该PRC框架过于重量级并且可控之处比较少,所以Hadoop RPC实现了自定义的PRC框架。

二、Hadoop的RPC机制

(1)序列化层:Clent与Server端通信传递的信息采用了Hadoop里提供的序列化类或自定义的Writable类型;

(2)函数调用层:Hadoop RPC通过动态代理以及java反射实现函数调用;

(3)网络传输层:Hadoop RPC采用了基于TCP/IP的socket机制;

(4)服务器端框架层:RPC Server利用java NIO以及采用了事件驱动的I/O模型,提高RPC Server的并发处理能力;

Hadoop RPC设计技术

(1)动态代理

(2)反射——动态加载类

(3)序列化

(4)非阻塞的异步IO(NIO)

java动态代理

相关类与接口:

1.java.lang.reflect.Proxy

2.java.lang.reflect.InvocationHandler

动态代理创建对象过程:

1.InvocationHandler handler = new InvocationHandlerImpl();

2.Proxy.newProxyInstance();

(1)动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实,代理对象对客户隐藏了实际对象。

(2)动态代理可以对请求进行其他的一些出来,在不允许直接访问某些类,或需要对访问做一些特殊处理等,这时候可以考虑使用代理。

(3)目前Java开发包中提供了对动态代理的支持,但现在只支持对接口的实现。

时间: 2024-10-29 19:12:24

RPC与Hadoop RPC机制的相关文章

Hadoop RPC通信Server端的流程分析

前2天刚刚小小的分析下Client端的流程,走的还是比较通顺的,但是RPC的服务端就显然没有那么简单了,毕竟C-S这种模式的,压力和重点都是放在Server端的,所以我也只能做个大概的分析,因为里面细节的东西太多,我也不可能理清所有细节,但是我会集合源代码把主要的流程理理清.如果读者想进一步学习的话,可自行查阅源码. Server服务端和Client客户端在某些变量的定义上还是一致的,比如服务端也有Call,和Connection,这个很好理解,Call回调,和Connection连接是双向的.

每天收获一点点------Hadoop RPC机制的使用

一.RPC基础概念 1.1 RPC的基础概念 RPC,即Remote Procdure Call,中文名:远程过程调用: (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网络通信细节,对我们来说是透明的.因此,它经常用于分布式网络通信中. RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中,RPC跨越了传输层和应用层.RPC使得开发包括网络分布式多程序在内的应用程序更加容易. (2)Hadoop的进程间交互都是通过R

Hadoop RPC机制-原理篇

RPC是Hadoop的基础组件,提供分布式环境下的对象调用功能.之前用了三天时间分析与测试RPC,目的是想弄清楚它的整个运行机制. 概括的说,RPC采用客户机/服务器模式.请求程序就是一个客户机,而服务提供程序就是一个服务器.首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息.在服务器端,进程保持睡眠状态直到调用信息的到达为止.当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用

Hadoop学习笔记—3.Hadoop RPC机制的使用

一.RPC基础概念 1.1 RPC的基础概念 RPC,即Remote Procdure Call,中文名:远程过程调用: (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网络通信细节,对我们来说是透明的.因此,它经常用于分布式网络通信中. RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中,RPC跨越了传输层和应用层.RPC使得开发包括网络分布式多程序在内的应用程序更加容易. (2)Hadoop的进程间交互都是通过R

Hadoop RPC简单例子

jdk中已经提供了一个RPC框架-RMI,但是该PRC框架过于重量级并且可控之处比较少,所以Hadoop RPC实现了自定义的PRC框架. 同其他RPC框架一样,Hadoop RPC分为四个部分: (1)序列化层:Clent与Server端通信传递的信息采用了Hadoop里提供的序列化类或自定义的Writable类型: (2)函数调用层:Hadoop RPC通过动态代理以及java反射实现函数调用: (3)网络传输层:Hadoop RPC采用了基于TCP/IP的socket机制: (4)服务器端

Hadoop RPC

第一部分:什么是RPC RPC (Remote Procedure Call Protocol) – 远程过程协议调用 .通过 RPC 我们可以从网络上的计算机请求服务,而不需要了 解底层网络协议. Hadoop 底层的交互都是通过 rpc 进行的.例 如: datanode 和 namenode . tasktracker 和 jobtracker . secondary namenode 和 namenode 之间的通信都是通过 rpc 实 现的. RPC 模式 RPC 采用客户机 / 服务

hadoop rpc基础

第一部分: hadoop rpc基础 RPC,远程程序调用,分布式计算中C/S模型的一个应用实例. 同其他RPC框架一样,Hadoop分为四个部分: 序列化层:支持多种框架实现序列化与反序列化 函数调用层:利用java反射与动态代理实现 网络传输层:基于TCP/IP的Socket机制 服务的处理框架:基于Reactor模式的事件驱动IO模型 Hadoop RPC主要对外提供2种接口 public static ProtocolProxy getProxy/waitForProxy: 构造一个客户

Hadoop RPC远程过程调用源码解析及实例

什么是RPC? 1.RPC(Remote Procedure Call)远程过程调用,它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网络通信细节,对我们来说是透明的.经常用于分布式网络通信中. 2.Hadoop的进程间交互都是通过RPC来进行的,比如Namenode与Datanode之间,Jobtracker与Tasktracker之间等. RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中, RPC跨越了传输层和应用层

Hadoop RPC框架

1.RPC框架概述 1.1 RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中,RPC跨越了传输层和应用层.RPC使得开发包括网络分布式多程序在内的应用程序更加容易. 1.2 RPC通常采用客户端服务器模型,其框架主要有以下几部分 通信模块:实现请求应该协议.主要分为同步方式和异