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、测试

启动服务端

查看进程

运行客户端

服务端方法被执行

相关推荐
abcyuu9 小时前
福州中小企业业财一体化系统权限管理与数据安全实践方案
大数据·网络·数据库
ITxiaobing202310 小时前
技术选型参考:从IPinfo出发,聊聊IP情报服务的替代方案与选型逻辑
网络·网络协议·tcp/ip
z_mazin10 小时前
逆向一种私有二进制序列化格式:从零到字节级解析器
网络·python·网络协议·算法·rpc
luj_176810 小时前
罚球线右移破防新策略
c语言·开发语言·网络·经验分享·算法
Jeremy_WW10 小时前
QSFP/QSFP-DD/OSFP 通用管理接口规范(CMIS)解读:11 Page 13h IV
网络·网络协议·信息与通信·光模块·cmis
xixiaoyunya10 小时前
备份与还原:为什么还原能力才是评估备份方案的核心指标
网络
网硕互联的小客服10 小时前
原生IP,住宅IP,ISPIP,机房IP分别都有什么区别?适合用于什么站点或者程序?
服务器·网络·tcp/ip
LabVIEW开发10 小时前
深海高压舱里的“顺风耳“:LabVIEW 实时水声采集
网络·labview·labview知识·labview功能·labview程序
小杨不想秃头11 小时前
信息安全工程师第六章
网络·安全·web安全
万联WANFLOW11 小时前
技术演进与安全博弈中的 OpenAI GPT-6 Astra
网络·人工智能·gpt·安全·业界资讯