一种基于RMI和ZooKeeper实现远程调用框架的方法技术

技术编号:14242561 阅读:107 留言:0更新日期:2016-12-21 19:45
本发明专利技术公开了一种基于RMI和ZooKeeper实现远程调用框架的方法,所述方法通过利用ZooKeeper充当一个服务注册表,服务提供者注册上来形成一个集群,发布RMI服务,并将RMI地址注册到ZooKeeper中,以供服务消费者消费服务。本发明专利技术实现原理简单,依赖ZooKeeper和RMI,可以提供集群管理的能力;相较于WebService等传统方法更快,并且使用ZooKeeper增强了RMI的高可用性;ZooKeeper可以提供心跳检测的功能,过滤掉已经“挂掉”的服务提供者信息。

【技术实现步骤摘要】

本专利技术涉及软件SSR 分布式远程调用
,具体涉及一种基于RMI和ZooKeeper实现远程调用框架的方法
技术介绍
在分布式的系统环境中,需要一种跨虚拟机的调用。例如,服务A在JVM 1中运行,服务B在 JVM 2中运行,服务A和 服务B可相互进行远程调用,就像调用本地方法一样,可以轻松的将服务提供者与服务消费者进行分离,充分体现组件之间的弱耦合,系统架构更易于拓展。目前,随着系统的越来越复杂,需要将一个复杂的系统拆分成不同的子系统,并且实现子系统之间的相互通信,这个在分布式的系统之中尤为重要。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper包含一个简单的原语集,提供Java和C的接口。ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\\src\\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说,这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用,由于J2EE是分布式程序平台,它以RMI机制实现程序组件在不同操作系统之间的通信。比如,一个EJB可以通过RMI调用Web上另一台机器上的EJB远程方法。RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。
技术实现思路
本专利技术要解决的技术问题是:本专利技术针对以上问题,提供一种基于RMI和ZooKeeper来实现的一种远程调用框架。相较于WebService等传统方法更快,并且使用ZooKeeper增强了RMI的高可用性。RMI是跨JVM的一种远程调用实现方式,通过jdk提供强调的支持和实现,结合ZooKeeper来增强RMI服务的高可用性。jdk是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。本专利技术所采用的技术方案为:一种基于RMI和ZooKeeper实现远程调用框架的方法,所述方法通过利用ZooKeeper充当一个服务注册表(Service Register),服务提供者(Service Provider)注册上来形成一个集群,发布RMI服务,并将RMI地址注册到ZooKeeper中,以供服务消费者(Service Consumer)消费服务。所述ZooKeeper提供两个功能:1)服务注册,相当于一个注册表,保存服务提供者注册上的基本信息;2)心跳检测,定时向服务注册者发送一个请求,如果服务注册者长期没有请求,ZooKeeper认为服务提供者已经“挂掉”了,只会从“活着”的服务提供者中选出一个座位当前的服务提供者。所述方法实现步骤如下:第一步:设置ZooKeeper端口信息,启动ZooKeeper,利用ZooKeeper充当一个服务注册表(Service Register),服务提供者(Service Provider)注册上来形成一个集群;第二步:编写服务提供者,并且发布成RMI服务,将RMI地址注册到ZooKeeper中;第三步:服务消费者(Service Consumer)消费服务,消费者要在创建的时候连接ZooKeeper,获取RMI服务地址的信息,用来调用远程的RMI服务。所述服务提供者在提供服务时继承 java.rmi.Remote接口,每个RMI接口的方法必须声明抛出java.rmi.RemoteException异常,这是jdk 对RMI的规范,必须遵守。本专利技术的有益效果为:本专利技术实现原理简单,依赖ZooKeeper和RMI,可以提供集群管理的能力;相较于WebService等传统方法更快,并且使用ZooKeeper增强了RMI的高可用性;ZooKeeper可以提供心跳检测的功能,过滤掉已经“挂掉”的服务提供者信息。附图说明图1为一种基于RMI和ZooKeeper实现远程调用框架的方法示意图。具体实施方式下面结合附图,根据具体实施方式对本专利技术进一步说明:实施例1:一种基于RMI和ZooKeeper实现远程调用框架的方法,所述方法通过利用ZooKeeper充当一个服务注册表(Service Register),服务提供者(Service Provider)注册上来形成一个集群,发布RMI服务,并将RMI地址注册到ZooKeeper中,以供服务消费者(Service Consumer)消费服务。实施例2在实施例1的基础上,本实施例所述ZooKeeper提供两个功能:1)服务注册,相当于一个注册表,保存服务提供者注册上的基本信息;2)心跳检测,定时向服务注册者发送一个请求,如果服务注册者长期没有请求,ZooKeeper认为服务提供者已经“挂掉”了,只会从“活着”的服务提供者中选出一个座位当前的服务提供者。实施例3在实施例1或2的基础上,本实施例所述方法实现步骤如下:第一步:设置ZooKeeper端口信息,启动ZooKeeper,利用ZooKeeper充当一个服务注册表(Service Register),服务提供者(Service Provider)注册上来形成一个集群;第二步:编写服务提供者,并且发布成RMI服务,将RMI地址注册到ZooKeeper中;第三步:服务消费者(Service Consumer)消费服务,消费者要在创建的时候连接ZooKeeper,获取RMI服务地址的信息,用来调用远程的RMI服务。实施例4在实施例3的基础上,本实施例所述服务提供者在提供服务时继承ava.rmi.Remote接口,每个RMI接口的方法必须声明抛出java.rmi.RemoteException异常,这是jdk 对RMI的规范,必须遵守。实施方式仅用于说明本专利技术,而并非对本专利技术的限制,有关
的普通技术人员,在不脱离本专利技术的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本专利技术的范畴,本专利技术的专利保护范围应由权利要求限定。本文档来自技高网
...
一种基于RMI和ZooKeeper实现远程调用框架的方法

【技术保护点】
一种基于RMI和ZooKeeper实现远程调用框架的方法,其特征在于,所述方法通过利用ZooKeeper充当一个服务注册表,服务提供者注册上来形成一个集群,发布RMI服务,并将RMI地址注册到ZooKeeper中,以供服务消费者消费服务。

【技术特征摘要】
1.一种基于RMI和ZooKeeper实现远程调用框架的方法,其特征在于,所述方法通过利用ZooKeeper充当一个服务注册表,服务提供者注册上来形成一个集群,发布RMI服务,并将RMI地址注册到ZooKeeper中,以供服务消费者消费服务。2.根据权利要求1所述的一种基于RMI和ZooKeeper实现远程调用框架的方法,其特征在于,所述ZooKeeper提供两个功能:1)服务注册,相当于一个注册表,保存服务提供者注册上的基本信息;2)心跳检测,定时向服务注册者发送一个请求,如果服务注册者长期没有请求,ZooKeeper认为服务提供者已经“挂掉”了,只会从“活着”的服务提供者中选出一个座位当前的服务提供者。3.根据权利要求1或2所述的一种基于RMI和Zoo...

【专利技术属性】
技术研发人员:刘增辉
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1