【HDFS】Hadoop-RPC:客户端侧通过Client.Connection#sendRpcRequest方法发送RPC序列化数据

176 篇文章 151 订阅 ¥29.90 ¥99.00
本文详细解析了Hadoop中客户端通过Client.Connection#sendRpcRequest方法发送RPC请求的过程。方法中,参数Call被序列化并由sendParamsExecutor线程池提交到服务端,然后使用get方法进行阻塞等待。目前架构存在一个问题,即发送请求是同步串行的,可能导致性能瓶颈。为了解决这个问题,需要实现不同NameNode对应的Client和sendParamsExecutor的隔离。
摘要由CSDN通过智能技术生成

org.apache.hadoop.ipc.Client.Connection#sendRpcRequest
这个方法是客户端侧向服务端发送RPC请求的地方。调用点是Client#call方法过来的。

此方法代码注释里描述了一个细节:这个向服务端发送RPC请求数据的过程并不是由Connection线程发送的,而是其他的线程(sendParamsExecutor这个线程池)。

sendRpcRequest方法的逻辑如下:
1、把参数Call序列化到一个buffer里。这个过程是caller线程做的;
2、提交发送序列化数据buffer到服务端的任务
3、调用get方法阻塞式等待发送RPC请求完成。

    /** Initiates a rpc call by sending the rpc request to the remote server.
     * Note: this is not called from the Connection thread, but by other
     * threads.
     * @param call - the rpc request
     */
    public void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叹了口丶气

觉得有收获就支持一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值