Hadoop3:RPC通信原理及简单案例实现

一、场景介绍

我们知道,Hadoop中存在多种服务,那么,服务之间是如何通信的了?

比如,DN和NN之间如何通信?

这里,实际上是通过RPC实现进程间通信的了。

RPC属于Java网络编程范畴

需要编写客户端和服务端

底层实现是NIO

一般RPC框架的使用,需要配合服务注册中心组件使用。比如zookeeper,nacos等

客户端通过zookeeper,拿到服务端的IP、PORT、method等参数

然后,本地实现远程服务调用,就类似调用本地方法一样简洁。

比较成功的RPC框架有:Dubbo、WebSocket、gRPC、OpenFeign等

二、案例

1、需求

模拟RPC的客户端、服务端、通信协议三者如何工作的

2、代码

接口RPCProtocol

java 复制代码
package com.atguigu.rpc;

public interface RPCProtocol {
	long versionID = 666;
	void mkdirs(String path);
}

服务端NNServer

java 复制代码
package com.atguigu.rpc;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.Server;

import java.io.IOException;

public class NNServer implements RPCProtocol {
	@Override
	public void mkdirs(String path) {
		System.out.println("服务端,创建路径" + path);
	}

	public static void main(String[] args) throws IOException {

		Server server = new RPC.Builder(new Configuration())
				.setBindAddress("localhost")
				.setPort(8888)
				.setProtocol(RPCProtocol.class)
				.setInstance(new NNServer())
				.build();

		System.out.println("服务器开始工作");

		server.start();
	}
}

客户端HDFSClient

java 复制代码
package com.atguigu.rpc;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;

import java.io.IOException;
import java.net.InetSocketAddress;

public class HDFSClient {
	public static void main(String[] args) throws IOException {
		RPCProtocol client = RPC.getProxy(
				RPCProtocol.class,
				RPCProtocol.versionID,
				new InetSocketAddress("localhost", 8888),
				new Configuration());

		System.out.println("我是客户端");

		client.mkdirs("/input");
	}
}

3、测试

启动服务端

查看进程

运行客户端

服务端方法被执行

相关推荐
网络小江1 小时前
上网第四十二课:第六周复盘——协议篇快问快答
网络协议
可乐ea2 小时前
多模型编排的三层:框架、模型路由与提供商路由
前端·网络·人工智能·ai智能体·多智能体协作·多模型编排·大模型路由
万联WANFLOW2 小时前
全球广告网络直通美国,TikTok抢占旺季全域流量新高地
网络·业界资讯
HackTwoHub2 小时前
Clown SRC skill第二代2.x最新版企业安全研究 Skill|证据优先的 SRC 与白盒审计工作流正式更新
网络·安全·web安全·网络安全·系统安全·密码学·安全架构
2601_962177302 小时前
2026年AI API Gateway怎么选?我整理了6种方案的费用、稳定性和适用场景
网络·人工智能·深度学习·gateway
白帽攻防录2 小时前
SRC 挖洞:Certighost AD CS 域控制器伪造深度复盘,CVE-2026-54121 一个普通域用户怎么拿走整个企业域
网络·安全·web安全·网络安全·域安全
青春不朽5122 小时前
requests 超时、重试、SSL 报错?9 个高频问题与一整张排错对照表
网络·网络协议·ssl
酣大智3 小时前
H3C MSR3600(Comware V7)接口限速完整操作步骤
网络·mqc
chenlance3 小时前
PADS灌铜、覆铜过程和技巧小汇总
linux·服务器·网络
曾晓森3 小时前
OpenAI 兼容 API 接入山猫云:先核对分组和价格,再发最小请求
网络·python