HDFS(二) 底层通信原理——RPC 及 动态代理

一、RPC(Remote Procedure Call  ) :远程过程调用

    1、RPC是远程过程调用协议,实现调用者和被调用者二地之间的连接和通信。其基本通信模型是基于client/server进程间相互通信模型 ,如图1所示。

                                               图 1    使用RPC调用完成远程调用示意图

    

   2、利用HADOOP的RPC框架实现Server和Client远程通信

      (1)定义一个接口    MyInterface

      

      (2) 定义接口的实现类

      

      (3)RPC Server

      

      (4) RPC client

      

      (5)运行结果

        先启动RPCServer,然后执行RPC Client :

          Server端:*****调用到了Server端*******

          Client端:Hello Trump

二、动态代理

   1、java的动态代理对象

      (*)类的名字前有$符号,表示这个类的对象是代理对象

      (*)是一种包装设计模式

      (*)可以增强类的功能

      2、动态代理对象的基本原理

                   

    

原文地址:https://www.cnblogs.com/wl413911/p/10421067.html

时间: 2024-10-10 22:42:35

HDFS(二) 底层通信原理——RPC 及 动态代理的相关文章

rpc与动态代理模型

RPC的英文全称是Remote Procedure Call,翻译为中文叫“远程过程调用”.其中稍显晦涩的其实就是“过程”,过程其实就是方法.所以,可以把RPC理解为“远程方法调用”. 要了解远程过程调用,那先理解过程调用.非常简单,如下图,就是调用一个方法.这太常见了,不多解释. 而在分布式系统中,因为每个服务的边界都很小,因此很有可能调用别的服务提供的方法.这就出现了服务A调用服务B中方法的需求,这就是远程过程调用. 要想让服务A调用服务B中的方法,最先想到的就是通过HTTP请求.是的,这是

java高级---->Java动态代理的原理

Java动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架.下面我们开始动态代理的学习. 目录导航   动态代理的简要说明 简单的Java代理 Java的动态代理 Java动态代理的原理 友情链接 动态代理的简要说明 在java的动态代理机制中,有两个重要的类或接口,一个是 In

Spring AOP的底层实现技术---JDK动态代理

JDK动态代理    在JDK 1.3以后提供了动态代理的技术,允许开发者在运行期创建接口的代理实例.在Sun刚推出动态代理时,还很难想象它有多大的实际用途,现在我们终于发现动态代理是实现AOP的绝好底层技术.    JDK的动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和InvocationHandler.其中InvocationHandler是一个接口,可以通过实现该接口定义横切逻辑,在并通过反射机制调用目标类的代码,动态将横切逻辑和业务逻辑编织在一起.   而

CGLib与JDK的动态代理

一.CGLib 简介 CGLib (Code Generation Library) 是一个强大的,高性能,高质量的Code生成类库.它可以在运行期扩展Java类与实现Java接口.Hibernate用它来实现PO字节码的动态生成.CGLib比 Java 的 java.lang.reflect.Proxy 类更强的在于它不仅可以接管接口类的方法,还可以接管普通类的方法. CGLib 的底层是Java字节码操作框架 -- ASM.CGLib就是封装了ASM,简化了ASM的操作,实现了在运行期动态生

代理模式 & Java原生动态代理技术 & CGLib动态代理技术

第一部分.代理模式  代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务.(其实就是在代理类中关联一个委托类的实例,然后在代理类中进行包装). UML图如下: 第二部分.在Java中实现代理模式  按照代理的创建时期,代理类可以分

Spring笔记(三)AOP前篇之动态代理

AOP思想是将程序中的业务代码与服务代码进行分离,在运行时进行结合.比较强调程序的层次结构,是一种面向切面的编程.而在AOP实现的底层主要用到了动态代理,而动态代理又分为JDK动态代理和CGLIB动态代理,两者的区别是JDK动态代理的实现中业务类必须必须定义接口,而CGLIB没有这个约束,可以说CGLIB更强大: JDK动态代理实现示例: // 业务接口定义 public interface IUnit {     void execute(String msg); } // 业务实现类 pub

(转)Java动态代理与CGLib代理

本文通过spring aop的代理实现简述了java动态代理和cglib的区别,有助于理解java的代理模式 转载自:http://www.iteye.com/topic/182654 Java代码 <br>public class UserDAOImpl{ <br><br>    public void save() { <br>        // TODO Auto-generated method stub <br>        Sys

Java 动态代理分析

Java的代理有两种:静态代理和动态代理,动态代理又分为 基于jdk的动态代理 和 基于cglib的动态代理 ,两者都是通过动态生成代理类的方法实现的,但是基于jdk的动态代理需要委托类实现接口,基于cglib的动态代理不要求委托类实现接口. 接下来主要分析一下基于jdk的动态代理的实现原理. 一 动态代理例子 首先来看一个动态代理的例子: # 测试类,主要功能是生成代理类并调用代理方法 TargetFactory.javapublic class TargetFactory { public

Java进阶学习第24天——动态代理与类加载器

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.06.17 lutianfei none 动态代理 代理对象存在的价值:主要用于拦截对真实业务对象的访问. 代理对象有什么方法? 现在要生成某一个对象的代理对象,这个代理对象通常也要编写一个类来生成,所以首先要编写用于生成代理对象的类. 如何编写生成代理对象的类,两个要素: 代理谁 如何生成代理对象 代理谁? 设计一个类变量,以及一个构造函数,记住代理类 代理哪个对象. 如何生成代理对象? 设计一个方法生成代理对象(在