Hadoop RPC学习笔记
首先RpcEngine。这个接口中了Server端的getServer和Call方法。Client端的getProxy和stopProxy的方法。
从Server端看起。
RPC.Server getServer(Class<?> protocol, Object instance, String bindAddress,
int port, int numHandlers, int numReaders,
int queueSizePerHandler, boolean verbose,
Configuration conf,
SecretManager<? extends TokenIdentifier> secretManager
) throws IOException;
这个接口这个参数的函数可以从一个调用的例子来看
this.serviceRpcServer = RPC.getServer(NamenodeProtocols.class, this,
dnSocketAddr.getHostName(), dnSocketAddr.getPort(), serviceHandlerCount,
false, conf, namesystem.getDelegationTokenSecretManager());
this.serviceRPCAddress = this.serviceRpcServer.getListenerAddress();
nn.setRpcServiceServerAddress(conf, serviceRPCAddress);
这是Namenode初始化时的创建RPC Server实例的调用。实际调用的实现,是每个Protocol对应的RpcEngine的实例的实现。RpcEngine的实例怎么来的呢?是根据配置的类名(如rpc.engine.NamenodeProtocols)反射得到的。默认RpcEngine