HDFS(九)——HDFS 的底层原理(RPC 和 动态代理对象 Proxy)

HDFS 的底层通信原理采用的是: RPC动态代理对象 Proxy

RPC(Remote Procedure Call)

  • 什么是 RPC?

    Remote Procedure Call,远程过程调用。也就是说,调用过程代码并不是在调用者本地运行,而是要实现调用者与被调用者两地之间的连接与通信

    RPC 的基本通信模型是基于 Client/Server 进程间相互通信模型的一种同步通信形式;它对 Client 提供了远程服务的过程抽象,其底层消息传递操作对 Client 是透明的。

    在 RPC 中,Client 是请求服务的调用者(Caller),而 Server 则是被 Client 的请求调用的程序(Callee

  • RPC 实例:

    服务器端:

    1.服务接口:

    import org.apache.hadoop.ipc.VersionedProtocol;
    
    /**
     * @author 曲健磊
     * @date 2018-11-26 16:51:45
     * @description 对外提供的服务
     */
    public interface MyInterface extends VersionedProtocol {
         
    
        /**
         * 服务的版本号
         */
        public static long versionID = 1;
    
        /**
         * 定义客户端可以调用的方法
         * @param name 名称
         * @return
         */
        public String sayHello(String name);
    
    }
    

    PS:要注册到 Hadoop 提供的 RPC 服务端上的服务必须继承 VersionedProtocol。

    2.服务的具体实现:

    import org.apache.hadoop.ipc.ProtocolSignature;
    
    import java.io.IOException;
    
    /**
     * @author 曲健磊
     * @date 2018-11-26 16:55:04
     */
    public class MyInterfaceImpl implements MyInterface {
         
    
        @Override
        public long getProtocolVersion(String s, long l) throws IOException {
         
            // 返回该实现类的版本号
            return MyInterface.versionID;
        }
    
        @Override
        public ProtocolSignature getProtocolSignature(String s, long l, int i) throws IOException {
         
            // 返回RPC协议的签名(版本号)
            return new ProtocolSignature(MyInterface.versionID, null
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值