热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大数据RPC框架

RPC框架RPC是一个远程过程调用RPC框架主要由客户端、服务端和协议三个组成RPCProtocol接口packagecom.Protocol.util;importorg.apa



RPC框架

RPC是一个远程过程调用

RPC框架主要由客户端、服务端和协议三个组成

RPCProtocol接口

package com.Protocol.util;
import org.apache.hadoop.ipc.VersionedProtocol;
/*
* @author Administrator
* @version 1.0
*/
public interface RPCProtocol extends VersionedProtocol {
//定义RPC协议的ID
public static final long versiOnID= 1L;
//定义接口方法
public String helloWorld(String name);
}

MyNameNode类

package com.Server.util;
import com.Protocol.util.RPCProtocol;
import org.apache.hadoop.ipc.ProtocolSignature;
import java.io.IOException;
/*
* @author Administrator
* @version 1.0
*/
public class MyNameNode implements RPCProtocol {
public String helloWorld(String name) {
return "Hello! " + name;
}
public long getProtocolVersion(String s, long l) throws IOException {
return RPCProtocol.versionID;
}
public ProtocolSignature getProtocolSignature(String s, long l, int i) throws IOException {
return new ProtocolSignature(RPCProtocol.versionID, null);
}
}

MyRPCServer类

package com.Server.util;
import com.Protocol.util.RPCProtocol;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import java.io.IOException;
/*
* @author Administrator
* @version 1.0
*/
public class MyRPCServer {
public static void main(String[] args) throws IOException {
//构建RPC框架
RPC.Builder builder = new RPC.Builder(new Configuration());
//绑定地址
builder.setBindAddress("localhost");
//绑定端口
builder.setPort(8080);
//绑定协议
builder.setProtocol(RPCProtocol.class);
//调用协议的实现类对象
builder.setInstance(new MyNameNode());
//创建服务
RPC.Server server = builder.build();
//启动服务
server.start();
}
}

MyRPCClient类

package com.Client.util;
import com.Protocol.util.RPCProtocol;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import java.io.IOException;
import java.net.InetSocketAddress;
/*
* @author Administrator
* @version 1.0
*/
public class MyRPCClient {
public static void main(String[] args) throws IOException {
//获取RPC协议调用Server
RPCProtocol proxy = RPC.getProxy(RPCProtocol.class, RPCProtocol.versionID, new InetSocketAddress("localhost", 8080), new Configuration());
//发送请求
String message = proxy.helloWorld("Jabin");
//输出信息
System.out.println(message);
}
}


推荐阅读
  • 本文说明了Linux系统的配置文件,在多用户、多任务环境中,配置文件控制用户权限、系统应用程序、守护进程、服务和其它管理任务。这些任务包括管理用户帐号、 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 微服务下的几个难点问题及常见的解决方案
    原文链接:https:cloud.tencent.comdevelopernews1362051背景介绍1.1幂等性定义数学定义在数学里,幂等有 ... [详细]
  • 小白轻松使用axis2构建webservice
    引言:使用axis2是来实现webservice接口是比较常见的,就我来说,如果要学一个首次接触东西,简单了解相关基础概念 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
author-avatar
幽幽独舞99
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有