hadoop 远程调度总结

简介

通过前几篇博客,深入了解了hadoop rpc调度的一些流程,但是那些都太细节了,没有一个整体的架构情况。知识比较零散,需要一次系统整理和总结。下边是我自己整理的情况,肯定有很多不足之处,希望有人一起学习,一个人读源码还是很痛苦的,有人一起学习才好玩。

rpc client 总结

rpc获取代理对象流程

RPC获取代理对象

  1. rpc.getProxy() 程序入口,开始获取代理对象,需要传入代理对象接口,接口版本ID,远程服务地址和端口,以及配置

  2. 获取一个服务代理的封装,这个对象封装了

    • protocol 代理对象接口
    • proxy 动态代理获取的对象
    • supportServerMethodCheck 是否检查服务端是否支持调用的方法

    getProxy()返回了这个对象封装的代理对象。

  3. 获取rpc引擎。这个接口有两个实现类

    • WritableRpcEngine 处理用hadoop writable 序列化的rpc请求
    • ProtobufRpcEngine 处理用Protobuf序列化的rpc请求

这里我们只分析了WritableRpcEngine对象,这个类主要成员变量: - CLIENTS - client缓存

主要方法: - getProxy() 通过动态代理获取代理对象并且封装成ProtocolProxy对象 - getServer() 获取服务对象 - getClient() 获取client对象

这里主要通过getProxy()方法获取ProtocolProxy对象。但是在通过动态代理获取proxy时 这里偷偷new了一个Invoker对象,这是个前边忽略了的对象,这个对象主要用在当客户调用方法是,被调用的方法会通过整理,调用到Invoker.invoke()方法。下边我们详细分析一下这个对象。 4. Invoker对象
主要成员变量 - private Client.ConnectionId remoteId - private Client client; - private boolean isClosed = false; - private final AtomicBoolean fallbackToSimpleAuth;

主要方法 - invoke方法
通过client调用call方法发送rpc请求

server端服务过程

1. listener    接受rpc请求
2. handle    处理请求
3. responder    返回请求结果

这个三个类都实现了runnable接口,以线程的方式运行,handler可能有多个线程同时处理请求。

转载于:https://my.oschina.net/zwf007/blog/894580

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值