分布式系统详解--框架(Hadoop--RPC协议)

简介: 分布式系统详解--框架(Hadoop--RPC协议)

 分布式系统详解--框架(Hadoop--RPC协议)

      在之前的一篇文章当中已经写过一篇文章是关于RPC通信协议的文章,是    分布式系统详解--基础知识(通信)是讲的关于网络通信的最基本的知识。这篇文章也简单讲一下关于hadoop内部的网络通信。

一、hadoop的RPC模式

C/S模式

基于传输层模式。(TCP/IP)

事件处理模型。(请求、计算、协议)

二、RPC设计目的

调用非本机方法。

不同语言程序之间通讯。

不了解底层通讯,向本地方法一样调用。

三、RPC作用

分布式程序基础(分布式操作系统、分布式计算、分布式软件设计)

垂直应用服务化拆分。

四、RPC特点

封装网络交互

远程调用对象代理

支持容器(Spring、Jetty)

可配置,可扩展

五、hadoop 主要协议

NameNode主要实现了ClientProtocol、DataNodeProtocol、NameNodeProtocol。

Hadoop2.0中存在两个ipc包,分别在hadoop-common和hadoop-yarncommom项目下。分别是hadoop RPC和新的yarn RPC。

六、JAVA代码实现简单hadoop-RPC简单实现测试

6.1 协议接口

/**
 * 
 */
package com.yuyi.rpc;
 
/**
 * @author mcb 
 *
 * 2018年10月15日 上午11:08:02 
 *  RPC中的协议
 */
public interface SayHello {
  
  public static final long versionID=1;
  //协议
  public String sayHello(String words);
 
}

6.2 服务端接口

/**
 * 
 */
package com.yuyi.rpc;
 
import java.io.IOException;
 
import org.apache.hadoop.HadoopIllegalArgumentException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Server;
 
/**
 * @author mcb 
 *
 * 2018年10月15日 上午11:10:50 
 *  RPC中的服务端 实现协议
 * 
 */
public class RPCServer implements SayHello{
 
  
  public String sayHello(String words) {
    // TODO 自动生成的方法存根
    System.out.println("客户端说的话是: "+words);
    
    return "OK~我知道你没有挂掉了~~~";
  }
  
  public static void main(String[] args) {
    
    try {
      Server server = new RPC.Builder(new Configuration())
      .setInstance(new RPCServer())
      .setProtocol(SayHello.class)
      .setBindAddress("127.0.0.1")
      .setPort(6666)
      .build();
      
      server.start();
      System.out.println("server is started... ");
      
    } catch (HadoopIllegalArgumentException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    } catch (IOException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    }
    
  }
  
  
  
}

6.3 客户端接口

/**
 * 
 */
package com.yuyi.rpc;
 
import java.io.IOException;
import java.net.InetSocketAddress;
 
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
 
/**
 * @author mcb 
 *
 * 2018年10月15日 上午11:20:11 
 */
 
public class RPCClient {
  private static String sayHello;
 
  public static void main(String[] args) {
    //第一个参数:协议 第二份参数:版本(long整数),第三个参数:地址,第四个参数:configuration。
    try {
      while (true) {
      SayHello sayH = RPC.getProxy(SayHello.class, 1, new InetSocketAddress("127.0.0.1",6666), new Configuration());
      sayHello = sayH.sayHello("我现在活着,心跳正在进行~~~");
      System.out.println(sayHello);
      Thread.sleep(2000);
      }
      
    } catch (IOException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    } catch (InterruptedException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    }
    
  }
  
}

启动后结果:

目录
相关文章
|
17天前
|
存储 监控 数据可视化
常见的分布式定时任务调度框架
分布式定时任务调度框架用于在分布式系统中管理和调度定时任务,确保任务按预定时间和频率执行。其核心概念包括Job(任务)、Trigger(触发器)、Executor(执行器)和Scheduler(调度器)。这类框架应具备任务管理、任务监控、良好的可扩展性和高可用性等功能。常用的Java生态中的分布式任务调度框架有Quartz Scheduler、ElasticJob和XXL-JOB。
256 66
|
11天前
|
数据采集 人工智能 分布式计算
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
阿里云推出的MaxFrame是链接大数据与AI的分布式Python计算框架,提供类似Pandas的操作接口和分布式处理能力。本文从部署、功能验证到实际场景全面评测MaxFrame,涵盖分布式Pandas操作、大语言模型数据预处理及企业级应用。结果显示,MaxFrame在处理大规模数据时性能显著提升,代码兼容性强,适合从数据清洗到训练数据生成的全链路场景...
38 5
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
|
25天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
62 2
|
2月前
|
存储 Java 关系型数据库
在Spring Boot中整合Seata框架实现分布式事务
可以在 Spring Boot 中成功整合 Seata 框架,实现分布式事务的管理和处理。在实际应用中,还需要根据具体的业务需求和技术架构进行进一步的优化和调整。同时,要注意处理各种可能出现的问题,以保障分布式事务的顺利执行。
114 6
|
2月前
|
消息中间件 运维 数据库
Seata框架和其他分布式事务框架有什么区别
Seata框架和其他分布式事务框架有什么区别
39 1
|
8月前
|
负载均衡 Dubbo Java
Dubbo 3.x:探索阿里巴巴的开源RPC框架新技术
随着微服务架构的兴起,远程过程调用(RPC)框架成为了关键组件。Dubbo,作为阿里巴巴的开源RPC框架,已经演进到了3.x版本,带来了许多新特性和技术改进。本文将探讨Dubbo 3.x中的一些最新技术,包括服务注册与发现、负载均衡、服务治理等,并通过代码示例展示其使用方式。
435 9
|
8月前
|
设计模式 负载均衡 网络协议
【分布式技术专题】「分布式技术架构」实践见真知,手把手教你如何实现一个属于自己的RPC框架(架构技术引导篇)
【分布式技术专题】「分布式技术架构」实践见真知,手把手教你如何实现一个属于自己的RPC框架(架构技术引导篇)
332 0
|
2月前
|
自然语言处理 负载均衡 API
gRPC 一种现代、开源、高性能的远程过程调用 (RPC) 可以在任何地方运行的框架
gRPC 是一种现代开源高性能远程过程调用(RPC)框架,支持多种编程语言,可在任何环境中运行。它通过高效的连接方式,支持负载平衡、跟踪、健康检查和身份验证,适用于微服务架构、移动设备和浏览器客户端连接后端服务等场景。gRPC 使用 Protocol Buffers 作为接口定义语言,支持四种服务方法:一元 RPC、服务器流式处理、客户端流式处理和双向流式处理。
|
5月前
|
Dubbo 网络协议 Java
RPC框架:一文带你搞懂RPC
这篇文章全面介绍了RPC(远程过程调用)的概念、原理和应用场景,解释了RPC如何工作以及为什么在分布式系统中广泛使用,并探讨了几种常用的RPC框架如Thrift、gRPC、Dubbo和Spring Cloud,同时详细阐述了RPC调用流程和实现透明化远程服务调用的关键技术,包括动态代理和消息的编码解码过程。
RPC框架:一文带你搞懂RPC
|
4月前
|
XML 负载均衡 监控
分布式-dubbo-简易版的RPC框架
分布式-dubbo-简易版的RPC框架