zoukankan      html  css  js  c++  java
  • 利用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包,在其他工程也可以使用

  • 相关阅读:
    第04组 Beta冲刺 (2/5)
    第04组 Beta冲刺 (1/6)
    第04组 Alpha冲刺 总结
    二叉树的递归与非递归
    各类典例模板
    选择题合辑2
    运算符重载
    链表题目
    集合的模拟实现(类模板)
    2018Final静态成员(黑名单)
  • 原文地址:https://www.cnblogs.com/duan2/p/7500406.html
Copyright © 2011-2022 走看看