交流
商城
MCN
登入
注册
首页
提问
分享
讨论
建议
公告
动态
发表新帖
发表新帖
第4 章 hadoop-RPC
分享
未结
0
763
李延
LV6
2022-03-06
悬赏:20积分
# 1 背景 在hadoop中存在各自网络交互,而这些网络交互都被封装为一个个的RPC接口。 本次主要说明的是hadoop-common下的ipc.RPC类 # 2 测试用例 本章主要通过RPC类实现一个远程调用的过程 ## 2.1 业务接口与实现 接口 ```java public interface RPCProtocolTest { long versionID = 6000; int work(String name,int id); } ``` 在接口中我们看到定义了versionID这个字段,这个是必须的,用于区分具体是哪个RPC服务 实现 ```java public class RPCProtocolTestImpl implements RPCProtocolTest { @Override public int work(String name, int id) { System.out.println("调用服务:" + name + ",id:" + id); return id; } } ``` ## 2.2 服务端主函数 ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.ipc.RPC; import java.io.IOException; public class RPCServiceTest { public static void main(String[] args) throws IOException { final RPC.Server localhost = new RPC.Builder(new Configuration()) .setBindAddress("localhost") .setPort(8080) .setProtocol(RPCProtocolTest.class) .setInstance(new RPCProtocolTestImpl()) .build(); localhost.start(); } } ``` ## 2.3 客户端调用 ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.ipc.RPC; import java.io.IOException; import java.net.InetSocketAddress; public class RPCClientTest { public static void main(String[] args) throws IOException { final RPCProtocolTest localhost = RPC.getProxy(RPCProtocolTest.class, RPCProtocolTest.versionID, new InetSocketAddress("localhost", 8080), new Configuration()); final int liyan = localhost.work("liyan", 123); System.out.println(liyan); } } ``` 这样我们接可以通过8080端口直接调用到RPCProtocolTestImpl类了。
回帖
消灭零回复
提交回复
热议榜
java 相关知识分享
8
好的程序员与不好的程序员
6
写给工程师的十条精进原则
5
spring boot以jar包运行配置的logback日志文件没生成
5
一步一步分析SpringBoot启动源码(一)
5
MockMvc测试
5
【吐槽向】是不是有个吐槽的板块比较好玩
4
logstash jdbc同步mysql多表数据到elasticsearch
3
IntelliJ IDEA 优质License Server
3
.gitignore忽略规则
3
SpringBoot启动源码分析
3
一步一步分析SpringBoot启动源码(三)
3
2
一步一步分析SpringBoot启动源码(二)
2
积分不够将无法发表新帖
2
官方产品
Meta-Boot - 基于MCN
MCN - 快速构建SpringBoot应用
微信扫码关注公众号