利用HADOOP中的jar写一个RPC
RPC调用需要服务端和客户端使用相同的协议:
协议:
package cn.itcast.bigdata.hadooprpc.protocol;
public interface IUserLoginService {
public static final long versionID = 100L;
public String login(String name,String passwd);
}
这里协议就是接口
服务端的实现类:
package cn.itcast.bigdata.hadooprpc.service;
import cn.itcast.bigdata.hadooprpc.protocol.IUserLoginService;
public class UserLoginServiceImpl implements IUserLoginService{
@Override
public String login(String name, String passwd) {
return name + "logged in successfully...";
}
}
发布服务:
package cn.itcast.bigdata.hadooprpc.service; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Builder;
import org.apache.hadoop.ipc.RPC.Server; import cn.itcast.bigdata.hadooprpc.protocol.ClientNamenodeProtocol;
import cn.itcast.bigdata.hadooprpc.protocol.IUserLoginService; public class PublishServiceUtil { public static void main(String[] args) throws Exception { Builder builder= new RPC.Builder(new Configuration());
builder.setBindAddress("localhost")
.setPort(9999)
.setProtocol(IUserLoginService.class)
.setInstance(new UserLoginServiceImpl()); Server server= builder.build();
server.start(); } }
客户端调用RPC服务:
package cn.itcast.bigdata.hadooprpc.client; import java.net.InetSocketAddress; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC; import cn.itcast.bigdata.hadooprpc.protocol.IUserLoginService; public class UserLoginAction {
public static void main(String[] args) throws Exception {
IUserLoginService userLoginService = RPC.getProxy(IUserLoginService.class, 100L,
new InetSocketAddress("localhost", 9999), new Configuration());
String login = userLoginService.login("angelababy", "1314520");
System.out.println(login); }
}
使用的hadoop的hadoop-common-2.6.4.jar这个j包,在其他工程也可以使用
利用HADOOP中的jar写一个RPC的更多相关文章
- 手把手教你写一个RPC
1.1 RPC 是什么 定义:RPC(Remote Procedure Call Protocol)--远程过程调用协议 ,RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数 ...
- 手写一个RPC框架
一.前言 前段时间看到一篇不错的文章<看了这篇你就会手写RPC框架了>,于是便来了兴趣对着实现了一遍,后面觉得还有很多优化的地方便对其进行了改进. 主要改动点如下: 除了Java序列化协议 ...
- 利用 Linux tap/tun 虚拟设备写一个 ICMP echo 程序
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面两篇文章已 ...
- 利用windows.h头文件写一个简单的C语言倒计时
今天写一个简单的倒计时函数 代码如下: #include<stdio.h> #include<windows.h> int main() { int i; printf(&qu ...
- 从0 开始手写一个 RPC 框架,轻松搞定!
Java技术栈 www.javastack.cn 优秀的Java技术公众号 来源:juejin.im/post/5c4481a4f265da613438aec3 之前在 RPC框架底层到底什么原理得知 ...
- 在IDEA中使用Spring写一个HelloWorld
准备工作 1.使用IDEA2018专业版, 我试了IDEA2019教育版和IDEA2020社区版,都无法顺利创建一个Spring项目,实在是恼火,一气之下,统统卸载掉. 重装了一个IDEA2018专业 ...
- Qt 利用XML文档,写一个程序集合 四
接上一篇https://www.cnblogs.com/DreamDog/p/9214067.html 启动外部程序 这里简单了,直接上代码吧 connect(button,&MPushBut ...
- Qt 利用XML文档,写一个程序集合 三
接上一篇https://www.cnblogs.com/DreamDog/p/9214052.html 滚动区域实现, 滚动区域可以三成分层 第一层,显示内容 中间层,滚动层 第三层,爸爸层 把我们要 ...
- Qt 利用XML文档,写一个程序集合 二
接上一篇文章https://www.cnblogs.com/DreamDog/p/9213915.html XML文档的读写 一个根节点,下面每一个子节点代表一个子程序,内容为子程序名字,图标路径,e ...
随机推荐
- oepnstack笔记
openstack简介: 组件:Nova 提供计算资源池neutron 网络资源管理horizon 基于openstack API借口使用django开发的web管理 组件:Nova 提供计算资源池n ...
- 【Python】小技巧
1. 退出python shell 在windows下,Ctrl + Z退出 在unix下,Ctrl + D退出
- cassandra框架模型之二——存储机制 CommitLog MemTable SSTable
四.副本存储 Cassandra不像HBase是基于HDFS的分布式存储,它的数据是存在每个节点的本地文件系统中. Cassandra有三种副本配置策略: 1) SimpleStrategy (Rac ...
- Eclipse 3.7 极述优化
1.去除不用的jar Eclipse/plugins目录下去除下面的jar和目录 2012/02/17 03:09 14,169 org.eclipse.cvs_1.1.100.v2012020808 ...
- YYMMDD转YYYY-MM-DD
date.replace(/(\d{4})(\d{2})(\d{2})/g,'$1-$2-$3');
- linux 系统统计目录下文件夹的大小
du -ah --max-depth=1 这个是我想要的结果 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度. du命令用来查看 ...
- Java关闭线程的安全方法
Java之前有一个api方法可以直接关闭线程,stop(),由于这个方法是强制性地关闭线程,有的时候会发生错误,之后就取消了,现在可用的方法主要有两种: 1. 在线程中加入一个成员变量,当一个fla ...
- yarn 管理nextjs 项目
预备环境 nodejs npm 1. yarn 安装 npm install -g yarn 2. nextjs 项目初始化 yarn add next react react-dom 3. 配置n ...
- JAVA设计模式:静态代理
一.概念代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关 ...
- Oracle数据文件和临时文件的管理
一.数据文件概述在Oracle数据库中,SYSTEM和SYSAUX表空间至少需要包含一个数据文件,此外还将包含多个其他表空间及与其相关的数据文件和临时文件.Oracle的数据文件和临时文件是操作系统文 ...