利用Hadoop提供的RPC API实现简单的RPC程序
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,[toc]利用Hadoop提供的RPC API实现简单的RPC程序在Hadoop中提供了RPC服务的使用API,通过其API地使用,可以非常简单地构建远程过程调用程序,下面就给出一个简单的实例。项目结
千家信息网最后更新 2025年02月23日利用Hadoop提供的RPC API实现简单的RPC程序
[toc]
利用Hadoop提供的RPC API实现简单的RPC程序
在Hadoop中提供了RPC服务的使用API,通过其API地使用,可以非常简单地构建远程过程调用程序,下面就给出一个简单的实例。
项目结构
为了方便操作,所有的代码都放在本地一个项目中,实际上,完全可以将代码放在不同的服务器上,这是RPC的概念,这里就不做过多的介绍。
项目结构如下:
rpc/├── HelloServiceImpl.java├── IHelloService.java├── RPCClientDriver.java└── RPCServerDriver.java
程序代码
这里只是做一个简单的示例,并且代码中也给出了非常详细的注释,所以直接给出程序代码。
IHelloService.java
package com.uplooking.bigdata.rpc;import org.apache.hadoop.ipc.VersionedProtocol;/** * 接口 * 要想使用hadoop提供的RPC服务,必须要继承VersionedProtocol */public interface IHelloService extends VersionedProtocol { public long versionID = 1L; public String sayHi(String name); public String hearBeat(String beat);}
HelloServiceImpl.java
package com.uplooking.bigdata.rpc;import org.apache.hadoop.ipc.ProtocolSignature;import java.io.IOException;/** * HelloService服务实现类 */public class HelloServiceImpl implements IHelloService { public String sayHi(String name) { System.out.println("name..." + name); return "Hi, " + name; } public String hearBeat(String beat) { System.out.println("----heartbeat----" + beat); return System.currentTimeMillis() + "--->" + beat; } public long getProtocolVersion(String protocol, long clientVersion) throws IOException { return versionID; } public ProtocolSignature getProtocolSignature(String protocol, long clientVersion, int clientMethodsHash) throws IOException { return new ProtocolSignature(); }}
RPCServerDriver.java
package com.uplooking.bigdata.rpc;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;import java.io.IOException;/** * RPC服务端程序,启动并发布服务 */public class RPCServerDriver { public static void main(String[] args) throws IOException { // 创建RPC的配置 Configuration configuration = new Configuration(); // 构建RPC的builder对象 RPC.Builder builder = new RPC.Builder(configuration); // 设置RPC Server的信息,返回一个server对象 RPC.Server server = builder.setBindAddress("localhost") .setPort(4893) .setProtocol(IHelloService.class) .setInstance(new HelloServiceImpl()) .build(); // 启动RPC Server // 这是一个守护进程,所以main函数不会退出 server.start(); System.out.println("---服务启动了---"); }}
RPCClientDriver.java
package com.uplooking.bigdata.rpc;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;import java.io.IOException;import java.net.InetAddress;import java.net.InetSocketAddress;/** * RPC客户端程序 */public class RPCClientDriver { public static void main(String[] args) throws IOException { // 构建InetSocketAddress对象 InetSocketAddress address = new InetSocketAddress(InetAddress.getByName("localhost"), 4893); // 通过RPC.getProxy方法获得代理对象 /** * @param protocol 接口的类型对象 * @param clientVersion 版本号 * @param addr 服务端地址 * @param conf 配置信息 */ IHelloService helloServiceProxy = RPC.getProxy(IHelloService.class, IHelloService.versionID, address, new Configuration()); String result = helloServiceProxy.sayHi("小秋田"); System.out.println(result); }}
测试
启动RPCServerDriver,输出如下:
---服务启动了---
启动RPCClicentDriver,输出如下:
Hi, 小秋田
此时再查看服务端的输出:
---服务启动了---name...小秋田
这样的话,通过使用Hadoop提供的RPC API,就实现了一个简单的RPC程序。
服务
程序
代码
对象
项目
秋田
输出
信息
接口
结构
这是
配置
不同
这样的话
函数
只是
地址
实例
实际
实际上
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
水稻 数据库
万方文献数据库官网
关于网络安全
软件开发拟定招标参数
服务器的管理与日常维护
有品服务器
服务器都用哪些芯片
信息网络安全的第一个时期
泰拉瑞亚手机版搭建服务器
鲁证期货服务器关闭
软件开发培训后安排工作
远程服务器断开连接
叙述网络安全发展情况
作文 班会 网络安全
zuche数据库的设计
做小程序软件开发多少钱
松江区银联数据库价格查询
如何执行2008数据库
数据库索引 树
服务器虚拟化需要检查什么
江都app软件开发公司
数据库的三层安全验证是什么
安徽青叶网络技术
世界网络技术行业
1500w12v服务器电源
远程服务器断开连接
叙述网络安全发展情况
腾讯广告一级服务器利润高吗
基建需要网络安全观吗
怎么在数据库表中加内容